// F O N T definitions
//

manifest [
DBNonExCode=-1
maxPressUses=8
lnMaxPressUses = 3
maskMaxPressUses = 7
]

structure CharWidth :
//Modified version of IX.DFS defn.
[
WSword 2//Width in "scan" direction
WBword 2//Width in "bit" direction
OSword //Offset in scan direction
OBword //Offset in bit direction
DSword//Dimension in scan direction
DBword //Dimension in bit direction
]

// Font structure for describing a font while processing pages.
// It has in it citations of which Press uses (font set, font)
// are supposed to be met by this font.

structure FN :
[
nextword// Pointer to keep them in a list

fambyte// Description: same as in IX
facebyte
bcbyte
ecbyte
sizword
rotationword
saword 2// starting addr for char. segment containing the rasters
widthSaword 2// starting addr for (possibly partial) char. segment containing
// the preferred widths (sa = widthSa, in most cases)

nameword 10// String name of requested font

matchword// Figure of merit on match so far
ICCOffsetword// Map to ICC
tallestword// Largest bit dimension of chars in font
widestword// Largest scan dimension of ditto
widthPtrword// Pointer to widths (if in core)

pressUsesword// Number of (font set, font) uses
useListword// List of (font set, font) use blocks
newFambyte// used during font matching to store actual value derived.
newFacebyte
newSizeword
newRotword
]

structure FNUse: [ uSet byte; uFont byte ]

structure USeBlock:
// block of use specifications
[
nextword// link
fnUse↑1, maxPressUses: @FNUse
]

// Following structure defines a font load: a collection of characters
// required for printing a given page or pages of the document.
// The structure is always followed by a bit table that has
// 1’s for ICC’s that are used.

structure FI :
[
nextword//Pointer to next one
fontLoadword// Number of this font load
fontLengthword// Number of words for actual font characters
]
// December 3, 1978 4:37 PM derived from Spruce.