\chapter{Function and variable reference}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ATan2}

\texttt{ATan2(}\textit{y}, \textit{x}\texttt{)}

Returns the arctangent of $y/x$ in radians, using the signs of the arguments
to choose the quadrant.  \emph{Note the order of the arguments, with $y$
first.}  This function mimics the behaviour of the C math library
\texttt{atan2()} function.  This function may be used without a
loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddAccent}

\texttt{AddAccent(}\textit{accent}, [\textit{pos-flags}]\texttt{)}

Perform one step in the process of building a composite glyph from a base
and an accent.  This involves three glyph slots:
\begin{itemize}
  \item The base glyph, which might be a letter, like e.  This must exist
    somewhere in the font.
  \item The glyph slot that will contain the composite, which might be an
    accented-letter glyph like \"{e}.  When \texttt{AddAccent()} is called,
    this slot must be selected and must be the only thing selected.  It must
    already contain a reference to the base glyph, and that must be the
    first reference.
  \item The glyph slot containing the accent itself.  This must be specified
    as the first argument to \texttt{AddAccent()}, either as a string which
    names the accent glyph slot or as a Unicode code point.
\end{itemize}

FontAnvil will attempt to place the accent in the composite glyph slot, in
an appropriate position relative to the base.  Without the second argument,
it will choose that position depending on the Unicode value of the accent. 
The second argument if specified may be one of the
following integer flags.  In principle, it could be a bitwise OR of more than
one of them, but that makes very little sense.

\begin{tabular}{r|l}
  flag & position \\ \hline
  0x100 & Above \\
  0x200 & Below \\
  0x400 & Overstrike \\
  0x800 & Left \\
  0x1000 & Right \\
  0x4000 & Center Left \\
  0x8000 & Center Right \\
  0x10000 & Centered Outside \\ 
  0x20000 & Outside \\
  0x40000 & Left Edge \\
  0x80000 & Right Edge \\
  0x100000  & Touching
\end{tabular}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddAnchorClass}

\texttt{AddAnchorClass(}\textit{name}, \textit{type},
  \textit{subtable}\texttt{)}

Add an anchor class (for use with OpenType GPOS features) to the current
font.  All three arguments are required, and are strings.  The first is the
name of the class; the second is one of \texttt{"default"},
\texttt{"mk-mk"}, or \texttt{"cursive"}, indicating the general kind of
attachment (mark to base, mark to mark, or cursive, respectively); and the
third is the name of the lookup subtable in which the class will be used.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddAnchorPoint}

\texttt{AddAnchorPoint(}\textit{name}, \textit{type}, \textit{x},
  \textit{y}, [\textit{lig-index}]\texttt{)}

Add an anchor point for mark attachment to the currently selected glyph. 
It is an error to attempt this if no, or more than one, glyph is selected. 
The \textit{name} argument specifies the class, such as was used in
\textit{AddAnchorClass()}.  The type should be one of \texttt{"mark"},
\texttt{"basechar"} (syn.\ \texttt{"base"}), \texttt{"baselig"} (syn.\
\texttt{"ligature"}), \texttt{"basemark"}, \texttt{"cursentry"} (syn.\
\texttt{"entry"}, \texttt{"cursexit"} (syn.\ \texttt{"exit"}), or
\texttt{"default"}.  The \texttt{"default"} choice attempts to guess an
appropriate type.  The \textit{x} and \textit{y} arguments specify the
coordinates of the anchor.  The final argument is required if and only if
the type is base ligature.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddDHint}

\texttt{AddDHint(}$x_1$, $y_1$, $x_2$, $y_2$, $x_\mathrm{u}$,
  $y_\mathrm{u}$\texttt{)}

Add a diagonal hint to any selected glyphs.  A diagonal hint is specified by
three pairs of X-Y coordinates:  $(x_1,y_1)$ and $(x_2,y_2)$, which specify
two points on opposite sides of the diagonal stem, and
$(x_\mathrm{u},y_\mathrm{u})$, which
specifies a unit vector in the direction of the stem.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddExtrema}

\texttt{AddExtrema(}[\textit{really}]\texttt{)}

Add extra points to spline segments (that is, break them into smaller
segments) in the selected glyph slots to ensure that segments achieve their
maximum and minimum X and Y values at endpoints and not in between. 
This is a technical requirement of some font formats.

If an extremum occurs very near but not at the endpoint of a segment, then
\texttt{AddExtrema()} will by default skip processing that extremum in order
to avoid creating a very short segment.  Specify a nonzero integer for the
optional argument \textit{really} to force adding extrema in such cases.

Rounding coordinates in a font to integer values will often cause the
splines to break the points-at-extrema rule, and adding points at extrema
will often break the integer-coordinates rule required by the same font
formats!  I do not know of a sequence of rounding, extrema-adding, and
simplification operations without manual intervention that will reliably
bring a font into compliance with both rules.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddHHint}

\texttt{AddHHint(}\textit{start},\textit{width}\texttt{)}

Add a horizontal hint to any selected glyphs, starting at X coordinate
\textit{start} and extending for distance \textit{width}.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddInstrs}

\texttt{AddInstrs(}\textit{dest}, \textit{replace}, \textit{instrs}\texttt{)}

