FreeType 1.31.1
This commit is contained in:
247
pascal/lib/tttables.pas
Normal file
247
pascal/lib/tttables.pas
Normal file
@@ -0,0 +1,247 @@
|
||||
(*******************************************************************
|
||||
*
|
||||
* 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.
|
||||
|
||||
Reference in New Issue
Block a user