/******************************************************************* * * tttables.h 1.1 * * TrueType Tables structures and handling (specification). * * Copyright 1996-1999 by * 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. * ******************************************************************/ #ifndef TTTABLES_H #define TTTABLES_H #include "ttconfig.h" #include "tttypes.h" #ifdef __cplusplus extern "C" { #endif /***********************************************************************/ /* */ /* TrueType Table Types */ /* */ /***********************************************************************/ /* TrueType Collection Header */ struct TTTCHeader_ { ULong Tag; TT_Fixed version; ULong DirCount; PULong TableDirectory; }; typedef struct TTTCHeader_ TTTCHeader; typedef TTTCHeader* PTTCHeader; /* TrueType Table Directory type */ struct TTableDir_ { TT_Fixed version; /* should be 0x10000 */ UShort numTables; /* number of tables */ UShort searchRange; /* These parameters are only used */ UShort entrySelector; /* for a dichotomy search in the */ UShort rangeShift; /* directory. We ignore them. */ }; typedef struct TTableDir_ TTableDir; typedef TTableDir* PTableDir; /* The 'TableDir' is followed by 'numTables' TableDirEntries */ struct TTableDirEntry_ { ULong Tag; /* table type */ ULong CheckSum; /* table checksum */ ULong Offset; /* table file offset */ ULong Length; /* table length */ }; typedef struct TTableDirEntry_ TTableDirEntry; typedef TTableDirEntry* PTableDirEntry; /* 'cmap' tables */ struct TCMapDir_ { UShort tableVersionNumber; UShort numCMaps; }; typedef struct TCMapDir_ TCMapDir; typedef TCMapDir* PCMapDir; struct TCMapDirEntry_ { UShort platformID; UShort platformEncodingID; Long offset; }; typedef struct TCMapDirEntry_ TCMapDirEntry; typedef TCMapDirEntry* PCMapDirEntries; /* 'maxp' Maximum Profiles table */ struct TMaxProfile_ { TT_Fixed version; UShort numGlyphs, maxPoints, maxContours, maxCompositePoints, maxCompositeContours, maxZones, maxTwilightPoints, maxStorage, maxFunctionDefs, maxInstructionDefs, maxStackElements, maxSizeOfInstructions, maxComponentElements, maxComponentDepth; }; typedef struct TMaxProfile_ TMaxProfile; typedef TMaxProfile* PMaxProfile; /* table "gasp" */ #define GASP_GRIDFIT 0x01 #define GASP_DOGRAY 0x02 struct GaspRange_ { UShort maxPPEM; UShort gaspFlag; }; typedef struct GaspRange_ GaspRange; struct TGasp_ { UShort version; UShort numRanges; GaspRange* gaspRanges; }; typedef struct TGasp_ TGasp; /* table "head" - now defined in freetype.h */ /* table "hhea" - now defined in freetype.h */ /* tables "HMTX" and "VMTX" */ struct TLongMetrics_ { UShort advance; Short bearing; }; typedef struct TLongMetrics_ TLongMetrics, *PLongMetrics; typedef Short TShortMetrics, *PShortMetrics; /* 'loca' location table type */ struct TLoca_ { UShort Size; PStorage Table; }; typedef struct TLoca_ TLoca; /* table "name" */ struct TNameRec_ { UShort platformID; UShort encodingID; UShort languageID; UShort nameID; UShort stringLength; UShort stringOffset; /* this last field is not defined in the spec */ /* but used by the FreeType engine */ PByte string; }; typedef struct TNameRec_ TNameRec; struct TName_Table_ { UShort format; UShort numNameRecords; UShort storageOffset; TNameRec* names; PByte storage; }; typedef struct TName_Table_ TName_Table; #ifdef __cplusplus } #endif #endif /* TTTABLES_H */ /* END */