DIRECTORY Atom USING [PropList], BasicTime USING [GMT, nullGMT], FS USING [OpenFile], II USING [Context], IIFont USING [BYTE, CorrectionType, Extents, Font, XChar], IITransformation USING [Transformation], Rope USING [ROPE], Vector2 USING [VEC]; IITypeface: CEDAR DEFINITIONS ~ BEGIN VEC: TYPE ~ Vector2.VEC; ROPE: TYPE ~ Rope.ROPE; BYTE: TYPE ~ IIFont.BYTE; XChar: TYPE ~ IIFont.XChar; CorrectionType: TYPE ~ IIFont.CorrectionType; Extents: TYPE ~ IIFont.Extents; Font: TYPE ~ IIFont.Font; Transformation: TYPE ~ IITransformation.Transformation; Typeface: TYPE ~ REF TypefaceRep; TypefaceRep: TYPE ~ RECORD [ class: TypefaceClass, data: REF, name: ROPE _ NIL, created: BasicTime.GMT _ BasicTime.nullGMT, info: InfoTable _ NIL, -- for character set 0 propList: Atom.PropList _ NIL ]; TypefaceClass: TYPE ~ REF TypefaceClassRep; TypefaceClassRep: TYPE ~ RECORD [ type: ATOM, Contains: PROC [self: Typeface, char: XChar] RETURNS [BOOL], NextChar: PROC [self: Typeface, char: XChar] RETURNS [next: XChar], Escapement: PROC [self: Typeface, char: XChar] RETURNS [VEC], Amplified: PROC [self: Typeface, char: XChar] RETURNS [BOOL], Correction: PROC [self: Typeface, char: XChar] RETURNS [CorrectionType], BoundingBox: PROC [self: Typeface, char: XChar] RETURNS [Extents], FontBoundingBox: PROC [self: Typeface] RETURNS [Extents], Ligature: PROC [self: Typeface, char, successor: XChar] RETURNS [XChar], NextLigature: PROC [self: Typeface, char, successor: XChar] RETURNS [XChar], Kern: PROC [self: Typeface, char, successor: XChar] RETURNS [VEC], NextKern: PROC [self: Typeface, char, successor: XChar] RETURNS [XChar], Mask: PROC [self: Typeface, char: XChar, context: II.Context], propList: Atom.PropList _ NIL ]; InfoTable: TYPE ~ REF InfoTableRep; InfoTableRep: TYPE ~ PACKED ARRAY BYTE OF Info; Info: TYPE ~ RECORD [ exists: BOOL _ FALSE, amplified: BOOL _ FALSE, correction: CorrectionType _ none, hasKerns: BOOL _ FALSE, hasLigatures: BOOL _ FALSE, spare1, spare2: BOOL _ FALSE ]; FindTypeface: PROC [name: ROPE] RETURNS [Typeface]; MakeFont: PROC [typeface: Typeface, m: Transformation] RETURNS [Font]; MaskChar: PROC [font: Font, char: XChar, context: II.Context]; CreateProc: TYPE ~ PROC [file: FS.OpenFile] RETURNS [Typeface]; Register: PROC [extension: ROPE, create: CreateProc]; FetchCreator: PROC [extension: ROPE] RETURNS [CreateProc]; GenericCreator: TYPE ~ REF GenericCreatorRep; GenericCreatorRep: TYPE ~ RECORD [ data: REF, proc: GenericCreatorProc, priority: INTEGER _ 0 ]; GenericCreatorProc: TYPE ~ PROC [self: GenericCreator, name: ROPE] RETURNS [Typeface]; RegisterGenericCreator: PROC [genericCreator: GenericCreator]; END. (ImagerTypeface.mesa Copyright Σ 1985, 1986 by Xerox Corporation. All rights reserved. Doug Wyatt, May 7, 1986 4:40:40 pm PDT Michael Plass, November 21, 1986 12:33:15 pm PST This is considered to be a private interface, although it will be useful for certain clients that need to create new flavors of fonts and/or to get at the insides of fonts. Finds the typeface with the specified universal name. Makes a font from the Typeface and a Transformation Masks a single character; does not cache Registers a creation procedure for files with the specified file name extension ("ks", "sd", etc.). Generic creators provide the ability to make typefaces that are a computed function of the name; for example, the name might contain real-valued parameters which determine the shape of the font. The registered genericCreators are called in priority order, each getting a chance to claim the typeface by returning a non-NIL value. In case of a priority clash, the last one registered wins. The normal creation procedure effectively has a priority of 1/2. Κƒ˜codešœ™KšœB™BK™&™0K™——KšœΟbœŠ™¬K™šΟk ˜ Kšœžœ ˜Kšœ žœžœ ˜Kšžœžœ ˜Kšœžœ ˜Kšœžœžœ(˜:Kšœžœ˜(Kšœžœžœ˜Kšœžœžœ˜—K˜KšΠbl œžœž ˜Kšœž˜˜Kšžœžœ žœ˜Kšžœžœžœ˜K˜Kšžœžœ žœ˜Kšœžœ˜Kšœžœ˜-Kšœ žœ˜Kšœžœ˜Kšœžœ#˜7K˜Kšœ žœžœ ˜!šœ žœžœ˜K˜Kšœžœ˜ Kšœžœžœ˜Kšœžœ˜+KšœžœΟc˜-Kšœž˜K˜K˜—Kšœžœžœ˜+šœžœžœ˜"Kšœžœ˜ KšΟnœžœžœžœ˜Kšœž˜K˜K˜—K˜Kšœ žœžœ˜#Kš œžœžœžœžœžœ˜/šœžœžœ˜Kšœžœžœ˜Kšœ žœžœ˜Kšœ"˜"Kšœ žœžœ˜Kšœžœžœ˜Kšœžœž˜Kšœ˜K˜—K˜š‘ œžœžœžœ ˜3K™5K™—š‘œžœ)žœ˜FKšœ3™3K™—š‘œžœ0˜>K™(—K˜š œ žœžœžœ žœ ˜?K˜—š‘œžœ žœ˜5K™cK™—š‘ œžœ žœžœ˜:K˜—K˜Kšœžœžœ˜-šœžœžœ˜"Jšœžœ˜ Jšœ˜Jšœ žœ˜Kšœ˜K˜—š œžœžœžœžœ ˜VK˜—š‘œžœ"˜>Kšœΐžœ…™ΘK˜—K˜—Kšžœ˜—…— h