-- texfontdefs.mesa -- last edited by Doug Wyatt, January 19, 1980 3:35 PM DIRECTORY TexDefs: FROM "TexDefs", TexGlueDefs: FROM "TexGlueDefs", TfmDefs: FROM "TfmDefs"; TexFontDefs: DEFINITIONS = BEGIN OPEN TexDefs; FontProblem: SIGNAL; -- some inconsistency detected CharWd,CharHt,CharDp,CharIc: PROCEDURE[FChar] RETURNS[Dimn]; LigType: TYPE = {none, lig, krn}; LigInfo: TYPE = RECORD [ SELECT COMPUTED LigType FROM none => NULL, lig => [char: Char], krn => [kern: Dimn], ENDCASE ]; Ligature: PROCEDURE[FChar, Char] RETURNS[type: LigType, info: LigInfo]; LargerType: TYPE = {none, nextlarger, extensible}; LargerInfo: TYPE = RECORD [ SELECT COMPUTED LargerType FROM none => NULL, -- there is no larger character nextlarger => [next: Char], -- code of the next larger character extensible => [index: ExtInfo], -- index into extension info ENDCASE ]; ExtInfo: TYPE = RECORD[font: Font, index: [0..177B]]; NextLarger: PROCEDURE[FChar] RETURNS[type: LargerType, info: LargerInfo]; ExtChar: TYPE = RECORD[present: BOOLEAN, char: FChar]; ExtPart: TYPE = {top,mid,bot,ext}; ExtArray: TYPE = ARRAY ExtPart OF ExtChar; ExtensionInfo: PROCEDURE[ExtInfo] RETURNS[ExtArray]; FontHdr: PROCEDURE[Font] RETURNS[POINTER TO TfmDefs.FontHeader]; FontGlue: PROCEDURE[Font] RETURNS[TexGlueDefs.GluePtr]; FontParType: TYPE = {slant,xheight,quad,extraspace}; FontPar: PROCEDURE[Font, FontParType] RETURNS[Dimn]; -- works for any font SyParType: TYPE = {mathspace,num1,num2,num3,denom1,denom2, sup1,sup2,sup3,sub1,sub2,supdrop,subdrop,delim1,delim2,axisheight}; SyPar: PROCEDURE[Font, SyParType] RETURNS[Dimn]; -- symbol fonts only ExParType: TYPE = {defaultrulethickness,bigopspacing1, bigopspacing2,bigopspacing3,bigopspacing4,bigopspacing5}; ExPar: PROCEDURE[Font, ExParType] RETURNS[Dimn]; -- mathex fonts only ReadFontInfo: PROCEDURE[name: STRING, f: Font]; FontDefined: PROCEDURE[Font] RETURNS[BOOLEAN]; TexFont: PROGRAM; END.