StrikeFontFormat.mesa
Copyright © 1984, 1985 Xerox Corporation. All rights reserved.
Michael Plass, February 15, 1984 8:48:02 am PST
Doug Wyatt, March 7, 1985 2:09:55 pm PST
StrikeFontFormat: CEDAR DEFINITIONS
= BEGIN
PlainStrike: TYPE = MACHINE DEPENDENT RECORD[
header: Header, -- header.kerned=F
body: Body -- the strike body
];
KernedStrike: TYPE = MACHINE DEPENDENT RECORD[
header: Header, -- header.kerned=T
box: BoundingBox, -- the font bounding box
body: Body, -- the strike body
wtable: WTable -- table of widths and offsets [header.max-header.min+2 words]
];
Flag: TYPE = MACHINE DEPENDENT {F(0), T(1)};
Header:
TYPE =
MACHINE
DEPENDENT
RECORD[
oneBit(0:0..0): Flag, -- always T
index(0:1..1): Flag, -- F for simple strike, T for strike index
fixed(0:2..2): Flag, -- T if all characters have same width
kerned(0:3..3): Flag, -- T if Kerned, F if Plain
unused(0:4..15): [0..7777B], -- should be 0
min(1), max(2): CARDINAL, -- minimum, maximum character codes
maxwidth(3): CARDINAL -- maximum spacing width of any character
];
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 [header.max-header.min+3 words]
];
XTable: TYPE = RECORD[SEQUENCE COMPUTED CARDINAL OF CARDINAL];
WidthEntry: TYPE = MACHINE DEPENDENT RECORD[offset,width: [0..377B]];
nullWidthEntry: WidthEntry = [377B,377B];
WTable: TYPE = RECORD[SEQUENCE COMPUTED CARDINAL OF WidthEntry];
END.