Computers & Writing Systems
You are here: Rendering > Resources
SIL Reprise download, installation and use
Before trying out Reprise ...
Please be sure to review the requirements and limitations documented on the Reprise home page.
The Reprise program carries no warranties of any kind. Use at your own risk.
If you find or fix bugs then the author would appreciate hearing from you. See support for contact information.
Download and installation
You will not only need to download and install Reprise, but you may have to update your TECkit compiler.
Standalone Windows Executable
If you want to use the standalone Windows executable, simply download it and put it in a folder on your PATH somewhere.
The downloadable Reprise EXE file is not an installer or setup program — it is the actual Reprise program. Simply put the EXE in a directory (such as Windows) that is named on your PATH variable. To find out what directories are named on your path, start a command window and type PATH Return . The directories will be delimited by semicolons.
Installing the Perl source
It is our intention to release the source for those who want to use their own Perl installation rather than the Windows EXE, but we haven't done that yet. If this is important to you please contact me.
If you don't have a make program, you might see if Microsoft still offers their older NMAKE15.EXE.
If you intend to use Reprise with TECkit-syntax mapping files, you will need a 2005 or later version of the TECkit package. Install the package in such a way that both the compiler and sfconv program are somewhere on your PATH.
The following steps are involved in using Reprise
Reprise command-line syntax
Please note that Reprise is a command line utility. To use it you need to open up a Command window and change directories to your project directory. You can set up shortcuts to the program if you like, but there is no pretty graphical user interface.
Reprise [-b blocks] [-c codepages] [-g gdlfile ] [-s num] [-t tagsfile] [-o] [-n fontname] [-v voltfile] mappingfile legacyfont.ttf newfont.ttf
Reprise reads the mapping file (UTR22 or TECkit) and a legacy-encoded TrueType font and
Note that the mapping file must be the original source and not compiled.
-b sets Unicode block information in font's OS/2 table. blocks is 32 hex chars. Reprise tries to guess the correct block information but you can use this option to override it.
-c sets codepage information in font's OS/2 table. codepages 16 hex chars. By default Reprise assumes the font is an Encore-based font and probably supports codepage 1252.
For help in calculating the values for -b and -c parameters, see OS/2 table Range bit calculation workbook.
-g If you want Reprise to build Graphite source, specify the name of GDL source file to create using this option.
-n Normally Reprise renames the font by appending the word "Reprise". You can override this behavior by specifying this option. If fontname does not include %F then fontname becomes the font's family name. Otherwise the font's original family name is inserted where the %F is and the result is the new family name. (NB: When using %F from within batch files, be sure to double the % to prevent it being interpreted by command processor)
-o The Graphite compiler (version 1.9 and earlier, at least) uses incorrect "built-in" names for certain glyphs. If you intend to compile your font with this compiler then use this option so old Adobe glyph names are used in the GDL source.
-s Mapping descriptions sometimes have complex contexts including unlimited repetition of terms. In regular expression parlance unlimited repetition is indicated by a * or +. When building OpenType and Graphite smarts, however, an upper bound on such repetition must be set. Reprise defaults to 5, but you can override this default using this option. Larger values create larger fonts, so use the smallest value possible for your data.
-t name of VOLT tags file (default "C:Program FilesMicrosoft VOLTTAGS.txt")
-v The output font built by Reprise always has VOLT source in it ready to be compiled by VOLT. This option requests Reprise to also save that source in an external file.
Reprise error and warning messages
Here are some of the messages you may get from Reprise.
Mapping does not specify whether it wants NFC or NFD. Therefore the Reprised font may not work as well as it could.
Your mapping really should be designed so that the Unicode-to-legacy rules consistently expect exclusively NFC or NFD text. Mappings that have a mix of composed and decomposed rules are asking for trouble. Assuming the mapping is designed to exclusively use NFC (or NFD), then it should announce that in the header lines. This information is used by Reprise to help the resultant font render text more reliably. For more information on NFC and NFD, see To compose or decompose, that is the question.
Unequal cardinality in TECkit rule at line ...
A TECkit rule uses classes on both sides, but the classes don't have the same number of elements. This is an error in the TECkit mapping that needs to be fixed.
Ambiguous Unicode > Byte TECkit rule at line ...
A TECkit rule maps a single Unicode string to a multi-element class of legacy characters. This is an error in the TECkit mapping that needs to be fixed.
Conflicting mapping rules for unicode sequence / context ...
More than one mapping rule maps from the exact same Unicode sequence, in the same context, to legacy characters, but they map to different legacy characters. This is an error in the TECkit mapping that needs to be fixed.
Legacy char codes referenced in mapping but not present in font (hex)
This warning enumerates legacy character codes that are referenced in the mapping file but which do not exist in the legacy font. (As of ver 0.7, Reprise no longer issue this error for control characters 00 .. 1F which are normally missing from fonts anyway.)
Most likely this message indicates an error in your mapping table.
Unicode chars referenced in mapping but not present in font
Similar to above, but this warning enumerates Unicode characters that are referenced in the mapping file but for which the corresponding legacy code does not exist in the font. The most likely cause is the mapping file does not have non-contextual rules that map the given Unicode characters to legacy codes. This is an error in the TECkit mapping that should be fixed.
If your font doesn't work, here are some things to check out.
Did you compile your font after running Reprise?
The output of Reprise is not a finished font — you must compile and save your font in VOLT if you want Uniscribe or OpenType support in your font, and with GrCompiler if you want Graphite support.
If the VOLT or Graphite compile fails
Please try first to figure out why it failed. If it is a postscript() failure in GDL, try the -o option on Reprise.
If the resultant font doesn't render properly
Make sure you have gone through all the appropriate compile steps. Also remember that Uniscribe ignores OpenType logic for PUA characters.
If the rendering problems are not related to PUA OpenType, then you should do an important test before contacting me. Please pass your Unicode test back through TECkit to generate legacy data and render that with your original legacy font. If that also renders incorrectly then there is a problem with your mapping description which needs to be fixed before we can expect Reprise to work correctly.
Another thing to check is the header flags defined in your mapping file. If your Unicode to legacy mapping rules assume one of Unicode's normal forms (i.e., NFD or NFC) then your mapping file should specify the appropriate normalization values (for TECkit either ExpectsNFD or ExpectsNFC; for UTR22 either NFD or NFC) in the header flags. For more information on NFC and NFD, see To compose or decompose, that is the question.
If you are seeing font substitution/fallback (glyphs from a different font are being used), boxes or missing glyphs, it may be that Reprise has made poor choices for the Unicode and Codepage Range bits of the OS/2 table. Try explicitly setting these with the -b and -c options. For help in calculating the values for these parameters see OS/2 table Range bit calculation workbook.
I am interested in hearing from you and will try to resolve problems that are reported to me. However, before contacting me please try the troubleshooting tips above.
If needed, you can send feedback to me via a webform here. Alternatively, my email address looks like Вob_Нallissy@ѕіl.org (but cutting & pasting from this window into your emailer won't result in a working address — you will need to type it into your email program.)
© 2003-2023 SIL International, all rights reserved, unless otherwise noted elsewhere on this page.