?? tables.h
字號:
/* table.h -- define data structures for various ttf file internal tables * See Also: True Type Font Specification */#ifndef __TTF_TABLE_H#define __TTF_TABLE_H/* $Id: tables.h,v 1.2 1998/07/06 06:07:01 werner Exp $ *//* Offset Table: * Into the beginning of a True Type font file */typedef struct _OffsetTable{ Fixed version; USHORT numTables; USHORT searchRange; USHORT entrySelector; USHORT rangeShift;}OffsetTable, *OffsetTablePtr;/* Table Directory: * The directory to find each table in a True Type font file */typedef struct _TableDir{ ULONG tag; ULONG checksum; ULONG offset; ULONG length;}TableDir, *TableDirPtr;/* cmap: Character to Glyph Index Mapping Table * There are four kinds of cmap, format 0, 2, 4, and 6. They are defined * as follows */typedef struct{ BYTE glyphIndexArray[256];}CMAP0;typedef struct _subHeaders{ USHORT firstCode; USHORT entryCount; SHORT idDelta; USHORT idRangeOffset;}SubHeader, *SubHeaderPtr;typedef struct{ USHORT subHeaderKeys[256]; SubHeaderPtr subHeaders; USHORT *glyphIndexArray;}CMAP2;typedef struct{ USHORT segCountX2; USHORT searchRange; USHORT entrySelector; USHORT rangeShift; USHORT *endCount; USHORT reservedPad; USHORT *startCount; USHORT *idDelta; USHORT *idRangeOffset; USHORT *glyphIndexArray;}CMAP4;typedef struct{ USHORT firstCode; USHORT entryCount; USHORT *glyphIndexArray;}CMAP6;/* SubTable: one for each encoding scheme */typedef struct{ /* encoding table */ USHORT PlatformID; USHORT EncodingID; ULONG offset; USHORT format; USHORT length; USHORT version; union { CMAP0 *cmap0; CMAP2 *cmap2; CMAP4 *cmap4; CMAP6 *cmap6; } map;}SubTable, *SubTablePtr;typedef struct _cmap{ USHORT version; USHORT numberOfEncodings; SubTablePtr subTables; /* size = numberOfEncodings */}CMAP, *CMAPPtr;/* glyf: Glyph Data table * It is necessary to load "loca" table first to know where to load a specific * glyph; the "loca" table itself depends on "head" and "maxp" tables */typedef F2Dot14 SCALE;typedef struct{ F2Dot14 xscale; F2Dot14 yscale;}VECTOR;typedef struct{ F2Dot14 xscale; F2Dot14 scale01; F2Dot14 scale10; F2Dot14 yscale;}TENSOR;typedef struct{ SHORT args[2]; /* need reconsideration */ union { SCALE scale; VECTOR vector; TENSOR tensor; } transform;}CompositeData;typedef struct _component{ USHORT flags; USHORT glyphIndex; CompositeData data; struct _component *next, *previous; /* linked list used, no way to know * how many components in advance */}Component;typedef struct{ SHORT numberOfContours; FWord xMin; FWord yMin; FWord xMax; FWord yMax; /* simple glyph data */ USHORT *endPtsOfContours; /* size = numberOfContours */ USHORT instructionLength; BYTE *instructions; /* size = instructionLength */ BYTE *flags; /* size = the total # of x,y * coordinates, i.e. last number * of endPtsOfContour */ SHORT *xCoordinates; SHORT *yCoordinates; Component *comp; /* a pointer to a linked list of * composite components */}GLYF, *GLYFPtr;/* Flags for Coordinates */#define FLAGS_ON_CURVE 1#define FLAGS_X_SHORT_VECTOR 2#define FLAGS_Y_SHORT_VECTOR 4#define FLAGS_REPEAT 8#define FLAGS_X_SAME 0x10#define FLAGS_Y_SAME 0x20/* Flags for Composite Glyph */#define ARG_1_AND_2_ARE_WORDS 0x001#define ARGS_ARE_XY_VALUES 0x002#define ROUND_XY_TO_GRID 0x004#define WE_HAVE_A_SCALE 0x008#define RESERVE 0x010#define NO_OVERLAP 0x010#define MORE_COMPONENT 0x020#define WE_HAVE_AN_X_AND_Y_SCALE 0x040#define WE_HAVE_A_TWO_BY_TWO 0x080#define WE_HAVE_INSTRUCTIONS 0x100#define USE_MY_METRICS 0x200#define OVERLAP_COMPOUND 0x400 /* from Apple's TTF specs */typedef struct{ Fixed version; Fixed fontRevision; ULONG checkSumAdj; ULONG magicNumber; USHORT flags; USHORT unitsPerEm; BYTE created[8]; BYTE modified[8]; FWord xMin; FWord yMin; FWord xMax; FWord yMax; USHORT macStyle; USHORT lowestRecPPEM; SHORT fontDirectionHint; SHORT indexToLocFormat; /* 0 => ushort, 1 => ulong */ SHORT glyphDataFormat;}HEAD, *HEADPtr;#define FLAGS_Y_0 1#define FLAGS_X_0 2#define FLAGS_SIZE_DEP 4#define FLAGS_INT_PPEM 8#define FLAGS_ALT_WIDTH 0x10#define MAC_STYLE_BOLD 1#define MAC_STYLE_ITALIC 2#define FONT_DIR_MIX 0#define FONT_DIR_L2R 1#define FONT_DIR_L2R_NEUTRALS 2#define FONT_DIR_R2L -1#define FONT_DIR_R2L_NEUTRALS -2#define LOCA_OFFSET_SHORT 0#define LOCA_OFFSET_LONG 1typedef struct{ Fixed version; FWord Ascender; FWord Descender; FWord LineGap; uFWord advanceWidthMax; FWord minLeftSideBearing; FWord minRightSideBearing; FWord xMaxExtent; SHORT caretSlopeRise; SHORT caretSlopeRun; SHORT reserved[5]; SHORT metricDataFormat; USHORT numberOfHMetrics;}HHEA, *HHEAPtr;/* for a new created HMTX, one have to fill numberofHMetrics manually for * hhea */typedef struct _longHorMetric{ uFWord advanceWidth; FWord lsb;}longHorMetric;typedef struct{ /* depends on hhea */ USHORT numberOfHMetrics; /* defined in hhea */ USHORT numberOfLSB; /* numGlyph - numberOfHMetrics */ longHorMetric *hMetrics; FWord *leftSideBearing;}HMTX, *HMTXPtr;/* for a newly created LOCA, one have to fill indexToLocFormat from head and * numGlyphs from maxp manually */typedef struct{ /* depends on head and maxp */ SHORT indexToLocFormat; /* defined in head */ USHORT numGlyphs; /* defined in maxp */ ULONG *offset;}LOCA, *LOCAPtr;typedef struct{ Fixed version; USHORT numGlyphs; USHORT maxPoints; USHORT maxContours; USHORT maxCompositePoints; USHORT maxCompositeContours; USHORT maxZones; USHORT maxTwilightPoints; USHORT maxStorage; USHORT maxFunctionDefs; USHORT maxInstructionDefs; USHORT maxStackElements; USHORT maxSizeOfInstructions; USHORT maxComponentElements; USHORT maxComponentDepth;}MAXP, *MAXPPtr;typedef struct{ USHORT PlatformID; USHORT EncodingID; USHORT LanguageID; USHORT NameID; USHORT length; USHORT offset; char *data;}NameRecord, *NameRecordPtr;typedef struct{ USHORT format; USHORT numberOfRecords; USHORT offset; NameRecordPtr NameRecords;}NAME, *NAMEPtr;typedef struct{ USHORT numGlyphs; /* Should be the same as numGlyphs defined in maxp */ USHORT *glyphNameIndex; CHAR **GlyphName;}Format20;typedef struct{ char *offset;}Format25;typedef struct{ Fixed format; Fixed italicAngle; FWord underlinePosition; FWord underlineThickness; ULONG isFixedPitch; ULONG minMemType42; ULONG maxMemType42; ULONG minMemType1; ULONG maxMemType1; /* the elements below exist only for 2.0 and 2.5 format */ union { Format20 *format20; Format25 *format25; } name;}POST, *POSTPtr;typedef struct{ USHORT version; SHORT xAvgCharWidth; USHORT 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; CHAR panose[10]; ULONG ulUnicodeRange1; ULONG ulUnicodeRange2; ULONG ulUnicodeRange3; ULONG ulUnicodeRange4; CHAR achVendID[5]; USHORT fsSelection; USHORT usFirstCharIndex; USHORT usLastCharIndex; SHORT sTypoAscender; SHORT sTypoDescender; SHORT sTypoLineGap; USHORT usWinAscent; USHORT usWinDescent; ULONG ulCodePageRange1; ULONG ulCodePageRange2;}OS_2, *OS_2Ptr;typedef struct{ USHORT rangeMaxPPEM; USHORT rangeGaspBehavior;}GASPRANGE;typedef struct{ USHORT version; USHORT numRanges; GASPRANGE *gaspRange; /* length = numRanges */}GASP, *GASPPtr;/* flags for gasp */#define GASP_GRIDFIT 0x0001#define GASP_DOGRAY 0x0002typedef struct{ BYTE PixelSize; BYTE MaxWidth; BYTE *Width; /* length = numGlyphs */}DeviceRecord;typedef struct{ USHORT numGlyphs; /* defined in maxp, artifitial */ USHORT version; SHORT numDevices; LONG size; DeviceRecord *Records;}HDMX, *HDMXPtr;typedef struct{ USHORT version; USHORT length; USHORT coverage; union { struct { USHORT nPairs; USHORT searchRange; USHORT entrySelector; USHORT rangeShift; struct kernpair { USHORT left; USHORT right; FWord value; } *pairs; } kern0; struct { USHORT rowWidth; USHORT leftClassTable; USHORT rightClassTable; USHORT array; } kern2; } kern;}KernSubtable;typedef struct{ USHORT version; USHORT nTables; KernSubtable *subtable;}KERN, *KERNPtr;typedef struct{ USHORT version; USHORT numGlyphs; BYTE *yPels; /* length = numGlyphs */}LTSH, *LTSHPtr;typedef struct{ Fixed version; ULONG FontNumber; USHORT Pitch; USHORT xHeight; USHORT Style; USHORT TypeFamily; USHORT CapHeight; USHORT SymbolSet; CHAR Typeface[16]; CHAR CharacterComplement[8]; CHAR FileName[6]; CHAR StrokeWeight; CHAR WidthType; BYTE SerifStyle; BYTE reserved;}PCLT, *PCLTPtr;typedef struct{ BYTE CharSet; BYTE xRatio; BYTE yStartRatio; BYTE yEndRatio;}Ratios;typedef struct{ USHORT yPelHeight; SHORT yMax; SHORT yMin;}vTable;typedef struct{ USHORT recs; BYTE startsz; BYTE endsz; vTable *entry;}Vdmx;typedef struct{ USHORT version; USHORT numRecs; USHORT numRatios; Ratios *ratRange; /* length = numRatios */ USHORT *offset; /* length = numRatios */ Vdmx *groups;}VDMX, *VDMXPtr;typedef struct{ Fixed version; SHORT ascent; SHORT descent; SHORT lineGap; SHORT advanceHeightMax; SHORT minTopSideBearing; SHORT minBottomSideBearing; SHORT yMaxExtent; SHORT caretSlopeRise; SHORT caretSlopeRun; SHORT caretOffset; SHORT reserved[4]; SHORT metricDataFormat; USHORT numOfLongVerMetrics;}VHEA, *VHEAPtr;typedef struct{ uFWord advanceHeight; FWord topSideBearing;}longVerMetric;typedef struct{ /* depends on vhea */ USHORT numOfLongVerMetrics; /* defined in vhea */ USHORT numOfTSB; /* numGlyph - numberOfHMetrics */ longVerMetric *vMetrics; FWord *topSideBearing;}VMTX, *VMTXPtr;#endif /* __TTF_TABLE_H *//* end of tables.h */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -