⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tables.h

📁 ttfdump源代码
💻 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 + -