<> <> <> <<>> DIRECTORY ImagerTransform USING [Scale], RefText USING [Append, New], Rope USING [ROPE], RopeInline USING [InlineFlatten], UnifiedFonts USING [Create], VFonts; VFontsImpl: CEDAR MONITOR IMPORTS ImagerTransform, RefText, RopeInline, UnifiedFonts EXPORTS VFonts = BEGIN prefix: REF TEXT = "Xerox/PressFonts/"; postfix: REF TEXT _ "/MRR"; scratch: REF TEXT _ RefText.New[100]; EstablishFont: PUBLIC ENTRY PROC [family: Rope.ROPE, size: CARDINAL, bold, italic: BOOL _ FALSE, defaultOnFailure: BOOL _ TRUE] RETURNS [VFonts.Font] = BEGIN scratch.length _ prefix.length; TRUSTED {RefText.Append[scratch, LOOPHOLE[RopeInline.InlineFlatten[family]]]}; postfix[1] _ IF bold THEN 'B ELSE 'M; postfix[2] _ IF italic THEN 'I ELSE 'R; RefText.Append[scratch, postfix]; RETURN[UnifiedFonts.Create[scratch, ImagerTransform.Scale[size, size], $Screen]]; END; defaultFont: PUBLIC VFonts.Font; RefText.Append[scratch, prefix]; defaultFont _ EstablishFont["Tioga", 10]; END.