<> <> <> 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 <> <> ]; 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 <> ]; }.