Add Microsoft-style rasterization hints (``instructions'') to the font. 
These can be stored either in a TrueType table, or in an individual glyph,
as determined by the string argument \textit{dest}.  If \textit{dest} is
\texttt{"fpgm"} or \texttt{"prep"}, then the instructions will go in the
table of that name; if it is an empty string then the instructions will go
in any selected characters; and otherwise, the string value will be taken as
the name of the glyph where the instructions will go.  Glyphs actually named
``fpgm'' or ``prep'' apparently can only be specified by the selection
mechanism.

The \textit{replace} argument should be an integer; if it is nonzero then
the new instructions replace any currently in the specified destination, and
if it is zero then they are appended to any already present.  The
\textit{instrs} argument should be a string containing the instructions. 
This is code in a primitive assembly language for the TrueType instructions
bytecode interpreter.  The syntax defined by the TrueType standard appears
to be supported, with some undocumented but optional extensions proprietary
to FontForge (and inherited by FontAnvil).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddLookup}

\texttt{AddLookup(}\textit{name}, \textit{type}, \textit{flags},
\textit{features}, [\textit{after}]\texttt{)}

Add a new lookup to the font.  The new lookup will be empty; other functions
can be used to put things in it.

The \textit{name} is a string.  The
\textit{type} is a string from the following list, identifying the algorithm
used for looking up glyphs or glyph sequences and the kind of substitution
or return value the lookup can produce: gpos\_context, gpos\_contextchain,
gpos\_cursive, gpos\_mark2base, gpos\_mark2ligature, gpos\_mark2mark,
gpos\_marktobase, gpos\_marktoligature, gpos\_marktomark, gpos\_pair,
gpos\_single, gsub\_alternate, gsub\_context, gsub\_contextchain,
gsub\_ligature, gsub\_multiple, gsub\_revesechain, gsub\_single,
kern\_statemachine, morx\_context, morx\_indic, morx\_insert.  The type
also implicitly specifies which table will contain the new lookup.

The \textit{flags} argument is an integer formed by adding these flag
values, which are equivalent to flag names in feature file syntax:
\begin{itemize}
  \item 1: RightToLeft;
  \item 2: IgnoreBaseGlyphs;
  \item 4: IgnoreLigatures; and
  \item 8: IgnoreMarks.
\end{itemize}

The \textit{features} argument expressed which OpenType features
will invoke this lookup.  It should be an array value, each of whose entries
is a two-element array, containing as its first element a four-letter string
identifying the feature, and as its second element another array of
four-letter strings listing the language systems in which that feature will
use this lookup.

The \textit{after} argument, if specified, causes the new lookup to be added
after the lookup with the specified name.  Otherwise, it will be added first
in its table.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddLookupSubtable}

\texttt{AddLookupSubtable(}\textit{lookup}, \textit{name}, [\textit{after}]\texttt{)}

Add a new subtable to a lookup.  The lookup to use is specified as the first
argument, and the second is the name for the new subtable.  The optional
\textit{after} argument causes the new subtable to be added after the named
subtable; otherwise, it will be first in the lookup.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddPosSub}

\texttt{AddPosSub(}\textit{arg}, \textit{arg}, \textit{arg}, [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddSizeFeature}

\texttt{AddSizeFeature(}\textit{arg}, \textit{arg}, [\textit{arg}], [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AddVHint}

\texttt{AddVHint(}\textit{start},\textit{width}\texttt{)}

Add a vertical hint to any selected glyphs, starting at Y coordinate
\textit{start} and extending for distance \textit{width}.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ApplySubstitution}

\texttt{ApplySubstitution(}\textit{script},\textit{lang},\textit{feature}\texttt{)}

Apply OpenType-style substitutions to selected glyphs.  All three arguments
should be strings of up to four characters, which will be blank-padded if
shorter; the \textit{script} and \textit{lang} tags (but not
\textit{feature}) may also have the wildcard value * (a single asterisk),
which matches everything.  FontAnvil will apply any substitution rules in
the current font for the selected glyphs that match the specified script,
language, and feature (or ignoring the checks for script or language if
applying the wildcard); glyph slots for which a substitution is found will
be replaced with the contents of the slots specified by the substitution
rules.

Context-dependent substitutions appear to be ignored, and it is not
specified what happens if the result of the subsitution rule is not exactly
one glyph.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Array}

\texttt{Array(}\textit{size}\texttt{)}

Creates and returns a value of array type, with the given number of
elements initialized to void.
This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AskUser}

\texttt{AskUser(}\textit{prompt}, [\textit{default}]\texttt{)}

Asks the user a question.  The string \textit{prompt} is written out to
standard output, and the next line from standard input is captured to become
the return value.  A line is terminated by a newline character, which will
be included in the return value.  On error, or if the user enters a blank
line, the return value will be \textit{default} if specified, or an empty
string if not.
This function may be used without a loaded font.

If \FFdiff FontAnvil was compiled with readline support, then
\texttt{AskUser()} will allow command-line editing.  This is a
FontAnvil extension, not supported by FontForge.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AutoCounter}

\texttt{AutoCounter(}\texttt{)}

Automatically generate ``counter masks'' for selected glyphs.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AutoHint}

\texttt{AutoHint()}

Automatically generate Adobe-style rasterization hints for selected
glyphs.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AutoInstr}

\texttt{AutoInstr()}

Automatically generate Microsoft-style rasterization hints (that is,
``instructions'') for selected glyphs.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AutoKern}

