mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-10-31 04:21:36 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			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 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.
 | |
| 
 | 
