<> <> <> ImagerFontCache: CEDAR DEFINITIONS ~ BEGIN FontCache: TYPE ~ REF FontCacheRep; FontCacheRep: TYPE; FontCode: TYPE ~ CARDINAL; FontObject: TYPE ~ REF FontObjectRep; FontObjectRep: TYPE ~ MACHINE DEPENDENT RECORD [ <> CharDataProc: PROC [self: FontObject, charCode: CARDINAL] RETURNS [charData: REF, memoryCost: INT], <> <> <> r0, r1, r2, r3, r4, r5: REAL, <> fontScalarData: INT, <> fontAnyData: REF <> ]; Create: PROC RETURNS [FontCache]; <> GetFontCode: PROC [fontObjectRep: FontObjectRep] RETURNS [fontCode: FontCode]; GetCharData: PROC [fontCache: FontCache, fontCode: FontCode, charCode: CARDINAL] RETURNS [charData: REF]; <> GetStringData: PROC [action: PROC [charCode: CARDINAL, charData: REF], fontCache: FontCache, fontCode: FontCode, ropeOrRefText: REF, start: INT _ 0, length: INT _ LAST[INT]]; <> <> GetNSStringData: PROC [action: PROC [charCode: CARDINAL, charData: REF], fontCache: FontCache, fontCode: FontCode, ropeOrRefText: REF]; << Like GetStringData, but the string is encoded using the Interpress string-body encoding, i.e., a character of '\377 is treated as an escape code that precedes a byte containing the high-order 8 bits of a new character code offset.>> InterpretFontCode: PROC [fontCode: FontCode] RETURNS [FontObject]; <> InvalidFontCode: ERROR; EnumerateFontCodes: PROC [action: PROC [fontCode: FontCode, fontObject: FontObject] RETURNS [flush: BOOLEAN _ FALSE]]; <> <> END.