<<>> <> <> <> <<>> <> <<>> DIRECTORY CardTab USING [Ref], ImagerBox USING [Extents], ImagerFDTypeface, ImagerTransformation USING [Transformation], Prop USING [PropList], Rope USING [ROPE], Vector2 USING [VEC]; ImagerFDBuild: CEDAR DEFINITIONS = BEGIN AmplCorr: TYPE = ImagerFDTypeface.AmplCorr; TypefaceCell: TYPE = ImagerFDTypeface.TypefaceCell; TransformationSeq: TYPE = ImagerFDTypeface.TransformationSeq; Transformation: TYPE = ImagerTransformation.Transformation; CharacterDescriptions: TYPE = REF CharacterDescriptionCell; CharacterDescriptionCell: TYPE = RECORD [ -- a list cell for LIST OF CharacterDescription first: CharacterDescription, rest: CharacterDescriptions ]; CharacterDescription: TYPE = REF CharacterDescriptionRep; CharacterDescriptionRep: TYPE = RECORD [ <> typefaceCell: TypefaceCell, charToDevice: Transformation, -- NIL means resolution-independent xcCodeDelta: INT, -- Add to get translated code bits: AmplCorr, escapement: Vector2.VEC, extents: ImagerBox.Extents, placement: Transformation, -- NIL means identity propList: Prop.PropList ¬ NIL <> <<$centerX, $centerY, $superscriptX, $subscriptX, $superscriptY, $subscriptY, etc.>> ]; CDSTable: TYPE = CardTab.Ref; -- indexed by character code, value is CharacterDescriptions FDTable: TYPE = REF FDTableRep; FDTableRep: TYPE = RECORD [ cardTab: CDSTable, propList: Prop.PropList ¬ NIL, charToDeviceTransformations: TransformationSeq ¬ NIL -- filled in by Canonicalize ]; Create: PROC RETURNS [FDTable]; Insert: PROC [fdTable: FDTable, code: CARD, cd: CharacterDescriptionRep]; Write: PROC [fdTable: FDTable, filename: Rope.ROPE]; <> Read: PROC [filename: Rope.ROPE] RETURNS [FDTable]; <> <> <> <<>> FetchList: PROC [fdTable: FDTable, code: CARD] RETURNS [CharacterDescriptions]; StoreList: PROC [fdTable: FDTable, code: CARD, cds: CharacterDescriptions]; Canonicalize: PROC [fdTable: FDTable]; <> <> <> Conflict: SIGNAL [charCode: CARD, cds: CharacterDescriptions] RETURNS [CharacterDescription]; -- raised by Canonicalize (and Write) when there are multiple, conflicting descriptions for the same character code. FDTypefaceDataFromCanonicalizedFDTable: PROC [fdTable: FDTable] RETURNS [ImagerFDTypeface.Data]; <> <<>> FDTableFromFDTypefaceData: PROC [data: ImagerFDTypeface.Data] RETURNS [FDTable]; <<>> WriteFDTypefaceData: PROC [data: ImagerFDTypeface.Data, filename: Rope.ROPE]; <> END.