UFStrikeFormat.mesa
Last changed by Doug Wyatt, August 23, 1982 3:34 pm
Last changed by Michael Plass, February 15, 1984 8:48:02 am PST
UFStrikeFormat: DEFINITIONS = {
Header: TYPE = MACHINE DEPENDENT RECORD[
format(0): Format,
min(1),max(2): CHARACTER, -- minimum, maximum character codes
maxwidth(3): CARDINAL -- maximum spacing width of any character
];
Flag: TYPE = MACHINE DEPENDENT {F(0), T(1)};
Format: TYPE = MACHINE DEPENDENT RECORD[
oneBit: Flag, -- always T
index: Flag, -- F for simple strike, T for strike index
fixed: Flag, -- T if all characters have same width
kerned: Flag, -- T if Kerned, F if Plain
unused: [0..7777B] -- should be 0
];
BoundingBox: TYPE = MACHINE DEPENDENT RECORD[
fbbox(0), fbboy(1): INTEGER, -- bounding box offsets
fbbdx(2), fbbdy(3): INTEGER -- bounding box size
];
Body: TYPE = MACHINE DEPENDENT RECORD[
length(0): CARDINAL, -- number of words in strike body
ascent(1),descent(2): INTEGER, -- scanlines above and below the baseline
xoffset(3): INTEGER, -- always 0 (obsolete)
raster(4): CARDINAL -- number of words per scanline in the strike
followed by bitmap (raster*(ascent+descent) words)
followed by XTable (to end of body)
];
WidthEntry: TYPE = MACHINE DEPENDENT RECORD[offset,width: [0..377B]];
nullWidthEntry: WidthEntry = [377B,377B];
XTable: TYPE = RECORD[SEQUENCE COMPUTED CARDINAL OF CARDINAL];
WTable: TYPE = RECORD[SEQUENCE COMPUTED CARDINAL OF WidthEntry];
PlainStrike: TYPE = MACHINE DEPENDENT RECORD[
header: Header, -- common to all strike fonts
body: Body
];
KernedStrike: TYPE = MACHINE DEPENDENT RECORD[
header: Header, -- common to all strike fonts
box: BoundingBox, -- the font bounding box
body: Body -- the actual strike
followed by WTable
];
}.