\texttt{AutoKern(}\textit{arg}, \textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AutoTrace}

\texttt{AutoTrace()}

Automatically trace the background images of the selected glyphs into
outlines.  \FFdiff In FontForge, this function will only work if Autotrace
or Potrace is installed where the interpreter can find it.  FontAnvil uses
built-in code derived from Potrace instead of calling an external program.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{AutoWidth}

\texttt{AutoWidth(}\textit{arg}, \textit{arg}, [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{BitmapsAvail}

\texttt{BitmapsAvail(} \textit{sizes}, [\textit{rasterized}]\ldots\texttt{)}

Choose the set of bitmap or greymap sizes (``strikes'') that will be stored
in the current font.  The \textit{sizes} argument should be a list of
integers; these are either plain numbers of pixels (implicitly specifying
one bit per pixel black and white bitmaps); or bit-field encoded numbers
specifying both a pixel size (in the least significant 16 bits) and a number
of bits per pixel (in the higher bits).  For instance, 0x8000C specifies a
12 pixel greymap font with eight bits per pixel.

If any sizes are specified that are not already in the font, they will be
added.  If any sizes are not specified but exist in the font, they will be
removed; so the final list of sizes will match what was specified.  Any
newly-created strikes will be filled in with rasterized versions of the
splines in the font, if \textit{rasterized} is not specified or is a nonzero
integer; the new strikes will be blank if \textit{rasterized} is zero.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{BitmapsRegen}

\texttt{BitmapsRegen(} \textit{sizes}\texttt{)}

Render bitmaps from the splines in the current font.  The list of bitmap
sizes (and bit depths, in the case of greymap strikes) is specified as an
array in the same format as with \texttt{BitmapsAvail()}.  All the specified
sizes must already exist.  Their contents will be replaced with the results
of the rendering; any other existing sizes are not changed.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{BuildAccented}

\texttt{BuildAccented()}

If any selected glyphs are accented letters (determined by Unicode code
points, according to George Williams's undocumented rules), then replace
them with composite glyphs formed by references to base and accent glyphs,
in an unspecified way.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{BuildComposite}

\texttt{BuildComposite()}

If any selected glyphs fall into a category described as ``ligatures and
whatnot'' (determined by Unicode code points, according to George Williams's
undocumented rules), then replace them with composite glyphs formed by
references to other glyphs, in an unspecified way.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{BuildDuplicate}

\texttt{BuildDuplicate()}

For all selected glyph slots, if the glyph slot is associated with a Unicode
code point that is an alternate of some other Unicode code point according
to undocumented rules, and there is a glyph in the other code point's slot,
then point the current glyph slot to that other glyph, thereby creating a
deprecated multi-slot glyph structure.  What happens to any former glyph in
the current slot is not clear; the code looks like it may leak the memory.

The intended use of this function seems to have been mainly to build
fonts with backward compatibility to certain Chinese encodings (perhaps
based on early versions of Unicode without full coverage) that placed glyphs
in the PUA for characters that are also (now) found at standard code points.

Do not use this function.  It is kept in FontAnvil (for the moment, quite
possibly to be removed some day) for backward compatibility, because some
scripts may depend on the built-in rules.  Because they are undocumented,
those are not easy to reproduce with other functions.  Creating multi-slot
glyph structures in general is deprecated in the relevant font standards and
so should rarely be attempted; and if you really need a multi-slot glyph
structure, the \texttt{SameGlyphAs()} function is a more controllable way to
build them.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CIDChangeSubFont}

\texttt{CIDChangeSubFont(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CIDFlatten}

\texttt{CIDFlatten(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CIDFlattenByCMap}

\texttt{CIDFlattenByCMap(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CIDSetFontNames}

\texttt{CIDSetFontNames(}\textit{arg}, \textit{arg}, [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CanonicalContours}

\texttt{CanonicalContours(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CanonicalStart}

\texttt{CanonicalStart(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Ceil}

\texttt{Ceil(}\textit{x}\texttt{)}

Returns $\lceil x \rceil$.  That is the ceiling of $x$, or the least
integer greater than or equal to $x$.  This function may be used without a
loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CenterInWidth}

\texttt{CenterInWidth(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ChangePrivateEntry}

\texttt{ChangePrivateEntry(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ChangeWeight}

\texttt{ChangeWeight(}[\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CharCnt}

\texttt{CharCnt()}

Return the number of glyph slots in the current font, including both encoded
and unencoded slots.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CharInfo}

\texttt{CharInfo(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CheckForAnchorClass}

\texttt{CheckForAnchorClass(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Chr}

\texttt{Chr(}\textit{int}\texttt{)}

Takes a single integer in the range -128 to 255 and returns a string
containing that byte, folding negative values into two's complement
notation.

\noindent\texttt{Chr(}\textit{array}\texttt{)}

Takes an array of integers in the range -128 to 255 and returns a string
consisting of those bytes.  This is the inverse of the \texttt{Ord()}
function; see also \texttt{Utf8()} and \texttt{Ucs4()}, which operate on
Unicode strings and code points instead of byte values.

This function may be used without a loaded font.  Note that the integers are
\emph{byte} values.  Code points U+0080 and beyond may be constructed by
spelling them out in UTF-8.  It is also possible, but not recommended, to
construct strings that are invalid UTF-8.

Since strings are stored in null-terminated form internally, passing a zero,
although not reported as an error, will cause the string to terminate
immediately before the zero.  It is not possible to create a string value in
PE Script that meaningfully \emph{contains} a zero byte.

I \FFdiff have submitted a patch to FontForge, but as of the current writing
(June 2015), FontForge does not document its support of zero and
negative numbers,
and documents but does not correctly implement array-valued arguments. 
FontAnvil behaves as documented here.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Clear}

\texttt{Clear()}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ClearBackground}

\texttt{ClearBackground(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ClearCharCounterMasks}

\texttt{ClearCharCounterMasks(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ClearGlyphCounterMasks}

\texttt{ClearGlyphCounterMasks(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ClearHints}

\texttt{ClearHints(}[\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ClearInstrs}

\texttt{ClearInstrs(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ClearPrivateEntry}

\texttt{ClearPrivateEntry(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ClearTable}

\texttt{ClearTable(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Close}

\texttt{Close(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CompareFonts}

\texttt{CompareFonts(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CompareGlyphs}

\texttt{CompareGlyphs(}[\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ControlAfmLigatureOutput}

\texttt{ControlAfmLigatureOutput(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ConvertByCMap}

\texttt{ConvertByCMap(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ConvertToCID}

\texttt{ConvertToCID(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Copy}

\texttt{Copy(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CopyAnchors}

\texttt{CopyAnchors(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CopyFgToBg}

\texttt{CopyFgToBg(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CopyGlyphFeatures}

\texttt{CopyGlyphFeatures(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CopyLBearing}

\texttt{CopyLBearing(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CopyRBearing}

\texttt{CopyRBearing(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CopyReference}

\texttt{CopyReference(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CopyUnlinked}

\texttt{CopyUnlinked(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CopyVWidth}

\texttt{CopyVWidth(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CopyWidth}

\texttt{CopyWidth(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{CorrectDirection}

\texttt{CorrectDirection(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Cos}

\texttt{Cos(}\textit{theta}\texttt{)}

Returns the cosine of \textit{theta}, which is measured in radians.
This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Cut}

\texttt{Cut(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{DebugCrashFontForge}

\texttt{DebugCrashFontForge(}\ldots\texttt{)}

Causes FontAnvil [sic] to attempt to write to a null pointer, which should
crash the interpreter.  This may be of some use in debugging.  Arguments are
ignored.  Function name retained for compatibility.  In \FFdiff FontForge,
this function requires a loaded font, but that limitation is removed in
FontAnvil.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{DefaultOtherSubrs}

\texttt{DefaultOtherSubrs(}\texttt{)}

Set the global store of ``other subroutines,'' which are fragments of
PostScript code used for special purposes within PostScript fonts, to its
default contents specified by Adobe.  This function may be used without a
loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{DefaultRoundToGrid}

\texttt{DefaultRoundToGrid(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{DefaultUseMyMetrics}

\texttt{DefaultUseMyMetrics(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{DetachAndRemoveGlyphs}

\texttt{DetachAndRemoveGlyphs(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{DetachGlyphs}

\texttt{DetachGlyphs(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{DontAutoHint}

\texttt{DontAutoHint(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{DrawsSomething}

\texttt{DrawsSomething(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Error}

\texttt{Error(}\textit{msg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Exp}

\texttt{Exp(}\textit{x}\texttt{)}

Compute the exponential function, $e^x$.
This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ExpandStroke}

\texttt{ExpandStroke(}\textit{arg}, \textit{arg}, [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Export}

\texttt{Export(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{FileAccess}

\texttt{FileAccess(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{FindIntersections}

\texttt{FindIntersections(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{FindOrAddCvtIndex}

\texttt{FindOrAddCvtIndex(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Floor}

\texttt{Floor(}\textit{arg}\texttt{)}

Returns $\lfloor x \rfloor$.  That is the floor of $x$, or the greatest
integer less than or equal to $x$.  This function may be used without a
loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{FontImage}

\texttt{FontImage(}\textit{arg}, \textit{arg}, \textit{arg}, [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{FontsInFile}

\texttt{FontsInFile(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Generate}

\texttt{Generate(}\textit{arg}, \textit{arg}, [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GenerateFamily}

\texttt{GenerateFamily(}\textit{arg}, \textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GenerateFeatureFile}

\texttt{GenerateFeatureFile(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetAnchorPoints}

\texttt{GetAnchorPoints(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetCoverageCounts}

\texttt{GetCoverageCounts()}

Print (to standard output) a table listing all the built-in functions in the
interpreter and how many times each one has been called in the current run
of FontAnvil; this information may be useful in verifying the coverage of an
interpreter test suite.
This function may be used without a loaded font.  This \FFdiff function is a
FontAnvil extension and is not available in FontForge.  The details of its
operation may change in some future version.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetCvtAt}

\texttt{GetCvtAt(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetEnv}

\texttt{GetEnv(}\textit{arg}\texttt{)}

Return the string value of an environment variable, or an empty string if
the variable requested does not exist.
This function may be used without a loaded font.
In \FFdiff FontForge, requesting a non-existent variable is an error.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetFontBoundingBox}

\texttt{GetFontBoundingBox(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetLookupInfo}

\texttt{GetLookupInfo(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetLookupOfSubtable}

\texttt{GetLookupOfSubtable(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetLookupSubtables}

\texttt{GetLookupSubtables(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetLookups}

\texttt{GetLookups(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetMaxpValue}

\texttt{GetMaxpValue(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetOS2Value}

\texttt{GetOS2Value(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetPosSub}

\texttt{GetPosSub(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetPref}

\texttt{GetPref(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetPrivateEntry}

\texttt{GetPrivateEntry(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetSubtableOfAnchorClass}

\texttt{GetSubtableOfAnchorClass(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetTTFName}

\texttt{GetTTFName(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GetTeXParam}

\texttt{GetTeXParam(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{GlyphInfo}

\texttt{GlyphInfo(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{HFlip}

\texttt{HFlip(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{HasPreservedTable}

\texttt{HasPreservedTable(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{HasPrivateEntry}

\texttt{HasPrivateEntry(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Import}

\texttt{Import(}\textit{arg}, \textit{arg}, [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{InFont}

\texttt{InFont(}[\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Inline}

\texttt{Inline(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Int}

\texttt{Int(}\textit{x}\texttt{)}

Converts a real number or Unicode code point value to an integer, by means
of the C compiler's type coercion.  In the case of real numbers, that means
$x$ will be rounded toward zero.  An integer argument will be returned
unchanged.
This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{InterpolateFonts}

\texttt{InterpolateFonts(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{IsAlNum}

\texttt{IsAlNum(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{IsAlpha}

\texttt{IsAlpha(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{IsDigit}

\texttt{IsDigit(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{IsFinite}

\texttt{IsFinite(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{IsHexDigit}

\texttt{IsHexDigit(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{IsLower}

\texttt{IsLower(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{IsNan}

\texttt{IsNan(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{IsSpace}

\texttt{IsSpace(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{IsUpper}

\texttt{IsUpper(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Italic}

\texttt{Italic(}[\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Join}

\texttt{Join(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{LoadEncodingFile}

\texttt{LoadEncodingFile(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{LoadNamelist}

\texttt{LoadNamelist(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{LoadNamelistDir}

\texttt{LoadNamelistDir(}[\textit{arg}]\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{LoadStringFromFile}

\texttt{LoadStringFromFile(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{LoadTableFromFile}

\texttt{LoadTableFromFile(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Log}

\texttt{Log(}\textit{x}\texttt{)}

Returns $\ln x$, that is the natural (base $e$) logarithm.  This is an error
if $x$ is zero, negative, or not a number.
This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{LookupStoreLigatureInAfm}

\texttt{LookupStoreLigatureInAfm(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MMAxisBounds}

\texttt{MMAxisBounds(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MMAxisNames}

\texttt{MMAxisNames(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MMBlendToNewFont}

\texttt{MMBlendToNewFont(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MMChangeInstance}

\texttt{MMChangeInstance(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MMChangeWeight}

\texttt{MMChangeWeight(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MMInstanceNames}

\texttt{MMInstanceNames(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MMWeightedName}

\texttt{MMWeightedName(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MakeLine}

\texttt{MakeLine(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MergeFeature}

\texttt{MergeFeature(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MergeFonts}

\texttt{MergeFonts(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MergeKern}

\texttt{MergeKern(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MergeLookupSubtables}

\texttt{MergeLookupSubtables(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MergeLookups}

\texttt{MergeLookups(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Move}

\texttt{Move(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MoveReference}

\texttt{MoveReference(}\textit{arg}, \textit{arg}, \textit{arg}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{MultipleEncodingsToReferences}

\texttt{MultipleEncodingsToReferences(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{NameFromUnicode}

\texttt{NameFromUnicode(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{NearlyHvCps}

\texttt{NearlyHvCps(}[\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{NearlyHvLines}

\texttt{NearlyHvLines(}[\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{NearlyLines}

\texttt{NearlyLines(}[\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{New}

\texttt{New(}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{NonLinearTransform}

\texttt{NonLinearTransform(}\textit{xexp}, \textit{yexp}\texttt{)}

Transform all the X and Y coordinates in the selected glyphs according to
two expressions given as strings.  The expressions are defined in a language
unique to this function, which can be summarized as follows, from highest to
lowest precedence class, with evaluation from left to right within a class:
\begin{itemize}
  \item constant reals, constant integers, and the variables \texttt{x} and
    \texttt{y}
  \item \texttt{!}, \texttt{()}, \texttt{sin()}, \texttt{cos()},
    \texttt{tan()}, \texttt{log()}, \texttt{exp()}, \texttt{sqrt()},
    \texttt{abs()}, \texttt{rint()}, \texttt{floor()},
    \texttt{ceil()}
  \item \texttt{\textasciicircum}
  \item \texttt{*}, \texttt{/}, \texttt{\%}
  \item \texttt{+}, \texttt{-}
  \item \texttt{==}, \texttt{!=}, \texttt{>=}, \texttt{>}, \texttt{<=},
    \texttt{<=}, \texttt{<}
  \item \texttt{\&\&}, \texttt{||}
  \item \texttt{?~:} (C-style ternary question mark)
\end{itemize}

The FontForge \FFdiff code base supports this function, but only as a
compile-time option that is turned off by default.  Thus, most actual
installations of FontForge will not support it.  It is unconditionally
enabled in FontAnvil.  FontForge documents \texttt{x} and \texttt{y} as
being the only atomic values available in the \texttt{NonLinearTransform()}
expression language (no integers or reals), but that is obviously
incorrect.  FontForge also incorrectly documents \texttt{float()} as a
function available in the language, instead of \texttt{floor()}.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Open}

\texttt{Open(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Ord}

\texttt{Ord(}\textit{str}\texttt{)}

Converts a string to an array of integers in the range 1 to 255,
representing the byte values in the string.  Note 0 is not included
because PE Script strings cannot contain zero bytes.
This is the inverse of the \texttt{Chr()}
function; see also \texttt{Utf8()} and \texttt{Ucs4()}, which operate on
Unicode strings and code points instead of byte values.

\texttt{Ord(}\textit{str}, \textit{pos}\texttt{)}

With the optional \textit{pos} argument, \texttt{Ord()} returns a single
integer instead of an array, representing the byte value at the given
zero-based index into the string.

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Outline}

\texttt{Outline(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{OverlapIntersect}

\texttt{OverlapIntersect(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Paste}

\texttt{Paste(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{PasteInto}

\texttt{PasteInto(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{PasteWithOffset}

\texttt{PasteWithOffset(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{PositionReference}

\texttt{PositionReference(}\textit{arg}, \textit{arg}, \textit{arg}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{PostNotice}

\texttt{PostNotice(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Pow}

\texttt{Pow(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{PreloadCidmap}

\texttt{PreloadCidmap(}\textit{arg}, \textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Print}

\texttt{Print(}, \ldots\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{PrintFont}

\texttt{PrintFont(}\textit{arg}, \textit{arg}, [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{PrintSetup}

\texttt{PrintSetup(}\textit{arg}, \textit{arg}, [\textit{arg}], [\textit{arg}]\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{PrivateGuess}

\texttt{PrivateGuess(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Quit}

\texttt{Quit(}[\textit{arg}]\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Rand}

\texttt{Rand()}

Return something called ``a random integer.''  FontForge \FFdiff does not
document what that means.  In fact, in FontForge it means whatever comes out
of a call to the C library \texttt{rand()} function, and what that actually
is will vary depending on the host platform.  FontAnvil uses a bundled copy
of the SIMD-oriented Fast Mersenne Twister by Saito and Matsumoto.  The
return values are uniformly distributed over the integers 0 to $2^{31}-1$,
that is 0 to 2147483647 (32-bit integers from the generator with the high
bit forced to zero to prevent signedness problems).  The generator is seeded
from the system clock and process ID when the interpreter starts.  The same
generator instance is used throughout FontAnvil wherever random numbers are
called for, including in operations that do not obviously involve
randomization (as a result of UUID generation and such).  Thus, scripts
should not depend on its producing a consistent sequence of numbers.

This function may be used without a loaded font.  See \texttt{RandReal()}
for a related function that may be of use.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RandReal}

\texttt{RandReal()}

Return a pseudorandom real number in the interval $[0,1)$.  This uses the
same underlying generator as \texttt{Rand()}, which see; but its output
range may be more convenient.  In principle, \texttt{RandReal()} may also
have slightly better precision, because it uses all 32 bits of the PRNG
output.  This \FFdiff function is a FontAnvil extension and is not available
in FontForge.  This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ReadOtherSubrsFile}

\texttt{ReadOtherSubrsFile(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Real}

\texttt{Real(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Reencode}

\texttt{Reencode(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RemoveAllKerns}

\texttt{RemoveAllKerns(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RemoveAllVKerns}

\texttt{RemoveAllVKerns(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RemoveAnchorClass}

\texttt{RemoveAnchorClass(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RemoveDetachedGlyphs}

\texttt{RemoveDetachedGlyphs(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RemoveLookup}

\texttt{RemoveLookup(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RemoveLookupSubtable}

\texttt{RemoveLookupSubtable(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RemoveOverlap}

\texttt{RemoveOverlap(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RemovePosSub}

\texttt{RemovePosSub(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RemovePreservedTable}

\texttt{RemovePreservedTable(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RenameGlyphs}

\texttt{RenameGlyphs(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ReplaceCharCounterMasks}

\texttt{ReplaceCharCounterMasks(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ReplaceCvtAt}

\texttt{ReplaceCvtAt(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ReplaceGlyphCounterMasks}

\texttt{ReplaceGlyphCounterMasks(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ReplaceWithReference}

\texttt{ReplaceWithReference(}[\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Revert}

\texttt{Revert()}

Reload the current font from its file on disk (which must exist).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RevertToBackup}

\texttt{RevertToBackup()}

Reload the current font from its backup file (the one ending in
\textasciitilde, not a numbered revision), if one exists.  This is only
meaningful for fonts that are SFD files for which a backup was created by a
previous \texttt{Save()}.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Rotate}

\texttt{Rotate(}\textit{arg}, [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Round}

\texttt{Round(}\textit{arg}\texttt{)}

Returns the nearest integer to $x$, with ties broken by returning the
nearest \emph{even} integer.  This behaviour may differ on nonstandard
systems that lack the \texttt{fesetround()} library function.
This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RoundToCluster}

\texttt{RoundToCluster(}[\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{RoundToInt}

\texttt{RoundToInt(}\textit{arg}\texttt{)}

Round coordinates in selected glyphs.  See
\hyperref[func:Round]{\texttt{Round()}} for rounding a
real number to an integer.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SameGlyphAs}

\texttt{SameGlyphAs(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Save}

\texttt{Save(}[\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SaveTableToFile}

\texttt{SaveTableToFile(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Scale}

\texttt{Scale(}\textit{arg}, \textit{arg}, [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ScaleToEm}

\texttt{ScaleToEm(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Select}

\texttt{Select(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectAll}

\texttt{SelectAll(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectAllInstancesOf}

\texttt{SelectAllInstancesOf(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectBitmap}

\texttt{SelectBitmap(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectByColor}

\texttt{SelectByColor(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectByColour}

\texttt{SelectByColour(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectByPosSub}

\texttt{SelectByPosSub(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectChanged}

\texttt{SelectChanged(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectFewer}

\texttt{SelectFewer(}\textit{arg}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectFewerSingletons}

\texttt{SelectFewerSingletons(}\textit{arg}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectGlyphsBoth}

\texttt{SelectGlyphsBoth(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectGlyphsReferences}

\texttt{SelectGlyphsReferences(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectGlyphsSplines}

\texttt{SelectGlyphsSplines(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectHintingNeeded}

\texttt{SelectHintingNeeded(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectIf}

\texttt{SelectIf(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectInvert}

\texttt{SelectInvert(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectMore}

\texttt{SelectMore(}\textit{arg}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectMoreIf}

\texttt{SelectMoreIf(}\textit{arg}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectMoreSingletons}

\texttt{SelectMoreSingletons(}\textit{arg}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectMoreSingletonsIf}

\texttt{SelectMoreSingletonsIf(}\textit{arg}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectNone}

\texttt{SelectNone(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectSingletons}

\texttt{SelectSingletons(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectSingletonsIf}

\texttt{SelectSingletonsIf(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SelectWorthOutputting}

\texttt{SelectWorthOutputting(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetCharCnt}

\texttt{SetCharCnt(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetCharColor}

\texttt{SetCharColor(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetCharComment}

\texttt{SetCharComment(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetCharCounterMask}

\texttt{SetCharCounterMask(}\textit{arg}, \textit{arg}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetCharName}

\texttt{SetCharName(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetFeatureList}

\texttt{SetFeatureList(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetFondName}

\texttt{SetFondName(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetFontHasVerticalMetrics}

\texttt{SetFontHasVerticalMetrics(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetFontNames}

\texttt{SetFontNames(}\textit{arg}, \textit{arg}, [\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetFontOrder}

\texttt{SetFontOrder(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetGasp}

\texttt{SetGasp(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetGlyphChanged}

\texttt{SetGlyphChanged(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetGlyphClass}

\texttt{SetGlyphClass(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetGlyphColor}

\texttt{SetGlyphColor(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetGlyphComment}

\texttt{SetGlyphComment(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetGlyphCounterMask}

\texttt{SetGlyphCounterMask(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetGlyphName}

\texttt{SetGlyphName(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetGlyphTeX}

\texttt{SetGlyphTeX(}\textit{arg}, \textit{arg}, \textit{arg}, [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetItalicAngle}

\texttt{SetItalicAngle(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetKern}

\texttt{SetKern(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetLBearing}

\texttt{SetLBearing(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetMacStyle}

\texttt{SetMacStyle(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetMaxpValue}

\texttt{SetMaxpValue(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetOS2Value}

\texttt{SetOS2Value(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetPanose}

\texttt{SetPanose(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetPref}

\texttt{SetPref(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetRBearing}

\texttt{SetRBearing(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetTTFName}

\texttt{SetTTFName(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetTeXParams}

\texttt{SetTeXParams(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetUnicodeValue}

\texttt{SetUnicodeValue(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetUniqueID}

\texttt{SetUniqueID(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetVKern}

\texttt{SetVKern(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetVWidth}

\texttt{SetVWidth(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SetWidth}

\texttt{SetWidth(}\textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Shadow}

\texttt{Shadow(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Shell}

\texttt{Shell(}\textit{command}\texttt{)}

Execute a command in the system shell, via the C library \texttt{system(3)}
call.  Returns the integer return value from doing so.  All the usual
security considerations associated with shell interfaces apply.
This function may be used without a loaded font.  This \FFdiff function is a
FontAnvil extension and is not available in FontForge.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Simplify}

\texttt{Simplify(}, \ldots\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Sin}

\texttt{Sin(}\textit{theta}\texttt{)}

Returns the sine of \textit{theta}, which is measured in radians.
This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SizeOf}

\texttt{SizeOf(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Skew}

\texttt{Skew(}\textit{arg}, \textit{arg}, [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SmallCaps}

\texttt{SmallCaps(}[\textit{arg}], [\textit{arg}], [\textit{arg}], [\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Sqrt}

\texttt{Sqrt(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{StrJoin}

\texttt{StrJoin(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{StrSplit}

\texttt{StrSplit(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Strcasecmp}

\texttt{Strcasecmp(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Strcasestr}

\texttt{Strcasestr(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Strftime}

\texttt{Strftime(}\textit{format}, [\textit{isutc}, [\textit{locale}]]\texttt{)}

Generate a formatted time string, as the system \texttt{strftime()} function
would do.  If \textit{isutc} is present and 0, then the local time zone will
be used; otherwise, it will be UTC.  If \textit{locale} is specified as a
string, then that locale will be used; otherwise \texttt{strftime()} will be
called in the portable ``C'' locale.  In this respect FontAnvil differs from
from \FFdiff FontForge, which uses the current locale configured by
environment variables as the default.  The change is meant to ensure that
scripts will behave predictably on all systems unless they explicitly
require localization and handle it themselves.  This function may be used
without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Strlen}

\texttt{Strlen(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Strrstr}

\texttt{Strrstr(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Strskipint}

\texttt{Strskipint(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Strstr}

\texttt{Strstr(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Strsub}

\texttt{Strsub(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Strtod}

\texttt{Strtod(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Strtol}

\texttt{Strtol(}\textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{SubstitutionPoints}

\texttt{SubstitutionPoints(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Tan}

\texttt{Tan(}\textit{theta}\texttt{)}

Returns the tangent of \textit{theta}, which is measured in radians.
This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ToLower}

\texttt{ToLower(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ToMirror}

\texttt{ToMirror(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ToString}

\texttt{ToString(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{ToUpper}

\texttt{ToUpper(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Transform}

\texttt{Transform(}\textit{arg}, \textit{arg}, \textit{arg}, \textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{TypeOf}

\texttt{TypeOf(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{UCodePoint}

\texttt{UCodePoint(}\textit{int}\texttt{)}

Cast an integer to the special ``Unicode code point'' data type required by
some other scripting functions.  This function may be used without a loaded
font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Ucs4}

\texttt{Ucs4(}\textit{str}\texttt{)}

Decode a UTF-8 string into an array of integers (not actually UCS4, despite
the name) expressing the code points
in the string.  Handling of illegal UTF-8, including encoded surrogate code
points, is undefined.  This is the inverse of the \texttt{Utf8()} function;
see also \texttt{Chr()} and \texttt{Ord()}, which operate on byte values
instead of code points.  This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{UnicodeAnnotationFromLib}

\texttt{UnicodeAnnotationFromLib(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{UnicodeBlockEndFromLib}

\texttt{UnicodeBlockEndFromLib(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{UnicodeBlockNameFromLib}

\texttt{UnicodeBlockNameFromLib(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{UnicodeBlockStartFromLib}

\texttt{UnicodeBlockStartFromLib(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{UnicodeFromName}

\texttt{UnicodeFromName(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{UnicodeNameFromLib}

\texttt{UnicodeNameFromLib(}\textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{UnicodeNamesListVersion}

\texttt{UnicodeNamesListVersion(}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{UnlinkReference}

\texttt{UnlinkReference(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Utf8}

\texttt{Utf8(}\textit{codes}\texttt{)}

Encode an array of integers in the range 0 to 0x10FFFF, or a such single
integer, into a UTF-8 string.  Surrogate code point values will result in
an illegal UTF-8 result, and zeroes will prematurely terminate the output. 
This is the inverse of the \texttt{Ucs4()} function; see also \texttt{Chr()}
and \texttt{Ord()}, which operate on byte values instead of code points. 
This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{VFlip}

\texttt{VFlip(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{VKernFromHKern}

\texttt{VKernFromHKern(}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Validate}

\texttt{Validate(}[\textit{arg}]\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{Wireframe}

\texttt{Wireframe(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{WorthOutputting}

\texttt{WorthOutputting(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{WriteStringToFile}

\texttt{WriteStringToFile(}\textit{arg}, \textit{arg}, \textit{arg}\texttt{)}

This function may be used without a loaded font.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\PEFuncRef{WritePfm}

\texttt{WritePfm(}\textit{arg}\texttt{)}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Built-in functions in FontForge and not in FontAnvil}

\texttt{LoadPlugin()}\FFdiff\\
\texttt{LoadPluginDir()}

Removed because FontAnvil does not use plugins.

\noindent
\texttt{LoadPrefs()}\FFdiff\\
\texttt{SavePrefs()}

Removed because, to ensure consistent results from scripts, FontAnvil does
not store per-user ``preferences'' between runs.  For the moment, other
functions related to FontForge-style preference variables remain in the
language, but the values of these variables are initialized to defaults at
the start of each script run.

\noindent
\texttt{PrintFont()}\FFdiff\\
\texttt{PrintSetup()}

Removed because of the grossly disproportionate amount of unportable
interfacing code needed to talk to the native printing interfaces on each
operating system.  Some future version may support a more portable printing
feature, likely involving writing to files instead of interfacing directly
to the printer drivers.

\noindent
\texttt{Autotrace()}\FFdiff\\
\texttt{bAutoCounter()}\\
\texttt{bDontAutoHint()}\\
\texttt{bSubstitutionPoints()}\\
\texttt{BuildComposit()}\\
\texttt{GetPrefs()}

Misspellings of documented function names which FontForge once supported by
mistake and now retains for compatibility with hypothetical deployed
scripts that might have depended upon them.  No such deployed scripts are
actually known to exist.  FontAnvil does not retain the misspelled names.

\noindent
\texttt{AddATT()}\FFdiff\\
\texttt{DefaultATT()}\\
\texttt{PrivateToCvt()}\\
\texttt{RemoveATT()}\\
\texttt{SelectByATT()}

Deprecated functions that only produce error messages in FontForge; removed
entirely in FontAnvil.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Built-in variables}

