boot3/Interfaces/PInterfaces/Fonts.p
Elliot Nunn 5b0f0cc134 Bring in CubeE sources
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included.

The Tools directory, containing mostly junk, is also excluded.
2017-12-26 10:02:57 +08:00

270 lines
7.1 KiB
OpenEdge ABL

{
Created: Saturday, July 27, 1991 at 9:19 PM
Fonts.p
Pascal Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1985-1991
All rights reserved
Change History (most recent first):
<9> 4/15/92 DCL For New Inside Mac: Moved GetDefFontSize, GetSysFont, and
GetAppFont from Script to Fonts.
<8> 7/30/91 JL Updated Copyright.
<7> 1/29/91 JL Need to include Quickdraw for Style.
<6> 1/27/91 LN Checked in Database generate file from DSG. changed parameter
name in GetFontName from name to theName to match .h file.
<5> 1/5/91 JDR (dba) Changed useSpline to outlinePreferred, glyphCount to
byteCount and turnOffLineHeight to preserveGlyph.
<4> 12/14/90 dba <JDR> add calls for outline fonts
<3> 5/18/90 JAL Added Quickdraw Inclusion.
}
{$IFC UNDEFINED UsingIncludes}
{$SETC UsingIncludes := 0}
{$ENDC}
{$IFC NOT UsingIncludes}
UNIT Fonts;
INTERFACE
{$ENDC}
{$IFC UNDEFINED UsingFonts}
{$SETC UsingFonts := 1}
{$I+}
{$SETC FontsIncludes := UsingIncludes}
{$SETC UsingIncludes := 1}
{$IFC UNDEFINED UsingTypes}
{$I $$Shell(PInterfaces)Types.p}
{$ENDC}
{$IFC UNDEFINED UsingQuickdraw}
{$I $$Shell(PInterfaces)Quickdraw.p}
{$ENDC}
{$SETC UsingIncludes := FontsIncludes}
CONST
systemFont = 0;
applFont = 1;
newYork = 2;
geneva = 3;
monaco = 4;
venice = 5;
london = 6;
athens = 7;
sanFran = 8;
toronto = 9;
cairo = 11;
losAngeles = 12;
times = 20;
helvetica = 21;
courier = 22;
symbol = 23;
mobile = 24;
commandMark = 17;
checkMark = 18;
diamondMark = 19;
appleMark = 20;
propFont = 36864;
prpFntH = 36865;
prpFntW = 36866;
prpFntHW = 36867;
fixedFont = 45056;
fxdFntH = 45057;
fxdFntW = 45058;
fxdFntHW = 45059;
fontWid = 44208;
TYPE
FMInput = PACKED RECORD
family: INTEGER;
size: INTEGER;
face: Style;
needBits: BOOLEAN;
device: INTEGER;
numer: Point;
denom: Point;
END;
FMOutPtr = ^FMOutput;
FMOutput = PACKED RECORD
errNum: INTEGER;
fontHandle: Handle;
bold: Byte;
italic: Byte;
ulOffset: Byte;
ulShadow: Byte;
ulThick: Byte;
shadow: Byte;
extra: SignedByte;
ascent: Byte;
descent: Byte;
widMax: Byte;
leading: SignedByte;
unused: Byte;
numer: Point;
denom: Point;
END;
FontRec = RECORD
fontType: INTEGER; {font type}
firstChar: INTEGER; {ASCII code of first character}
lastChar: INTEGER; {ASCII code of last character}
widMax: INTEGER; {maximum character width}
kernMax: INTEGER; {negative of maximum character kern}
nDescent: INTEGER; {negative of descent}
fRectWidth: INTEGER; {width of font rectangle}
fRectHeight: INTEGER; {height of font rectangle}
owTLoc: INTEGER; {offset to offset/width table}
ascent: INTEGER; {ascent}
descent: INTEGER; {descent}
leading: INTEGER; {leading}
rowWords: INTEGER; {row width of bit image / 2 }
END;
FMetricRec = RECORD
ascent: Fixed; {base line to top}
descent: Fixed; {base line to bottom}
leading: Fixed; {leading between lines}
widMax: Fixed; {maximum character width}
wTabHandle: Handle; {handle to font width table}
END;
WidEntry = RECORD
widStyle: INTEGER; {style entry applies to}
END;
WidTable = RECORD
numWidths: INTEGER; {number of entries - 1}
END;
AsscEntry = RECORD
fontSize: INTEGER;
fontStyle: INTEGER;
fontID: INTEGER; {font resource ID}
END;
FontAssoc = RECORD
numAssoc: INTEGER; {number of entries - 1}
END;
StyleTable = RECORD
fontClass: INTEGER;
offset: LONGINT;
reserved: LONGINT;
indexes: ARRAY [0..47] OF SignedByte;
END;
NameTable = RECORD
stringCount: INTEGER;
baseFontName: Str255;
END;
KernPair = RECORD
kernFirst: CHAR; {1st character of kerned pair}
kernSecond: CHAR; {2nd character of kerned pair}
kernWidth: INTEGER; {kerning in 1pt fixed format}
END;
KernEntry = RECORD
kernLength: INTEGER; {length of this entry}
kernStyle: INTEGER; {style the entry applies to}
END;
KernTable = RECORD
numKerns: INTEGER; {number of kerning entries}
END;
WidthTable = PACKED RECORD
tabData: ARRAY [1..256] OF Fixed; {character widths}
tabFont: Handle; {font record used to build table}
sExtra: LONGINT; {space extra used for table}
style: LONGINT; {extra due to style}
fID: INTEGER; {font family ID}
fSize: INTEGER; {font size request}
face: INTEGER; {style (face) request}
device: INTEGER; {device requested}
inNumer: Point; {scale factors requested}
inDenom: Point; {scale factors requested}
aFID: INTEGER; {actual font family ID for table}
fHand: Handle; {family record used to build up table}
usedFam: BOOLEAN; {used fixed point family widths}
aFace: Byte; {actual face produced}
vOutput: INTEGER; {vertical scale output value}
hOutput: INTEGER; {horizontal scale output value}
vFactor: INTEGER; {vertical scale output value}
hFactor: INTEGER; {horizontal scale output value}
aSize: INTEGER; {actual size of actual font used}
tabSize: INTEGER; {total size of table}
END;
FamRec = RECORD
ffFlags: INTEGER; {flags for family}
ffFamID: INTEGER; {family ID number}
ffFirstChar: INTEGER; {ASCII code of 1st character}
ffLastChar: INTEGER; {ASCII code of last character}
ffAscent: INTEGER; {maximum ascent for 1pt font}
ffDescent: INTEGER; {maximum descent for 1pt font}
ffLeading: INTEGER; {maximum leading for 1pt font}
ffWidMax: INTEGER; {maximum widMax for 1pt font}
ffWTabOff: LONGINT; {offset to width table}
ffKernOff: LONGINT; {offset to kerning table}
ffStylOff: LONGINT; {offset to style mapping table}
ffProperty: ARRAY [1..9] OF INTEGER; {style property info}
ffIntl: ARRAY [1..2] OF INTEGER; {for international use}
ffVersion: INTEGER; {version number}
END;
PROCEDURE InitFonts;
INLINE $A8FE;
PROCEDURE GetFontName(familyID: INTEGER;VAR name: Str255);
INLINE $A8FF;
PROCEDURE GetFNum(name: Str255;VAR familyID: INTEGER);
INLINE $A900;
FUNCTION RealFont(fontNum: INTEGER;size: INTEGER): BOOLEAN;
INLINE $A902;
PROCEDURE SetFontLock(lockFlag: BOOLEAN);
INLINE $A903;
FUNCTION FMSwapFont(inRec: FMInput): FMOutPtr;
INLINE $A901;
PROCEDURE SetFScaleDisable(fscaleDisable: BOOLEAN);
INLINE $A834;
PROCEDURE FontMetrics(theMetrics: FMetricRec);
INLINE $A835;
PROCEDURE SetFractEnable(fractEnable: BOOLEAN);
FUNCTION IsOutline(numer: Point;denom: Point): BOOLEAN;
INLINE $7000,$A854;
PROCEDURE SetOutlinePreferred(outlinePreferred: BOOLEAN);
INLINE $7001,$A854;
FUNCTION GetOutlinePreferred: BOOLEAN;
INLINE $7009,$A854;
FUNCTION OutlineMetrics(byteCount: INTEGER;textPtr: UNIV Ptr;numer: Point;
denom: Point;VAR yMax: INTEGER;VAR yMin: INTEGER;awArray: FixedPtr;lsbArray: FixedPtr;
boundsArray: RectPtr): OSErr;
INLINE $7008,$A854;
PROCEDURE SetPreserveGlyph(preserveGlyph: BOOLEAN);
INLINE $700A,$A854;
FUNCTION GetPreserveGlyph: BOOLEAN;
INLINE $700B,$A854;
FUNCTION FlushFonts: OSErr;
INLINE $700C,$A854;
FUNCTION GetDefFontSize: INTEGER;
INLINE $3EB8,$0BA8,$6604,$3EBC,$000C;
FUNCTION GetSysFont: INTEGER;
INLINE $3EB8,$0BA6;
FUNCTION GetAppFont: INTEGER;
INLINE $3EB8,$0984;
{$ENDC} { UsingFonts }
{$IFC NOT UsingIncludes}
END.
{$ENDC}