17d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod/***************************************************************************
27d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod*
37d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod*   Copyright (C) 1998-2011, International Business Machines
47d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod*   Corporation and others.  All Rights Reserved.
57d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod*
67d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod************************************************************************/
77d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
87d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __SFNT_H
97d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#define __SFNT_H
107d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
117d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#include "layout/LETypes.h"
122eef71737ea29ffadbb5a2be4a898b44f53f66acBehdad Esfahbod#include "letest.h"
132eef71737ea29ffadbb5a2be4a898b44f53f66acBehdad Esfahbod
142eef71737ea29ffadbb5a2be4a898b44f53f66acBehdad EsfahbodHB_BEGIN_VISIBILITY
157d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
167d242364ea647f655a7092bda25f9a10774c57f5Behdad EsfahbodU_NAMESPACE_USE
177d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
187d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef ANY_NUMBER
197d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#define ANY_NUMBER 1
207d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
217d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
227d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct DirectoryEntry
237d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
247d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   tag;
257d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   checksum;
267d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   offset;
277d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   length;
287d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
297d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
307d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
317d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct DirectoryEntry DirectoryEntry;
327d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
337d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
347d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct SFNTDirectory
357d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
367d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32       scalerType;
377d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16       numTables;
387d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16       searchRange;
397d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16       entrySelector;
407d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16       rangeShift;
417d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    DirectoryEntry  tableDirectory[ANY_NUMBER];
427d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
437d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
447d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
457d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct SFNTDirectory SFNTDirectory;
467d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
477d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
487d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
497d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPEncodingSubtableHeader
507d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
517d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   platformID;
527d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   platformSpecificID;
537d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   encodingOffset;
547d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
557d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
567d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
577d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPEncodingSubtableHeader CMAPEncodingSubtableHeader;
587d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
597d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
607d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPTable
617d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
627d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   version;
637d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   numberSubtables;
647d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    CMAPEncodingSubtableHeader encodingSubtableHeaders[ANY_NUMBER];
657d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
667d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
677d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
687d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPTable CMAPTable;
697d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
707d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
717d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPEncodingSubtable
727d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
737d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   format;
747d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   length;
757d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   language;
767d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
777d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
787d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
797d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPEncodingSubtable CMAPEncodingSubtable;
807d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
817d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
827d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifdef __cplusplus
837d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat0Encoding : CMAPEncodingSubtable
847d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
857d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint8    glyphIndexArray[256];
867d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
877d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#else
887d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat0Encoding
897d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
907d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod	CMAPEncodingSubtable base;
917d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
927d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod	le_uint8 glyphIndexArray[256];
937d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
947d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
957d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPFormat0Encoding CMAPFormat0Encoding;
967d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
977d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
987d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat2Subheader
997d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
1007d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   firstCode;
1017d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   entryCount;
1027d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    idDelta;
1037d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   idRangeOffset;
1047d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
1057d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1067d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
1077d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPFormat2Subheader CMAPFormat2Subheader;
1087d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
1097d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1107d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifdef __cplusplus
1117d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat2Encoding : CMAPEncodingSubtable
1127d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
1137d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16  subHeadKeys[256];
1147d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    CMAPFormat2Subheader subheaders[ANY_NUMBER];
1157d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
1167d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#else
1177d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat2Encoding
1187d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
1197d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod	CMAPEncodingSubtable base;
1207d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1217d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16  subHeadKeys[256];
1227d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    CMAPFormat2Subheader subheaders[ANY_NUMBER];
1237d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
1247d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1257d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPFormat2Encoding CMAPFormat2Encoding;
1267d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
1277d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1287d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifdef __cplusplus
1297d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat4Encoding : CMAPEncodingSubtable
1307d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
1317d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   segCountX2;
1327d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   searchRange;
1337d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   entrySelector;
1347d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   rangeShift;
1357d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   endCodes[ANY_NUMBER];
1367d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod/*
1377d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   reservedPad;
1387d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   startCodes[ANY_NUMBER];
1397d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   idDelta[ANY_NUMBER];
1407d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   idRangeOffset[ANY_NUMBER];
1417d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   glyphIndexArray[ANY_NUMBER];
1427d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod*/
1437d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
1447d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#else
1457d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat4Encoding
1467d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
1477d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod	CMAPEncodingSubtable base;
1487d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1497d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   segCountX2;
1507d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   searchRange;
1517d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   entrySelector;
1527d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   rangeShift;
1537d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   endCodes[ANY_NUMBER];
1547d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod/*
1557d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod//  le_uint16   reservedPad;
1567d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod//  le_uint16   startCodes[ANY_NUMBER];
1577d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod//  le_uint16   idDelta[ANY_NUMBER];
1587d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod//  le_uint16   idRangeOffset[ANY_NUMBER];
1597d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod//  le_uint16   glyphIndexArray[ANY_NUMBER];
1607d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod*/
1617d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
1627d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1637d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPFormat4Encoding CMAPFormat4Encoding;
1647d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
1657d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1667d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifdef __cplusplus
1677d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat6Encoding : CMAPEncodingSubtable
1687d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
1697d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   firstCode;
1707d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   entryCount;
1717d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   glyphIndexArray[ANY_NUMBER];
1727d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
1737d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#else
1747d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat6Encoding
1757d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
1767d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod	CMAPEncodingSubtable base;
1777d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1787d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   firstCode;
1797d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   entryCount;
1807d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   glyphIndexArray[ANY_NUMBER];
1817d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
1827d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1837d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPFormat6Encoding CMAPFormat6Encoding;
1847d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
1857d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1867d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPEncodingSubtable32
1877d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
1887d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   format;
1897d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   length;
1907d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   language;
1917d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
1927d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1937d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
1947d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPEncodingSubtable32 CMAPEncodingSubtable32;
1957d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
1967d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
1977d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPGroup
1987d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
1997d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   startCharCode;
2007d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   endCharCode;
2017d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   startGlyphCode;
2027d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
2037d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2047d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
2057d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPGroup CMAPGroup;
2067d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
2077d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2087d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifdef __cplusplus
2097d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat8Encoding : CMAPEncodingSubtable32
2107d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
2117d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   is32[65536/32];
2127d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   nGroups;
2137d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    CMAPGroup   groups[ANY_NUMBER];
2147d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
2157d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#else
2167d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat8Encoding
2177d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
2187d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod	CMAPEncodingSubtable32 base;
2197d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2207d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   is32[65536/32];
2217d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   nGroups;
2227d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    CMAPGroup   groups[ANY_NUMBER];
2237d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
2247d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2257d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPFormat8Encoding CMAPFormat8Encoding;
2267d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
2277d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2287d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifdef __cplusplus
2297d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat10Encoding : CMAPEncodingSubtable32
2307d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
2317d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   startCharCode;
2327d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   numCharCodes;
2337d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   glyphs[ANY_NUMBER];
2347d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
2357d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#else
2367d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat10Encoding
2377d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
2387d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod	CMAPEncodingSubtable32 base;
2397d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2407d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   startCharCode;
2417d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   numCharCodes;
2427d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   glyphs[ANY_NUMBER];
2437d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
2447d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2457d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPFormat10Encoding CMAPFormat10Encoding;
2467d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
2477d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2487d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifdef __cplusplus
2497d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat12Encoding : CMAPEncodingSubtable32
2507d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
2517d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   nGroups;
2527d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    CMAPGroup   groups[ANY_NUMBER];
2537d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
2547d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#else
2557d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct CMAPFormat12Encoding
2567d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
2577d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod	CMAPEncodingSubtable32 base;
2587d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2597d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   nGroups;
2607d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    CMAPGroup   groups[ANY_NUMBER];
2617d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
2627d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2637d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct CMAPFormat12Encoding CMAPFormat12Encoding;
2647d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
2657d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2667d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef le_int32 fixed;
2677d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2687d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct BigDate
2697d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
2707d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   bc;
2717d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   ad;
2727d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
2737d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2747d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
2757d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct BigDate BigDate;
2767d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
2777d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2787d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct HEADTable
2797d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
2807d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    fixed       version;
2817d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    fixed       fontRevision;
2827d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   checksumAdjustment;
2837d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint32   magicNumber;
2847d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   flags;
2857d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   unitsPerEm;
2867d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    BigDate     created;
2877d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    BigDate     modified;
2887d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    xMin;
2897d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    yMin;
2907d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    xMax;
2917d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    yMax;
2927d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    lowestRecPPEM;
2937d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    fontDirectionHint;
2947d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    indexToLocFormat;
2957d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    glyphDataFormat;
2967d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
2977d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
2987d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
2997d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct HEADTable HEADTable;
3007d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
3017d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3027d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct MAXPTable
3037d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
3047d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    fixed       version;
3057d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   numGlyphs;
3067d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxPoints;
3077d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxContours;
3087d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxComponentPoints;
3097d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxComponentContours;
3107d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxZones;
3117d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxTwilightPoints;
3127d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxStorage;
3137d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxFunctionDefs;
3147d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxInstructionDefs;
3157d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxStackElements;
3167d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxSizeOfInstructions;
3177d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxComponentElements;
3187d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   maxComponentDepth;
3197d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
3207d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3217d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
3227d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct MAXPTable MAXPTable;
3237d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
3247d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3257d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct HHEATable
3267d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
3277d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    fixed       version;
3287d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    ascent;
3297d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    descent;
3307d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    lineGap;
3317d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   advanceWidthMax;
3327d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    minLeftSideBearing;
3337d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    minRightSideBearing;
3347d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    xMaxExtent;
3357d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    caretSlopeRise;
3367d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    caretSlopeRun;
3377d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    caretOffset;
3387d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    reserved1;
3397d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    reserved2;
3407d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    reserved3;
3417d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    reserved4;
3427d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    metricDataFormat;
3437d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   numOfLongHorMetrics;
3447d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
3457d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3467d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
3477d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct HHEATable HHEATable;
3487d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
3497d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3507d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct LongHorMetric
3517d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
3527d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16   advanceWidth;
3537d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_int16    leftSideBearing;
3547d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
3557d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3567d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
3577d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct LongHorMetric LongHorMetric;
3587d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
3597d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3607d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct HMTXTable
3617d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
3627d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    LongHorMetric hMetrics[ANY_NUMBER];       /* ANY_NUMBER = numOfLongHorMetrics from hhea table */
3637d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod/* le_int16        leftSideBearing[ANY_NUMBER];  ANY_NUMBER = numGlyphs - numOfLongHorMetrics     */
3647d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
3657d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3667d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
3677d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct HMTXTable HMTXTable;
3687d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
3697d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3707d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodenum PlatformID
3717d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
3727d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    PLATFORM_UNICODE = 0,
3737d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    PLATFORM_MACINTOSH = 1,
3747d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    PLATFORM_ISO       = 2,
3757d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    PLATFORM_MICROSOFT = 3,
3767d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    PLATFORM_CUSTOM    = 4
3777d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
3787d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3797d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodenum MacintoshEncodingID
3807d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
3817d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    MACINTOSH_ROMAN = 0
3827d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
3837d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3847d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodenum MacintoshLanguageID
3857d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
3867d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    MACINTOSH_ENGLISH = 0
3877d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
3887d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3897d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodenum MicrosoftEncodingID
3907d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
3917d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    MICROSOFT_UNICODE_BMP  =  1,
3927d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    MICROSOFT_UNICODE_FULL = 10
3937d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
3947d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
3957d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodenum MicrosoftLanguageID
3967d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
3977d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    MICROSOFT_ENGLISH = 0x409
3987d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
3997d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
4007d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodenum NameID
4017d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
4027d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_COPYRIGHT_NOTICE     = 0,
4037d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_FONT_FAMILY          = 1,
4047d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_FONT_SUB_FAMILY      = 2,
4057d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_UNIQUE_FONT_ID       = 3,
4067d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_FULL_FONT_NAME       = 4,
4077d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_VERSION_STRING       = 5,
4087d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_POSTSCRIPT_NAME      = 6,
4097d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_TRADEMARK            = 7,
4107d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_MANUFACTURER         = 8,
4117d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_DESIGNER             = 9,
4127d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_DESCRIPTION          = 10,
4137d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_VENDOR_URL           = 11,
4147d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_DESIGNER_URL         = 12,
4157d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_LICENSE_DESCRIPTION  = 13,
4167d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_LICENSE_URL          = 14,
4177d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_RESERVED             = 15,
4187d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_PREFERRED_FAMILY     = 16,
4197d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_PREFERRED_SUB_FAMILY = 17,
4207d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_COMPATIBLE_FULL      = 18,
4217d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_SAMPLE_TEXT          = 19,
4227d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NAME_POSTSCRIPT_CID       = 20
4237d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
4247d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
4257d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct NameRecord
4267d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
4277d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16 platformID;
4287d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16 encodingID;
4297d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16 languageID;
4307d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16 nameID;
4317d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16 length;
4327d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16 offset;
4337d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
4347d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
4357d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
4367d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct NameRecord NameRecord;
4377d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
4387d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
4397d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodstruct NAMETable
4407d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod{
4417d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16 version;
4427d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16 count;
4437d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    le_uint16 stringOffset;
4447d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod    NameRecord nameRecords[ANY_NUMBER];
4457d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod};
4467d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
4477d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#ifndef __cplusplus
4487d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbodtypedef struct NAMETable NAMETable;
4497d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod#endif
4507d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
4512eef71737ea29ffadbb5a2be4a898b44f53f66acBehdad EsfahbodHB_END_VISIBILITY
4527d242364ea647f655a7092bda25f9a10774c57f5Behdad Esfahbod
4532eef71737ea29ffadbb5a2be4a898b44f53f66acBehdad Esfahbod#endif
454