Run a ligature/kerning program for CHARACTER.
The program starts at LIG/KERNS[INDEX] and uses the KERNS array. Running the
program eventually creates ligatures or kernings for CHARACTER and some other
character.
If an invalid index into LIG/KERNS is encountered, signal an
INVALID-TABLE-INDEX error. This error is immediately restartable with
ABORT-LIG/KERN-PROGRAM.
If an invalid ligature opcode is encountered, signal an
INVALID-LIGATURE-OPCODE error. This error is immediately restartable with
DISCARD-LIGATURE.
If an invalid index into KERNS is encountered, signal an INVALID-TABLE-INDEX
error. This error is immediately restartable with DISCARD-KERNING.
Finally, if an invalid character code is encountered, signal an INVALID-CHARACTER-CODE error. Depending on the context, this error is immediately restartable with DISCARD-LIGATURE or DISCARD-KERNING.
file.lisp
(file)
version.lisp
(file)
Apply LIGATURE to STATE and return the new state.
STATE is a list of characters, the first two being subject to LIGATURE.
font.lisp
(file)
intermediate.lisp
(file)
intermediate.lisp
(file)
Send SYMBOL’s INDENTation information to Emacs.
Emacs will set the ’common-lisp-indent-function property.
If INDENT is a symbol, use its indentation definition. Otherwise, INDENT is
considered as an indentation definition.
readtable.lisp
(file)
Return FONT’s CODE character.
If ERRORP (the default), check that the character exists, or signal an
INVALID-CHARACTER-CODE error. Note that a fake boundary character may be
retrieved by this function.
font.lisp
(file)
(setf code-character)
(function)
Make FONT’s CHARACTER accessible by its code.
font.lisp
(file)
code-character
(function)
intermediate.lisp
(file)
intermediate.lisp
(file)
intermediate.lisp
(file)
Decode char-info WORD into a new CHAR-INFO instance, and return it.
intermediate.lisp
(file)
Decode exten WORD into a new EXTEN instance, and return it.
intermediate.lisp
(file)
Decode lig/kern WORD into a new LIG/KERN instance, and return it.
intermediate.lisp
(file)
intermediate.lisp
(file)
intermediate.lisp
(file)
intermediate.lisp
(file)
Make an extension recipe based on EXTEN with FONT’s characters.
file.lisp
(file)
intermediate.lisp
(file)
Construct a call to ‘defindent’ by reading an argument list from STREAM. This dispatch macro character function is installed on #i in the NET.DIDIERVERNA.TFM named readtable.
readtable.lisp
(file)
intermediate.lisp
(file)
intermediate.lisp
(file)
intermediate.lisp
(file)
Parse *STREAM* of declared length LF into a new font, and return it.
- FILE defaults to *STREAM*’s associated file if any.
- NAME defaults to the FILE’s base name, if any.
- If DESIGN-SIZE is provided and not a real greater or equal to 1, signal a
type error. Otherwise, override the original design size with it.
- When FREEZE (NIL by default), freeze the font immediately after creation.
If *STREAM* is shorter than expected, signal a FILE-UNDERFLOW error.
If *STREAM* is longer than expected, signal a FILE-OVERFLOW warning.
If the declared header length is less than 2, signal an INVALID-HEADER-LENGTH
error.
If BC and EC don’t make sense, signal an INVALID-CHARACTER-RANGE error.
If the widths, heights, depths, italic corrections, or extens tables lengths
are not within the expected range, signal an INVALID-TABLE-LENGTH error.
Finally, if the declared sections lengths don’t add up to the declared file length, signal an INVALID-SECTION-LENGTHS error.
file.lisp
(file)
intermediate.lisp
(file)
Make a new CHARACTER-METRICS instance, and return it.
Initialize the character’s CODE, FONT, WIDTH, HEIGHT, DEPTH, and
ITALIC-CORRECTION appropriately. The two remaining slots (NEXT-CHARACTER and
EXTENSION-RECIPE) will be initialized later if needed, when all character
metrics instances are created.
character.lisp
(file)
intermediate.lisp
(file)
Make a new EXTENSION-RECIPE with REPEATED-CHARACTER and return it. The recipe may also have a TOP-, MIDDLE-, and BOTTOM-CHARACTER.
character.lisp
(file)
Make a new NAMEd FONT instance, and return it.
If INITARGS are provided, pass them as-is to MAKE-INSTANCE.
font.lisp
(file)
intermediate.lisp
(file)
Make a new LIGATURE instance, and return it.
font.lisp
(file)
intermediate.lisp
(file)
intermediate.lisp
(file)
intermediate.lisp
(file)
intermediate.lisp
(file)
Parse the 8 character information tables from *STREAM* into FONT.
NC (EC - BC + 1), NW, NH, ND, NI, NL, NK, and NE are the declared lengths of
the 8 tables, that is, the char infos, widths, heights, depths, italic
corrections, lig/kern instructions, kerns, and extens respectively.
If a char info structure with a width index of 0 is not completely zero’ed
out, signal an INVALID-CHAR-INFO error. This error is immediately restartable
with SET-TO-ZERO.
If the first entry in the widths, heights, depths, or italic corrections table
is not 0, signal an INVALID-TABLE-START error. This error is immediately
restartable with SET-TO-ZERO.
If an index into the widths, heights, depths, or italic corrections tables is
invalid, signal an INVALID-TABLE-INDEX error. This error is immediately
restartable with SET-TO-ZERO.
If a lig/kern program is found for a boundary character, but there is no such
character in the font, signal a NO-BOUNDARY-CHARACTER error. This error is
immediately restartable with ABORT-LIG/KERN-PROGRAM.
If an index into the extens table is invalid, signal an INVALID-TABLE-INDEX error. This error is immediately restartable with DISCARD-EXTENSION-RECIPE.
If a cycle is found in a list of characters of ascending size, signal a
CHARACTER-LIST-CYCLE error. This error is immediately restartable with
DISCARD-NEXT-CHARACTER.
If a ligature is found to be cyclic, signal a LIGATURE-CYCLE error. This error
is immediately restartable with DISCARD-LIGATURE.
Finally, if an invalid character code is encountered, signal an INVALID-CHARACTER-CODE error. Depending on the context, this error is immediately restartable with DISCARD-NEXT-CHARACTER, or DISCARD-EXTENSION-RECIPE.
file.lisp
(file)
Parse a header of LENGTH words from *STREAM* into FONT.
If FONT’s design size is less than 1pt, signal an INVALID-DESIGN-SIZE error.
This error is immediately restartable with SET-TO-TEN.
However, if FONT’s design size was explicitly overridden, only signal an
INVALID-ORIGINAL-DESIGN-SIZE warning.
file.lisp
(file)
Read a fix word from *STREAM* and return it.
If LIMIT (the default), check that the number lies within ]-16,+16[, or
signal a FIX-WORD-OVERFLOW error. This error is immediately restartable with
SET-TO-ZERO.
util.lisp
(file)
Read a BCPL string out of PADDING bytes from *STREAM*.
The first byte in *STREAM* indicates the actual length of the string.
The remaining bytes are ignored.
If the declared string length is too large, signal an INVALID-STRING-LENGTH
error. This error is immediately restartable with READ-MAXIMUM-LENGTH or
DISCARD-STRING.
If the string is not in BCPL format (it contains parentheses or non plain ASCII characters, signal an INVALID-BCPL-STRING error. This error is immediately restartable with KEEP-STRING, FIX-STRING (replacing parentheses with slashes, and non plain ASCII characters with question marks), or DISCARD-STRING.
util.lisp
(file)
Read an unsigned 16 bits Big Endian integer from *STREAM* and return it. If >= 2^15, signal a U16-OVERFLOW error.
util.lisp
(file)
Read an unsigned 32 bits Big Endian integer from *STREAM*.
util.lisp
(file)
version.lisp
(file)
intermediate.lisp
(file)
intermediate.lisp
(file)
Like FORMAT, but if *STREAM* is bound, report that we’re reading from it.
util.lisp
(file)
Find the real start of a ligature/kerning program and run it.
See %run-ligature/kerning-program for more information.
If INDEX is invalid, signal an INVALID-TABLE-INDEX error. This error is immediately restartable with ABORT-LIG/KERN-PROGRAM.
file.lisp
(file)
intermediate.lisp
(file)
Access NAMEd TABLE at INDEX.
If INDEX is out of bounds, signal an INVALID-TABLE-INDEX error.
file.lisp
(file)
intermediate.lisp
(file)
intermediate.lisp
(file)
Read a series of ~"string" to be concatenated together.
readtable.lisp
(file)