PageRenderTime 45ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/Firebird-2.5.1.26351-0/extern/icu/source/test/letest/sfnt.h

#
C Header | 213 lines | 172 code | 29 blank | 12 comment | 0 complexity | 2a3ec8422818882ffb1cb0ec34af59e2 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, BSD-3-Clause
  1. /***************************************************************************
  2. *
  3. * Copyright (C) 1998-2002, International Business Machines
  4. * Corporation and others. All Rights Reserved.
  5. *
  6. ************************************************************************/
  7. #ifndef __SFNT_H
  8. #define __SFNT_H
  9. #include "LETypes.h"
  10. #ifndef ANY_NUMBER
  11. #define ANY_NUMBER 1
  12. #endif
  13. struct DirectoryEntry
  14. {
  15. le_uint32 tag;
  16. le_uint32 checksum;
  17. le_uint32 offset;
  18. le_uint32 length;
  19. };
  20. struct SFNTDirectory
  21. {
  22. le_uint32 scalerType;
  23. le_uint16 numTables;
  24. le_uint16 searchRange;
  25. le_uint16 entrySelector;
  26. le_uint16 rangeShift;
  27. DirectoryEntry tableDirectory[ANY_NUMBER];
  28. };
  29. struct CMAPEncodingSubtableHeader
  30. {
  31. le_uint16 platformID;
  32. le_uint16 platformSpecificID;
  33. le_uint32 encodingOffset;
  34. };
  35. struct CMAPTable
  36. {
  37. le_uint16 version;
  38. le_uint16 numberSubtables;
  39. CMAPEncodingSubtableHeader encodingSubtableHeaders[ANY_NUMBER];
  40. };
  41. struct CMAPEncodingSubtable
  42. {
  43. le_uint16 format;
  44. le_uint16 length;
  45. le_uint16 language;
  46. };
  47. struct CMAPFormat0Encoding : CMAPEncodingSubtable
  48. {
  49. le_uint8 glyphIndexArray[256];
  50. };
  51. struct CMAPFormat2Subheader
  52. {
  53. le_uint16 firstCode;
  54. le_uint16 entryCount;
  55. le_int16 idDelta;
  56. le_uint16 idRangeOffset;
  57. };
  58. struct CMAPFormat2Encoding : CMAPEncodingSubtable
  59. {
  60. le_uint16 subHeadKeys[256];
  61. CMAPFormat2Subheader subheaders[ANY_NUMBER];
  62. };
  63. struct CMAPFormat4Encoding : CMAPEncodingSubtable
  64. {
  65. le_uint16 segCountX2;
  66. le_uint16 searchRange;
  67. le_uint16 entrySelector;
  68. le_uint16 rangeShift;
  69. le_uint16 endCodes[ANY_NUMBER];
  70. // le_uint16 reservedPad;
  71. // le_uint16 startCodes[ANY_NUMBER];
  72. // le_uint16 idDelta[ANY_NUMBER];
  73. // le_uint16 idRangeOffset[ANY_NUMBER];
  74. // le_uint16 glyphIndexArray[ANY_NUMBER];
  75. };
  76. struct CMAPFormat6Encoding : CMAPEncodingSubtable
  77. {
  78. le_uint16 firstCode;
  79. le_uint16 entryCount;
  80. le_uint16 glyphIndexArray[ANY_NUMBER];
  81. };
  82. struct CMAPEncodingSubtable32
  83. {
  84. le_uint32 format;
  85. le_uint32 length;
  86. le_uint32 language;
  87. };
  88. struct CMAPGroup
  89. {
  90. le_uint32 startCharCode;
  91. le_uint32 endCharCode;
  92. le_uint32 startGlyphCode;
  93. };
  94. struct CMAPFormat8Encoding : CMAPEncodingSubtable32
  95. {
  96. le_uint32 is32[65536/32];
  97. le_uint32 nGroups;
  98. CMAPGroup groups[ANY_NUMBER];
  99. };
  100. struct CMAPFormat10Encoding : CMAPEncodingSubtable32
  101. {
  102. le_uint32 startCharCode;
  103. le_uint32 numCharCodes;
  104. le_uint16 glyphs[ANY_NUMBER];
  105. };
  106. struct CMAPFormat12Encoding : CMAPEncodingSubtable32
  107. {
  108. le_uint32 nGroups;
  109. CMAPGroup groups[ANY_NUMBER];
  110. };
  111. typedef le_int32 fixed;
  112. struct BigDate
  113. {
  114. le_uint32 bc;
  115. le_uint32 ad;
  116. };
  117. struct HEADTable
  118. {
  119. fixed version;
  120. fixed fontRevision;
  121. le_uint32 checksumAdjustment;
  122. le_uint32 magicNumber;
  123. le_uint16 flags;
  124. le_uint16 unitsPerEm;
  125. BigDate created;
  126. BigDate modified;
  127. le_int16 xMin;
  128. le_int16 yMin;
  129. le_int16 xMax;
  130. le_int16 yMax;
  131. le_int16 lowestRecPPEM;
  132. le_int16 fontDirectionHint;
  133. le_int16 indexToLocFormat;
  134. le_int16 glyphDataFormat;
  135. };
  136. struct MAXPTable
  137. {
  138. fixed version;
  139. le_uint16 numGlyphs;
  140. le_uint16 maxPoints;
  141. le_uint16 maxContours;
  142. le_uint16 maxComponentPoints;
  143. le_uint16 maxComponentContours;
  144. le_uint16 maxZones;
  145. le_uint16 maxTwilightPoints;
  146. le_uint16 maxStorage;
  147. le_uint16 maxFunctionDefs;
  148. le_uint16 maxInstructionDefs;
  149. le_uint16 maxStackElements;
  150. le_uint16 maxSizeOfInstructions;
  151. le_uint16 maxComponentElements;
  152. le_uint16 maxComponentDepth;
  153. };
  154. struct HHEATable
  155. {
  156. fixed version;
  157. le_int16 ascent;
  158. le_int16 descent;
  159. le_int16 lineGap;
  160. le_uint16 advanceWidthMax;
  161. le_int16 minLeftSideBearing;
  162. le_int16 minRightSideBearing;
  163. le_int16 xMaxExtent;
  164. le_int16 caretSlopeRise;
  165. le_int16 caretSlopeRun;
  166. le_int16 caretOffset;
  167. le_int16 reserved1;
  168. le_int16 reserved2;
  169. le_int16 reserved3;
  170. le_int16 reserved4;
  171. le_int16 metricDataFormat;
  172. le_uint16 numOfLongHorMetrics;
  173. };
  174. struct LongHorMetric
  175. {
  176. le_uint16 advanceWidth;
  177. le_int16 leftSideBearing;
  178. };
  179. struct HMTXTable
  180. {
  181. LongHorMetric hMetrics[ANY_NUMBER]; // ANY_NUMBER = numOfLongHorMetrics from hhea table
  182. // le_int16 leftSideBearing[ANY_NUMBER]; // ANY_NUMBER = numGlyphs - numOfLongHorMetrics
  183. };
  184. #endif