You've already forked lazarus-ccr
248 lines
7.4 KiB
ObjectPascal
248 lines
7.4 KiB
ObjectPascal
![]() |
(*******************************************************************
|
||
|
*
|
||
|
* TTTables.Pas 1.2
|
||
|
*
|
||
|
* TrueType Tables declarations
|
||
|
*
|
||
|
* Copyright 1996 David Turner, Robert Wilhelm and Werner Lemberg
|
||
|
*
|
||
|
* This file is part of the FreeType project, and may only be used
|
||
|
* modified and distributed under the terms of the FreeType project
|
||
|
* license, LICENSE.TXT. By continuing to use, modify or distribute
|
||
|
* this file you indicate that you have read the license and
|
||
|
* understand and accept it fully.
|
||
|
*
|
||
|
*
|
||
|
* Difference between 1.1 and 1.2 :
|
||
|
*
|
||
|
* - TTTables now only contains the declarations of the
|
||
|
* TrueType tables.
|
||
|
*
|
||
|
* - Instance, Resident and Execution context declarations
|
||
|
* were moved to TTObjs
|
||
|
*
|
||
|
* - Tables loaders were moved to the new TTLoad component
|
||
|
*
|
||
|
******************************************************************)
|
||
|
|
||
|
Unit TTTables;
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses FreeType, TTTypes;
|
||
|
|
||
|
(***************************************************************************)
|
||
|
(* *)
|
||
|
(* TrueType Table Types *)
|
||
|
(* *)
|
||
|
(***************************************************************************)
|
||
|
|
||
|
type
|
||
|
(* TrueType collection header *)
|
||
|
PTTCHeader = ^TTTCHeader;
|
||
|
TTTCHeader = record
|
||
|
Tag : Long;
|
||
|
version : TT_Fixed;
|
||
|
DirCount : ULong;
|
||
|
TableDirectory : PStorage;
|
||
|
end;
|
||
|
|
||
|
(* TrueType Table Directory type *)
|
||
|
PTableDir = ^TTableDir;
|
||
|
TTableDir = Record
|
||
|
version : TT_Fixed; (* should be $10000 *)
|
||
|
numTables : UShort; (* Tables number *)
|
||
|
|
||
|
searchRange, (* These parameters are only used *)
|
||
|
entrySelector, (* for a dichotomy search in the *)
|
||
|
rangeShift : UShort; (* directory. We ignore them *)
|
||
|
end;
|
||
|
|
||
|
(* The 'TableDir' is followed by 'numTables' TableDirEntries *)
|
||
|
|
||
|
TTableDirEntry = Record
|
||
|
Tag : Long; (* table type *)
|
||
|
CheckSum : Long; (* table Checksum *)
|
||
|
Offset : Long; (* Table file offset *)
|
||
|
Length : Long; (* Table length *)
|
||
|
end;
|
||
|
|
||
|
TTableDirEntries = array[0..100] of TTableDirEntry;
|
||
|
PTableDirEntries = ^TTableDirEntries;
|
||
|
|
||
|
(* 'cmap' tables *)
|
||
|
|
||
|
TCMapDir = record
|
||
|
tableVersionNumber : UShort;
|
||
|
numCMaps : UShort;
|
||
|
end;
|
||
|
|
||
|
TCMapDirEntry = record
|
||
|
platformID : UShort;
|
||
|
platformEncodingID : UShort;
|
||
|
offset : Long;
|
||
|
end;
|
||
|
|
||
|
TCMapDirEntries = array[0..10] of TCMapDirEntry;
|
||
|
PCMapDirEntries = ^TCMapDirEntries;
|
||
|
|
||
|
(* table "maxp" of Maximum Profiles' *)
|
||
|
|
||
|
TMaxProfile = Record
|
||
|
Version : TT_Fixed;
|
||
|
numGlyphs,
|
||
|
maxPoints,
|
||
|
maxContours,
|
||
|
maxCompositePoints,
|
||
|
maxCompositeContours,
|
||
|
maxZones,
|
||
|
maxTwilightPoints,
|
||
|
maxStorage,
|
||
|
maxFunctionDefs,
|
||
|
maxInstructionDefs,
|
||
|
maxStackElements,
|
||
|
|
||
|
maxSizeOfInstructions,
|
||
|
maxComponentElements,
|
||
|
maxComponentDepth : UShort;
|
||
|
end;
|
||
|
|
||
|
(* table "gasp" *)
|
||
|
|
||
|
const
|
||
|
Gasp_GridFit = 1;
|
||
|
Gasp_DoGray = 2;
|
||
|
|
||
|
type
|
||
|
TGaspRange = record
|
||
|
maxPPEM : UShort;
|
||
|
gaspFlag : UShort;
|
||
|
end;
|
||
|
|
||
|
TGaspRanges = array[0..9] of TGaspRange;
|
||
|
PGaspRanges = ^TGaspRanges;
|
||
|
|
||
|
TGasp = record
|
||
|
version : UShort;
|
||
|
numRanges : UShort;
|
||
|
gaspRanges : PGaspRanges;
|
||
|
end;
|
||
|
|
||
|
(* table "HMTX" *)
|
||
|
|
||
|
TLongMetrics = record
|
||
|
advance : UShort;
|
||
|
bearing : Short;
|
||
|
end;
|
||
|
|
||
|
TTableLongMetrics = array[0..255] of TLongMetrics;
|
||
|
PTableLongMetrics = ^TTableLongMetrics;
|
||
|
|
||
|
TShortMetrics = Short;
|
||
|
TTableShortMetrics = array[0..255] of TShortMetrics;
|
||
|
PTableShortMetrics = ^TTableShortMetrics;
|
||
|
|
||
|
{
|
||
|
(* table "OS/2" *)
|
||
|
|
||
|
TOS2_Table = record
|
||
|
version : UShort; (* $0001 *)
|
||
|
xAvgCharWidth : Short;
|
||
|
usWeightClass : UShort;
|
||
|
usWidthClass : UShort;
|
||
|
fsType : Short;
|
||
|
ySubscriptXSize : Short;
|
||
|
ySubscriptYSize : Short;
|
||
|
ySubScriptXOffset : Short;
|
||
|
ySubscriptYOffset : Short;
|
||
|
ySuperscriptXSize : Short;
|
||
|
ySuperscriptYSize : Short;
|
||
|
ySuperscriptXOffset : Short;
|
||
|
ySuperscriptYOffset : Short;
|
||
|
yStrikeoutSize : Short;
|
||
|
yStrikeoutPosition : Short;
|
||
|
sFamilyClass : Short;
|
||
|
panose : array[0..9] of Byte;
|
||
|
ulUnicodeRange1 : ULong; (* bits 0-31 *)
|
||
|
ulUnicodeRange2 : ULong; (* bits 32-63 *)
|
||
|
ulUnicodeRange3 : ULong; (* bits 64-95 *)
|
||
|
ulUnicodeRange4 : ULong; (* bits 96-127 *)
|
||
|
achVendID : array[0..3] of Byte;
|
||
|
fsSelection : UShort;
|
||
|
usFirstCharIndex : UShort;
|
||
|
usLastCharIndex : UShort;
|
||
|
sTypoAscender : UShort;
|
||
|
sTypoDescender : UShort;
|
||
|
sTypoLineGap : UShort;
|
||
|
usWinAscent : UShort;
|
||
|
usWinDescent : UShort;
|
||
|
|
||
|
(* only version 1 tables *)
|
||
|
ulCodePageRange1 : ULong;
|
||
|
ulCodePageRange2 : ULong;
|
||
|
end;
|
||
|
|
||
|
(* table "post" *)
|
||
|
|
||
|
TPostscript = record
|
||
|
FormatType : TT_Fixed;
|
||
|
italicAngle : TT_Fixed;
|
||
|
underlinePosition : Short;
|
||
|
underlineThickness : Short;
|
||
|
isFixedPitch : ULong;
|
||
|
minMemType42 : ULong;
|
||
|
maxMemType42 : ULong;
|
||
|
minMemType1 : ULong;
|
||
|
maxMemType1 : ULong;
|
||
|
end;
|
||
|
}
|
||
|
(* table "name" *)
|
||
|
|
||
|
(* table "name" *)
|
||
|
|
||
|
TName_Record = record
|
||
|
|
||
|
platformID : UShort;
|
||
|
encodingID : UShort;
|
||
|
languageID : UShort;
|
||
|
nameID : UShort;
|
||
|
length : UShort;
|
||
|
offset : UShort;
|
||
|
end;
|
||
|
PName_Record = ^TName_Record;
|
||
|
TName_Records = array[0..0] of TName_Record;
|
||
|
PName_Records = ^TName_Records;
|
||
|
|
||
|
|
||
|
PName_Table = ^TName_Table;
|
||
|
TName_Table = record
|
||
|
|
||
|
format : UShort;
|
||
|
numNameRecords : UShort;
|
||
|
storageOffset : UShort;
|
||
|
names : PName_Records;
|
||
|
storage : PByte;
|
||
|
end;
|
||
|
|
||
|
|
||
|
PHdmx_Record = ^THdmx_Record;
|
||
|
THdmx_Record = record
|
||
|
ppem : Byte;
|
||
|
max_width : Byte;
|
||
|
widths : PByte;
|
||
|
end;
|
||
|
|
||
|
THdmx_Records = array[0..19] of THdmx_Record;
|
||
|
PHdmx_Records = ^THdmx_Records;
|
||
|
|
||
|
THdmx = record
|
||
|
version : UShort;
|
||
|
num_records : Short;
|
||
|
records : PHdmx_Records;
|
||
|
end;
|
||
|
|
||
|
implementation
|
||
|
|
||
|
end.
|
||
|
|