/* TryeType header / table */ typedef struct { unsigned long version; unsigned short numTables; unsigned short searchRange; unsigned short entrySelector; unsigned short rangeShift; } TTF_HEADER; typedef struct { unsigned long tag; unsigned long checkSum; unsigned long offset; unsigned long length; } TTF_TBLDIR; /* cmap index */ typedef struct { unsigned short PlatformId; unsigned short PlatformSpecificId; unsigned long offset; } CMAP_Platform; typedef struct { unsigned short version; unsigned short numTables; CMAP_Platform platform[1]; } CMAP_INDEX; /* common region of cmap format 0, 2, 4 */ typedef struct { unsigned short format; unsigned short length; unsigned short version; } CMAP_Common; /* cmap format 0 */ typedef struct { CMAP_Common c; char *glyphIdArray; } CMAP_Format0; /* cmap format 2 */ typedef struct { unsigned short firstCode; unsigned short entryCount; short idDelta; unsigned short idRangeOffset; } CMAP2_subHeader; typedef struct { CMAP_Common c; unsigned short *subHeaderKeys; CMAP2_subHeader *subHeaders; unsigned short *glyphIndexArray; } CMAP_Format2; /* cmap format 4 */ typedef struct { unsigned short segCountX2; unsigned short searchRange; unsigned short entrySelector; unsigned short rangeShift; } CMAP4_fix; typedef struct { CMAP_Common c; CMAP4_fix f; unsigned short *endCount; unsigned short reservedPad; unsigned short *startCount; unsigned short *idDelta; unsigned short *idRangeOffset; unsigned short *glyphIdArray; } CMAP_Format4; /* (unified) */ typedef union { CMAP_Common com; CMAP_Format0 fmt0; CMAP_Format2 fmt2; CMAP_Format4 fmt4; } CMAP_Format; /* name record */ typedef struct { unsigned short PlatformId; unsigned short PlatformSpecificId; unsigned short LanguageId; unsigned short NameId; unsigned short length; unsigned short offset; } NAME_RECORD; typedef struct { unsigned short format; unsigned short numTables; unsigned short offset; NAME_RECORD NameRecord[1]; } NAME_INDEX; /* magic numbers */ #define CMAP 0x636d6170 #define NAME 0x6e616d65 /* misc. */ #define Platform_APPLEUnicode 0 #define Platform_Macintosh 1 #define Platform_ISO 2 #define Platform_Microsoft 3 #define cmap_MS_encodeID_Symbol 0 #define cmap_MS_encodeID_Unicode 1 #define cmap_MS_encodeID_ShiftJIS 2 #define cmap_MS_encodeID_Big5 3 #define cmap_MS_encodeID_PRC 4 #define cmap_MS_encodeID_Wansung 5 #define cmap_MS_encodeID_Johab 6