DIRECTORY Basics USING [BYTE], BasicTime USING [GMT, nullGMT], ImagerBox USING [Extents], ImagerTransformation USING [Transformation], Rope USING [ROPE], Vector2 USING [VEC]; ImagerFont: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; VEC: TYPE ~ Vector2.VEC; Transformation: TYPE ~ ImagerTransformation.Transformation; XChar: TYPE ~ MACHINE DEPENDENT RECORD [set: Basics.BYTE, code: Basics.BYTE]; nullXChar: XChar ~ [377B, 377B]; XCharProc: TYPE ~ PROC [char: XChar]; XStringProc: TYPE ~ PROC [charAction: XCharProc]; MapRope: PROC [rope: ROPE, start: INT _ 0, len: INT _ INT.LAST, charAction: XCharProc]; MapText: PROC [text: REF READONLY TEXT, start: NAT _ 0, len: NAT _ NAT.LAST, charAction: XCharProc]; UName: TYPE ~ REF UNameRep; -- canonicalized, like ATOMs UNameRep: TYPE ~ RECORD [name: ROPE, typeface: REF]; Font: TYPE ~ REF FontRep; -- canonicalized, like ATOMs FontRep: TYPE ~ RECORD [uName: UName, charToClient: Transformation]; Find: PROC [name: ROPE] RETURNS [Font]; Modify: PROC [font: Font, m: Transformation] RETURNS [Font]; Scale: PROC [font: Font, s: REAL] RETURNS [Font]; FindScaled: PROC [name: ROPE, s: REAL] RETURNS [Font]; Extents: TYPE ~ ImagerBox.Extents; -- RECORD [leftExtent, rightExtent, descent, ascent: REAL]; CorrectionType: TYPE ~ MACHINE DEPENDENT {mask(0), space(1), none(2), (3)}; Contains: PROC [font: Font, char: XChar] RETURNS [BOOL]; NextChar: PROC [font: Font, char: XChar] RETURNS [next: XChar]; Escapement: PROC [font: Font, char: XChar] RETURNS [VEC]; Amplified: PROC [font: Font, char: XChar] RETURNS [BOOL]; Correction: PROC [font: Font, char: XChar] RETURNS [CorrectionType]; BoundingBox: PROC [font: Font, char: XChar] RETURNS [Extents]; FontBoundingBox: PROC [font: Font] RETURNS [Extents]; Kern: PROC [font: Font, char, successor: XChar] RETURNS [VEC]; NextKern: PROC [font: Font, char, successor: XChar] RETURNS [XChar]; Ligature: PROC [font: Font, char, successor: XChar] RETURNS [XChar]; NextLigature: PROC [font: Font, char, successor: XChar] RETURNS [XChar]; StringEscapement: PROC [font: Font, string: XStringProc] RETURNS [VEC]; RopeEscapement: PROC [font: Font, rope: ROPE, start: INT _ 0, len: INT _ INT.LAST] RETURNS [VEC]; TextEscapement: PROC [font: Font, text: REF READONLY TEXT, start: NAT _ 0, len: NAT _ NAT.LAST] RETURNS [VEC]; StringBoundingBox: PROC [font: Font, string: XStringProc] RETURNS [Extents]; RopeBoundingBox: PROC [font: Font, rope: ROPE, start: INT _ 0, len: INT _ INT.LAST] RETURNS [Extents]; TextBoundingBox: PROC [font: Font, text: REF READONLY TEXT, start: NAT _ 0, len: NAT _ NAT.LAST] RETURNS [Extents]; END. ImagerFont.mesa Copyright c 1985, 1986 by Xerox Corporation. All rights reserved. Michael Plass, February 25, 1986 3:33:14 pm PST Doug Wyatt, January 23, 1986 5:20:31 pm PST Xerox characters and strings An XChar is a 16-bit Xerox character code. See the Xerox Character Code Standard. These assume the Xerox string encoding; they treat '\377 as an escape code. See the Xerox Character Code Standard, section 6, and the Interpress Standard, section 2.5.3. Fonts name is the universal name, with version part (see Interpress 3.0, section 4.9.2) e.g. "xerox/xc1-1-1-0/helvetica" typeface narrows to an ImagerTypeface.Typeface. charToClient transforms from character to client coordinates 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]]. Equivalent to Modify[Find[name], ImagerTransformation.Scale[s]]. Metrics Returns TRUE iff the character exists in the font. Returns next char in the font, or nullXChar. Call with nullXChar to get first char in font. Returns escapement vector for the character. Returns TRUE iff the character is an 'amplifying' character. Returns the type of correction, if any, for the character. Returns a true bounding box for the character mask (not necessarily as tight as possible). Returns a bounding box for all character bounding boxes superimposed. Returns kerning adjustment between char and successor, or [0, 0]. Returns next successor that kerns with char. Call with successor=nullXChar to get first one. Returns a ligature formed from char and successor, or nullXChar. Returns next successor that has a ligature with char, Call with successor=nullXChar to get first one. Κ!˜codešœ™Kšœ Οmœ7™BK™/K™+—K™šΟk ˜ Kšœžœžœ˜Kšœ žœžœ ˜Kšœ žœ ˜Kšœžœ˜,Kšœžœžœ˜Kšœžœžœ˜—K˜KšΠbl œžœž ˜šœž˜K˜Kšžœžœžœ˜Kšžœžœ žœ˜Kšœžœ'˜;—head™Kš œžœžœž œžœžœžœ˜Mšœ ˜ KšœR™R—K™šœ žœžœ˜%K˜—šœ žœžœ˜1K˜—K˜KšΟnœžœžœ žœ žœžœžœ˜Xš œžœžœžœžœ žœ žœžœžœ˜eKšœK™KK™]K˜——™Kšœžœžœ Οc˜8š œ žœžœžœ žœ˜4šœQ™QK™ —Kšœ/™/—K™Kšœžœžœ ‘˜6šœ žœžœ.˜DKšœ<™KšœZ™ZK˜—š œžœžœ ˜5KšœE™EK˜—K˜š œžœ&žœžœ˜>K™AK˜—š œžœ&žœ ˜DKšœ,™,Kšœ/™/K˜—š œžœ&žœ ˜DKšœ@™@K˜—š  œžœ&žœ ˜HKšœ5™5Kšœ/™/K˜—K˜š œžœ#žœžœ˜GK˜—š œžœžœ žœ žœžœžœžœžœ˜bK˜—š œžœžœžœžœ žœ žœžœžœžœžœ˜oK˜—K˜š œžœ#žœ ˜LK˜—š œžœžœ žœ žœžœžœžœ ˜gK˜—š œžœžœžœžœ žœ žœžœžœžœ ˜tK˜——K˜Kšžœ˜—…— Pq