DIRECTORY ImagerTransformation USING [Transformation], Prop USING [PropList], Rope USING [ROPE], Vector2 USING [VEC]; ImagerFont: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; VEC: TYPE ~ Vector2.VEC; Transformation: TYPE ~ ImagerTransformation.Transformation; Font: TYPE ~ REF FontRep; FontRep: TYPE ~ RECORD[ class: Class, data: REF, name: ROPE, charToClient: Transformation, props: Prop.PropList ]; Class: TYPE ~ REF ClassRep; ClassRep: TYPE ~ RECORD[ Modify: PROC[font: Font, m: Transformation] RETURNS[Font], Contains: PROC[font: Font, char: Char] RETURNS[BOOL], NextChar: PROC[font: Font, char: Char] RETURNS[next: Char], Width: PROC[font: Font, char: Char] RETURNS[VEC], Amplified: PROC[font: Font, char: Char] RETURNS[BOOL], Correction: PROC[font: Font, char: Char] RETURNS[CorrectionType], BoundingBox: PROC[font: Font, char: Char] RETURNS[Extents], Ligature: PROC[font: Font, char, successor: Char] RETURNS[Char], NextLigature: PROC[font: Font, char, successor: Char] RETURNS[Char], Kern: PROC[font: Font, char, successor: Char] RETURNS[VEC], NextKern: PROC[font: Font, char, successor: Char] RETURNS[Char], CharInfo: PROC[font: Font, char: Char, key: ATOM] RETURNS[OptionalReal], MaskChar: PROC[font: Font, char: Char, imager: REF -- Imager.Context --] ]; Char: TYPE ~ CARDINAL; nullChar: Char ~ CARDINAL.LAST; CharSet: TYPE ~ [0..377B]; CorrectionType: TYPE ~ {none, space, mask}; Extents: TYPE ~ RECORD[leftExtent, rightExtent, descent, ascent: REAL]; OptionalReal: TYPE ~ RECORD[exists: BOOL, value: REAL]; Find: PROC[name: ROPE] RETURNS[Font]; Modify: PROC[font: Font, m: Transformation] RETURNS[Font]; Scale: PROC[font: Font, s: REAL] RETURNS[Font]; Contains: PROC[font: Font, char: Char] RETURNS[BOOL]; NextChar: PROC[font: Font, char: Char] RETURNS[next: Char]; BoundingBox: PROC[font: Font, char: Char] RETURNS[Extents]; Width: PROC[font: Font, char: Char] RETURNS[VEC]; Amplified: PROC[font: Font, char: Char] RETURNS[BOOL]; Correction: PROC[font: Font, char: Char] RETURNS[CorrectionType]; Kern: PROC[font: Font, char, successor: Char] RETURNS[VEC]; NextKern: PROC[font: Font, char, successor: Char] RETURNS[Char]; Ligature: PROC[font: Font, char, successor: Char] RETURNS[Char]; NextLigature: PROC[font: Font, char, successor: Char] RETURNS[Char]; CharInfo: PROC[font: Font, char: Char, key: ATOM] RETURNS[OptionalReal]; MaskChar: PROC[font: Font, char: Char, imager: REF -- Imager.Context --]; PutProp: PROC[font: Font, key: REF, value: REF]; GetProp: PROC[font: Font, key: REF] RETURNS[value: REF]; MapRope: PROC[action: PROC[Char], rope: ROPE, start: INT _ 0, len: INT _ INT.LAST, set: CharSet _ 0]; MapText: PROC[action: PROC[Char], text: REF READONLY TEXT, start: NAT _ 0, len: NAT _ NAT.LAST, set: CharSet _ 0]; CharWidth: PROC[font: Font, char: CHAR, set: CharSet _ 0] RETURNS[VEC]; RopeWidth: PROC[font: Font, rope: ROPE, start: INT _ 0, len: INT _ INT.LAST, set: CharSet _ 0] RETURNS[VEC]; TextWidth: PROC[font: Font, text: REF READONLY TEXT, start: NAT _ 0, len: NAT _ NAT.LAST, set: CharSet _ 0] RETURNS[VEC]; CharBoundingBox: PROC[font: Font, char: CHAR, set: CharSet _ 0] RETURNS[Extents]; RopeBoundingBox: PROC[font: Font, rope: ROPE, start: INT _ 0, len: INT _ INT.LAST, set: CharSet _ 0] RETURNS[Extents]; TextBoundingBox: PROC[font: Font, text: REF READONLY TEXT, start: NAT _ 0, len: NAT _ NAT.LAST, set: CharSet _ 0] RETURNS[Extents]; Register: PROC[name: ROPE, file: ROPE, create: PROC[ROPE] RETURNS[Font]]; Alias: PROC[alias: ROPE, for: ROPE]; END. BImagerFont.mesa Copyright c 1984, Xerox Corporation. All rights reserved. Michael Plass, July 31, 1984 10:58:40 am PDT Doug Wyatt, November 14, 1984 6:23:24 pm PST Find the font with the given hierarchical name. It's safe to use RefText.TrustTextAsRope for the name. Modify a font by post-concatenating the given transformation. Equivalent to Modify[font, ImagerTransformation.Scale[s]]. TRUE iff the character exists in the font. Returns next char in the font, or nullChar. Call with nullChar to get first char in font. Returns a true bounding box for the character mask (not necessarily as tight as possible). Returns kerning adjustment between char and successor, or [0, 0]. Returns next successor that kerns with char. Call with successor=nullChar to get first one. Returns a ligature formed from char and successor, or nullChar. Returns next successor that has a ligature with char, Call with successor=nullChar to get first one. Escape hatch for getting other information not included above. Applies the character mask. Rope and Text operations treat '\377 as an escape code; see the Xerox Character Code Standard. Rope and Text operations treat '\377 as an escape code; see the Xerox Character Code Standard. Registers a font name; associates a file name and creation procedure with it. Registers an alias for a font name. Êx˜šœ™Jšœ Ïmœ/™:J™,J™,—J™šÏk ˜ Jšœžœ˜,Jšœžœ ˜Jšœžœžœ˜Jšœžœžœ˜—J˜Jšœ žœž ˜Jšœž˜J˜Jšžœžœžœ˜Jšžœžœ žœ˜Jšœžœ'˜;J˜Jšœžœžœ ˜šœ žœžœ˜J˜ Jšœžœ˜ Jšœžœ˜ Jšœ˜Jšœ˜J˜J˜—Jšœžœžœ ˜šœ žœžœ˜JšÏnœžœ žœ˜:JšŸœžœžœžœ˜5JšŸœžœžœ ˜;JšŸœžœžœžœ˜1JšŸ œžœžœžœ˜6JšŸ œžœžœ˜AJšŸ œžœžœ ˜;JšŸœžœ$žœ˜@JšŸ œžœ$žœ˜DJšŸœžœ$žœžœ˜;JšŸœžœ$žœ˜@JšŸœžœžœžœ˜HJšŸœžœ!žœÏcœ˜HJ˜J˜—Jšœžœžœ˜šœžœžœ˜J˜—Jšœ žœ ˜J˜šœžœ˜+J˜—šœ žœžœ+žœ˜GJ˜—š œžœžœ žœ žœ˜7J˜—šŸœžœžœžœ˜%Jšœ/™/J™6J™—šŸœžœ žœ˜:J™=J˜—šŸœžœžœžœ˜/Jšœ:™:J˜—šŸœžœžœžœ˜5Jšœ*™*J˜—šŸœžœžœ ˜;Jšœ+™+Jšœ-™-J˜—šŸ œžœžœ ˜;JšœZ™ZJ˜—šŸœžœžœžœ˜1J˜—šŸ œžœžœžœ˜6J˜—šŸ œžœžœ˜AJ˜—šŸœžœ$žœžœ˜;J™AJ˜—šŸœžœ$žœ˜@Jšœ,™,Jšœ.™.J˜—šŸœžœ$žœ˜@J™?J˜—šŸ œžœ$žœ˜DJšœ5™5Jšœ.™.J˜—šŸœžœžœžœ˜HJšœ>™>J™—šŸœžœ!žœ œ˜IJšœ™J™—šŸœžœžœ žœ˜0J˜—š Ÿœžœžœžœžœ˜8J˜—J™^J˜šŸœžœ žœ˜!Jš œžœ žœ žœžœžœ˜C—šŸœžœ žœ˜!Jšœžœžœžœ žœ žœžœžœ˜PJ˜—šŸ œžœ ˜Jšœžœ˜Jšžœžœ˜ —šŸ œžœ ˜Jš œžœ žœ žœžœžœ˜BJšžœžœ˜ —šŸ œžœ ˜Jšœžœžœžœ žœ žœžœžœ˜OJšžœžœ˜ J™^J™—šŸœžœ ˜!Jšœžœ˜Jšžœ ˜—šŸœžœ ˜!Jš œžœ žœ žœžœžœ˜BJšžœ ˜—šŸœžœ ˜!Jšœžœžœžœ žœ žœžœžœ˜OJšžœ ˜J™—J˜šŸœžœžœžœ žœžœžœ˜IJ™MJ™—šŸœžœžœžœ˜$J™#J™—Jšžœ˜J˜—…— È‚