13ff48bf5SDavid du Colombier /* Copyright (C) 2000 Aladdin Enterprises. All rights reserved. 23ff48bf5SDavid du Colombier 3*593dc095SDavid du Colombier This software is provided AS-IS with no warranty, either express or 4*593dc095SDavid du Colombier implied. 53ff48bf5SDavid du Colombier 6*593dc095SDavid du Colombier This software is distributed under license and may not be copied, 7*593dc095SDavid du Colombier modified or distributed except as expressly authorized under the terms 8*593dc095SDavid du Colombier of the license contained in the file LICENSE in this distribution. 93ff48bf5SDavid du Colombier 10*593dc095SDavid du Colombier For more information about licensing, please refer to 11*593dc095SDavid du Colombier http://www.ghostscript.com/licensing/. For information on 12*593dc095SDavid du Colombier commercial licensing, go to http://www.artifex.com/licensing/ or 13*593dc095SDavid du Colombier contact Artifex Software, Inc., 101 Lucas Valley Road #110, 14*593dc095SDavid du Colombier San Rafael, CA 94903, U.S.A., +1(415)492-9861. 153ff48bf5SDavid du Colombier */ 163ff48bf5SDavid du Colombier 17*593dc095SDavid du Colombier /* $Id: gxttf.h,v 1.6 2002/06/28 05:27:22 lpd Exp $ */ 183ff48bf5SDavid du Colombier /* Table definitions for TrueType fonts */ 193ff48bf5SDavid du Colombier 203ff48bf5SDavid du Colombier #ifndef gxttf_INCLUDED 213ff48bf5SDavid du Colombier # define gxttf_INCLUDED 223ff48bf5SDavid du Colombier 23*593dc095SDavid du Colombier /* ------ Composite glyf component flags ------ */ 24*593dc095SDavid du Colombier 25*593dc095SDavid du Colombier #define TT_CG_ARGS_ARE_WORDS (1<<0) 26*593dc095SDavid du Colombier #define TT_CG_ARGS_ARE_XY_VALUES (1<<1) 27*593dc095SDavid du Colombier #define TT_CG_ROUND_XY_TO_GRID (1<<2) 28*593dc095SDavid du Colombier #define TT_CG_HAVE_SCALE (1<<3) 29*593dc095SDavid du Colombier #define TT_CG_MORE_COMPONENTS (1<<5) 30*593dc095SDavid du Colombier #define TT_CG_HAVE_XY_SCALE (1<<6) 31*593dc095SDavid du Colombier #define TT_CG_HAVE_2X2 (1<<7) 32*593dc095SDavid du Colombier #define TT_CG_HAVE_INSTRUCTIONS (1<<8) 33*593dc095SDavid du Colombier #define TT_CG_USE_MY_METRICS (1<<9) 34*593dc095SDavid du Colombier 353ff48bf5SDavid du Colombier /* ------ head ------ */ 363ff48bf5SDavid du Colombier 373ff48bf5SDavid du Colombier typedef struct ttf_head_s { 383ff48bf5SDavid du Colombier byte 393ff48bf5SDavid du Colombier version[4], /* version 1.0 */ 403ff48bf5SDavid du Colombier fontRevision[4], 413ff48bf5SDavid du Colombier checkSumAdjustment[4], 423ff48bf5SDavid du Colombier magicNumber[4], 433ff48bf5SDavid du Colombier flags[2], 443ff48bf5SDavid du Colombier unitsPerEm[2], 453ff48bf5SDavid du Colombier created[8], 463ff48bf5SDavid du Colombier modified[8], 473ff48bf5SDavid du Colombier xMin[2], 483ff48bf5SDavid du Colombier yMin[2], 493ff48bf5SDavid du Colombier xMax[2], 503ff48bf5SDavid du Colombier yMax[2], 513ff48bf5SDavid du Colombier macStyle[2], 523ff48bf5SDavid du Colombier lowestRecPPM[2], 533ff48bf5SDavid du Colombier fontDirectionHint[2], 543ff48bf5SDavid du Colombier indexToLocFormat[2], 553ff48bf5SDavid du Colombier glyphDataFormat[2]; 563ff48bf5SDavid du Colombier } ttf_head_t; 573ff48bf5SDavid du Colombier 583ff48bf5SDavid du Colombier /* ------ hhea ------ */ 593ff48bf5SDavid du Colombier 603ff48bf5SDavid du Colombier typedef struct ttf_hhea_s { 613ff48bf5SDavid du Colombier byte 623ff48bf5SDavid du Colombier version[4], /* version 1.0 */ 633ff48bf5SDavid du Colombier ascender[2], /* FWord */ 643ff48bf5SDavid du Colombier descender[2], /* FWord */ 653ff48bf5SDavid du Colombier lineGap[2], /* FWord */ 663ff48bf5SDavid du Colombier advanceWidthMax[2], /* uFWord */ 673ff48bf5SDavid du Colombier minLeftSideBearing[2], /* FWord */ 683ff48bf5SDavid du Colombier minRightSideBearing[2], /* FWord */ 693ff48bf5SDavid du Colombier xMaxExtent[2], /* FWord */ 703ff48bf5SDavid du Colombier caretSlopeRise[2], 713ff48bf5SDavid du Colombier caretSlopeRun[2], 723ff48bf5SDavid du Colombier caretOffset[2], 733ff48bf5SDavid du Colombier reserved[8], 743ff48bf5SDavid du Colombier metricDataFormat[2], /* 0 */ 753ff48bf5SDavid du Colombier numHMetrics[2]; 763ff48bf5SDavid du Colombier } ttf_hhea_t; 773ff48bf5SDavid du Colombier 783ff48bf5SDavid du Colombier /* ------ hmtx ------ */ 793ff48bf5SDavid du Colombier 803ff48bf5SDavid du Colombier typedef struct longHorMetric_s { 813ff48bf5SDavid du Colombier byte 823ff48bf5SDavid du Colombier advanceWidth[2], /* uFWord */ 833ff48bf5SDavid du Colombier lsb[2]; /* FWord */ 843ff48bf5SDavid du Colombier } longHorMetric_t; 853ff48bf5SDavid du Colombier 863ff48bf5SDavid du Colombier /* ------ maxp ------ */ 873ff48bf5SDavid du Colombier 883ff48bf5SDavid du Colombier typedef struct ttf_maxp_s { 893ff48bf5SDavid du Colombier byte 90*593dc095SDavid du Colombier version[4], /* 1.0 */ 913ff48bf5SDavid du Colombier numGlyphs[2], 923ff48bf5SDavid du Colombier maxPoints[2], 933ff48bf5SDavid du Colombier maxContours[2], 943ff48bf5SDavid du Colombier maxCompositePoints[2], 953ff48bf5SDavid du Colombier maxCompositeContours[2], 963ff48bf5SDavid du Colombier maxZones[2], 973ff48bf5SDavid du Colombier maxTwilightPoints[2], 983ff48bf5SDavid du Colombier maxStorage[2], 993ff48bf5SDavid du Colombier maxFunctionDefs[2], 1003ff48bf5SDavid du Colombier maxInstructionDefs[2], 1013ff48bf5SDavid du Colombier maxStackElements[2], 1023ff48bf5SDavid du Colombier maxSizeOfInstructions[2], 1033ff48bf5SDavid du Colombier maxComponentElements[2], 1043ff48bf5SDavid du Colombier maxComponentDepth[2]; 1053ff48bf5SDavid du Colombier } ttf_maxp_t; 1063ff48bf5SDavid du Colombier 1073ff48bf5SDavid du Colombier /* ------ OS/2 ------ */ 1083ff48bf5SDavid du Colombier 1093ff48bf5SDavid du Colombier typedef struct ttf_OS_2_s { 1103ff48bf5SDavid du Colombier byte 1113ff48bf5SDavid du Colombier version[2], /* version 1 */ 1123ff48bf5SDavid du Colombier xAvgCharWidth[2], 1133ff48bf5SDavid du Colombier usWeightClass[2], 1143ff48bf5SDavid du Colombier usWidthClass[2], 1153ff48bf5SDavid du Colombier fsType[2], 1163ff48bf5SDavid du Colombier ySubscriptXSize[2], 1173ff48bf5SDavid du Colombier ySubscriptYSize[2], 1183ff48bf5SDavid du Colombier ySubscriptXOffset[2], 1193ff48bf5SDavid du Colombier ySubscriptYOffset[2], 1203ff48bf5SDavid du Colombier ySuperscriptXSize[2], 1213ff48bf5SDavid du Colombier ySuperscriptYSize[2], 1223ff48bf5SDavid du Colombier ySuperscriptXOffset[2], 1233ff48bf5SDavid du Colombier ySuperscriptYOffset[2], 1243ff48bf5SDavid du Colombier yStrikeoutSize[2], 1253ff48bf5SDavid du Colombier yStrikeoutPosition[2], 1263ff48bf5SDavid du Colombier sFamilyClass[2], 1273ff48bf5SDavid du Colombier /*panose:*/ 1283ff48bf5SDavid du Colombier bFamilyType, bSerifStyle, bWeight, bProportion, bContrast, 1293ff48bf5SDavid du Colombier bStrokeVariation, bArmStyle, bLetterform, bMidline, bXHeight, 1303ff48bf5SDavid du Colombier ulUnicodeRanges[16], 1313ff48bf5SDavid du Colombier achVendID[4], 1323ff48bf5SDavid du Colombier fsSelection[2], 1333ff48bf5SDavid du Colombier usFirstCharIndex[2], 1343ff48bf5SDavid du Colombier usLastCharIndex[2], 1353ff48bf5SDavid du Colombier sTypoAscender[2], 1363ff48bf5SDavid du Colombier sTypoDescender[2], 1373ff48bf5SDavid du Colombier sTypoLineGap[2], 1383ff48bf5SDavid du Colombier usWinAscent[2], 1393ff48bf5SDavid du Colombier usWinDescent[2], 1403ff48bf5SDavid du Colombier ulCodePageRanges[8]; 1413ff48bf5SDavid du Colombier } ttf_OS_2_t; 1423ff48bf5SDavid du Colombier 1433ff48bf5SDavid du Colombier /* ------ vhea ------ */ 1443ff48bf5SDavid du Colombier 1453ff48bf5SDavid du Colombier typedef struct ttf_vhea_s { 1463ff48bf5SDavid du Colombier byte 1473ff48bf5SDavid du Colombier version[4], /* version 1.0 */ 1483ff48bf5SDavid du Colombier ascent[2], /* FWord */ 1493ff48bf5SDavid du Colombier descent[2], /* FWord */ 1503ff48bf5SDavid du Colombier lineGap[2], /* FWord */ 1513ff48bf5SDavid du Colombier advanceHeightMax[2], /* uFWord */ 1523ff48bf5SDavid du Colombier minTopSideBearing[2], /* FWord */ 1533ff48bf5SDavid du Colombier minBottomSideBearing[2], /* FWord */ 1543ff48bf5SDavid du Colombier yMaxExtent[2], /* FWord */ 1553ff48bf5SDavid du Colombier caretSlopeRise[2], 1563ff48bf5SDavid du Colombier caretSlopeRun[2], 1573ff48bf5SDavid du Colombier caretOffset[2], 1583ff48bf5SDavid du Colombier reserved[8], 1593ff48bf5SDavid du Colombier metricDataFormat[2], /* 0 */ 1603ff48bf5SDavid du Colombier numVMetrics[2]; 1613ff48bf5SDavid du Colombier } ttf_vhea_t; 1623ff48bf5SDavid du Colombier 1633ff48bf5SDavid du Colombier /* ------ vmtx ------ */ 1643ff48bf5SDavid du Colombier 1653ff48bf5SDavid du Colombier typedef struct longVerMetric_s { 1663ff48bf5SDavid du Colombier byte 1673ff48bf5SDavid du Colombier advanceHeight[2], /* uFWord */ 1683ff48bf5SDavid du Colombier topSideBearing[2]; /* FWord */ 1693ff48bf5SDavid du Colombier } longVerMetric_t; 1703ff48bf5SDavid du Colombier 1713ff48bf5SDavid du Colombier #endif /* gxttf_INCLUDED */ 172