<> <> <> <> <> <<>> DIRECTORY ImagerFont USING [Font], Rope USING [ROPE]; VFonts: CEDAR DEFINITIONS ~ BEGIN Font: TYPE ~ ImagerFont.Font; ROPE: TYPE ~ Rope.ROPE; defaultFont: Font; DefaultFont: PROC [font: Font _ NIL] RETURNS [Font] ~ INLINE { RETURN[IF font=NIL THEN defaultFont ELSE font] }; EstablishFont: PUBLIC PROC [family: ROPE, size: CARDINAL, bold: BOOL _ FALSE, italic: BOOL _ FALSE, defaultOnFailure: BOOL _ TRUE ] RETURNS [Font]; <> CharWidth: PROC [char: CHAR, font: Font _ NIL] RETURNS [NAT]; StringWidth: PROC [string: ROPE, font: Font _ NIL] RETURNS [NAT]; FontHeight: PROC [font: Font _ NIL] RETURNS [NAT]; FontAscent: PROC [font: Font _ NIL] RETURNS [NAT]; Error: ERROR [code: ErrorCode]; ErrorCode: TYPE ~ {illegalFormat, fontNotFound}; END.