Input and Output

You have already seen how to specify a source file location and a destination file location.

#input "../Garogier.ttf"
#output "Garogier_instructed.ttf"

Rasteriser instructions

Microsoft has defined a gasp table that enables fonts to specify at what point sizes anti-aliasing should be used and when grid-fitting should be used (i.e. when the instructions should be executed). This is specified as ranges of sizes.

#gasp A 8 I 20 AI 2048 A

Here, the Microsoft recommendation is implemented. Up to ppem=8, the glyphs will be anti-aliased (A) but the instructions are not executed; from 9 up to 20 no aliasing will be used, but the instructions will be (I); from 21 up to 2048 both are on (AI); above 2048 only aliasing will be used. N may be used for no anti-aliasing and no instruction execution. Note that the gasp table appears to be patented, so that free renderes may not use the information in it (for example, the FreeType rendering engine doesn't). However, not all is lost: instruction execution may be switched on in the prep() function depending on point size programmatically. It may be sensible to specify that instructions and anti-aliasing should always be done:

#gasp AI

If no #gasp option is found, the original table, if any, will remain in the font.

Memory requirements

The memory requirements for the instructions may be specified using options. Once again, if you specify nothing, the original settings will be used.

#twilight 1
#stack 100

The #twilight option specifies how many twilight points are used in the instructions. This may be 0 (zero). The #stack option specifies the stack size. This depends on the length of functions, number of parameters, number of function calls etcetera. You do not know this on beforehand; it is safest to set it to a sufficiently large number (say, 300) and change it later, using any "stack overflow" error messages from the virtual machine (e.g., TrueTypeViewer or the Microsoft Font Validator) as an indication you've gone too low.