0,0 → 1,215 |
/******************************************************************* |
* |
* 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 */ |