diff options
author | arthurhsu <arthurhsu@google.com> | 2011-07-08 23:09:32 +0000 |
---|---|---|
committer | arthurhsu <arthurhsu@google.com> | 2011-07-08 23:09:32 +0000 |
commit | 007bac39b5a613b17384f72d96457ab91638bab6 (patch) | |
tree | 13a65c05eb6dd6316c974dd06806a096146d5b3a /cpp/src/sfntly | |
parent | 89fd9a230d44fef8b413f82bd9b256431e8e70df (diff) | |
download | sfntly-007bac39b5a613b17384f72d96457ab91638bab6.tar.gz |
Update static const ints to enums so that these enums can be used in
switch-case. There are two exceptions:
1. if original Java code uses static const int, we keep it that way.
2. C++ compilers may not support 64-bit enum so we need to define them as static
const uint64_t
Diffstat (limited to 'cpp/src/sfntly')
-rw-r--r-- | cpp/src/sfntly/cmap_table.cc | 86 | ||||
-rw-r--r-- | cpp/src/sfntly/cmap_table.h | 236 | ||||
-rw-r--r-- | cpp/src/sfntly/data/font_data.cc | 17 | ||||
-rw-r--r-- | cpp/src/sfntly/data/font_data.h | 34 | ||||
-rw-r--r-- | cpp/src/sfntly/font.cc | 76 | ||||
-rw-r--r-- | cpp/src/sfntly/font.h | 146 | ||||
-rw-r--r-- | cpp/src/sfntly/font_factory.cc | 8 | ||||
-rw-r--r-- | cpp/src/sfntly/font_factory.h | 24 | ||||
-rw-r--r-- | cpp/src/sfntly/font_header_table.cc | 30 | ||||
-rw-r--r-- | cpp/src/sfntly/font_header_table.h | 54 | ||||
-rw-r--r-- | cpp/src/sfntly/glyph_table.cc | 15 | ||||
-rw-r--r-- | cpp/src/sfntly/glyph_table.h | 48 | ||||
-rw-r--r-- | cpp/src/sfntly/horizontal_header_table.cc | 17 | ||||
-rw-r--r-- | cpp/src/sfntly/horizontal_header_table.h | 28 | ||||
-rw-r--r-- | cpp/src/sfntly/horizontal_metrics_table.cc | 9 | ||||
-rw-r--r-- | cpp/src/sfntly/horizontal_metrics_table.h | 16 | ||||
-rw-r--r-- | cpp/src/sfntly/maximum_profile_table.cc | 19 | ||||
-rw-r--r-- | cpp/src/sfntly/maximum_profile_table.h | 36 | ||||
-rw-r--r-- | cpp/src/sfntly/name_table.cc | 372 | ||||
-rw-r--r-- | cpp/src/sfntly/name_table.h | 750 | ||||
-rw-r--r-- | cpp/src/sfntly/os2_table.cc | 92 | ||||
-rw-r--r-- | cpp/src/sfntly/os2_table.h | 188 |
22 files changed, 809 insertions, 1492 deletions
diff --git a/cpp/src/sfntly/cmap_table.cc b/cpp/src/sfntly/cmap_table.cc index 79b083a..e73b657 100644 --- a/cpp/src/sfntly/cmap_table.cc +++ b/cpp/src/sfntly/cmap_table.cc @@ -23,93 +23,7 @@ namespace sfntly { -/****************************************************************************** - * Constants - ******************************************************************************/ const int32_t CMapTable::NOTDEF = 0; -const int32_t CMapTable::Offset::kVersion = 0; -const int32_t CMapTable::Offset::kNumTables = 2; -const int32_t CMapTable::Offset::kEncodingRecordStart = 4; -const int32_t CMapTable::Offset::kEncodingRecordPlatformId = 0; -const int32_t CMapTable::Offset::kEncodingRecordEncodingId = 2; -const int32_t CMapTable::Offset::kEncodingRecordOffset = 4; -const int32_t CMapTable::Offset::kEncodingRecordSize = 8; -const int32_t CMapTable::Offset::kFormat = 0; -const int32_t CMapTable::Offset::kFormat0Format = 0; -const int32_t CMapTable::Offset::kFormat0Length = 2; -const int32_t CMapTable::Offset::kFormat0Language = 4; -const int32_t CMapTable::Offset::kFormat0GlyphIdArray = 6; -const int32_t CMapTable::Offset::kFormat2Format = 0; -const int32_t CMapTable::Offset::kFormat2Length = 2; -const int32_t CMapTable::Offset::kFormat2Language = 4; -const int32_t CMapTable::Offset::kFormat2SubHeaderKeys = 6; -const int32_t CMapTable::Offset::kFormat2SubHeaders = 518; -const int32_t CMapTable::Offset::kFormat2SubHeader_firstCode = 0; -const int32_t CMapTable::Offset::kFormat2SubHeader_entryCount = 2; -const int32_t CMapTable::Offset::kFormat2SubHeader_idDelta = 4; -const int32_t CMapTable::Offset::kFormat2SubHeader_idRangeOffset = 6; -const int32_t CMapTable::Offset::kFormat2SubHeader_structLength = 8; -const int32_t CMapTable::Offset::kFormat4Format = 0; -const int32_t CMapTable::Offset::kFormat4Length = 2; -const int32_t CMapTable::Offset::kFormat4Language = 4; -const int32_t CMapTable::Offset::kFormat4SegCountX2 = 6; -const int32_t CMapTable::Offset::kFormat4SearchRange = 8; -const int32_t CMapTable::Offset::kFormat4EntrySelector = 10; -const int32_t CMapTable::Offset::kFormat4RangeShift = 12; -const int32_t CMapTable::Offset::kFormat4EndCount = 14; -const int32_t CMapTable::Offset::kFormat6Format = 0; -const int32_t CMapTable::Offset::kFormat6Length = 2; -const int32_t CMapTable::Offset::kFormat6Language = 4; -const int32_t CMapTable::Offset::kFormat6FirstCode = 6; -const int32_t CMapTable::Offset::kFormat6EntryCount = 8; -const int32_t CMapTable::Offset::kFormat6GlyphIdArray = 10; -const int32_t CMapTable::Offset::kFormat8Format = 0; -const int32_t CMapTable::Offset::kFormat8Length = 4; -const int32_t CMapTable::Offset::kFormat8Language = 8; -const int32_t CMapTable::Offset::kFormat8Is32 = 12; -const int32_t CMapTable::Offset::kFormat8nGroups204 = 8204; -const int32_t CMapTable::Offset::kFormat8Groups208 = 8208; -const int32_t CMapTable::Offset::kFormat8Group_startCharCode = 0; -const int32_t CMapTable::Offset::kFormat8Group_endCharCode = 4; -const int32_t CMapTable::Offset::kFormat8Group_startGlyphId = 8; -const int32_t CMapTable::Offset::kFormat8Group_structLength = 12; -const int32_t CMapTable::Offset::kFormat10Format = 0; -const int32_t CMapTable::Offset::kFormat10Length = 4; -const int32_t CMapTable::Offset::kFormat10Language = 8; -const int32_t CMapTable::Offset::kFormat10StartCharCode = 12; -const int32_t CMapTable::Offset::kFormat10NumChars = 16; -const int32_t CMapTable::Offset::kFormat10Glyphs0 = 20; -const int32_t CMapTable::Offset::kFormat12Format = 0; -const int32_t CMapTable::Offset::kFormat12Length = 4; -const int32_t CMapTable::Offset::kFormat12Language = 8; -const int32_t CMapTable::Offset::kFormat12nGroups = 12; -const int32_t CMapTable::Offset::kFormat12Groups = 16; -const int32_t CMapTable::Offset::kFormat12Groups_structLength = 12; -const int32_t CMapTable::Offset::kFormat12_startCharCode = 0; -const int32_t CMapTable::Offset::kFormat12_endCharCode = 4; -const int32_t CMapTable::Offset::kFormat12_startGlyphId = 8; -const int32_t CMapTable::Offset::kFormat13Format = 0; -const int32_t CMapTable::Offset::kFormat13Length = 4; -const int32_t CMapTable::Offset::kFormat13Language = 8; -const int32_t CMapTable::Offset::kFormat13nGroups = 12; -const int32_t CMapTable::Offset::kFormat13Groups = 16; -const int32_t CMapTable::Offset::kFormat13Groups_structLength = 12; -const int32_t CMapTable::Offset::kFormat13_startCharCode = 0; -const int32_t CMapTable::Offset::kFormat13_endCharCode = 4; -const int32_t CMapTable::Offset::kFormat13_glyphId = 8; -const int32_t CMapTable::Offset::kFormat14Format = 0; -const int32_t CMapTable::Offset::kFormat14Length = 2; -const int32_t CMapTable::Offset::kLast = -1; - -const int32_t CMapTable::CMapFormat::kFormat0 = 0; -const int32_t CMapTable::CMapFormat::kFormat2 = 2; -const int32_t CMapTable::CMapFormat::kFormat4 = 4; -const int32_t CMapTable::CMapFormat::kFormat6 = 6; -const int32_t CMapTable::CMapFormat::kFormat8 = 8; -const int32_t CMapTable::CMapFormat::kFormat10 = 10; -const int32_t CMapTable::CMapFormat::kFormat12 = 12; -const int32_t CMapTable::CMapFormat::kFormat13 = 13; -const int32_t CMapTable::CMapFormat::kFormat14 = 14; /****************************************************************************** * CMapTable class diff --git a/cpp/src/sfntly/cmap_table.h b/cpp/src/sfntly/cmap_table.h index 9e9aa87..c13318e 100644 --- a/cpp/src/sfntly/cmap_table.h +++ b/cpp/src/sfntly/cmap_table.h @@ -27,127 +27,131 @@ namespace sfntly { +// CMap subtable formats +struct CMapFormat { + enum { + kFormat0 = 0, + kFormat2 = 2, + kFormat4 = 4, + kFormat6 = 6, + kFormat8 = 8, + kFormat10 = 10, + kFormat12 = 12, + kFormat13 = 13, + kFormat14 = 14 + }; +}; + // A CMap table class CMapTable : public Table, public RefCounted<CMapTable> { private: static const int32_t NOTDEF; struct Offset { - static const int32_t kVersion; - static const int32_t kNumTables; - static const int32_t kEncodingRecordStart; - - // offsets relative to the encoding record - static const int32_t kEncodingRecordPlatformId; - static const int32_t kEncodingRecordEncodingId; - static const int32_t kEncodingRecordOffset; - static const int32_t kEncodingRecordSize; - - static const int32_t kFormat; - - // Format 0: Byte encoding table - static const int32_t kFormat0Format; - static const int32_t kFormat0Length; - static const int32_t kFormat0Language; - static const int32_t kFormat0GlyphIdArray; - - // Format 2: High-byte mapping through table - static const int32_t kFormat2Format; - static const int32_t kFormat2Length; - static const int32_t kFormat2Language; - static const int32_t kFormat2SubHeaderKeys; - static const int32_t kFormat2SubHeaders; - // offset relative to the subHeader structure - static const int32_t kFormat2SubHeader_firstCode; - static const int32_t kFormat2SubHeader_entryCount; - static const int32_t kFormat2SubHeader_idDelta; - static const int32_t kFormat2SubHeader_idRangeOffset; - static const int32_t kFormat2SubHeader_structLength; - - // Format 4: Segment mapping to delta values - static const int32_t kFormat4Format; - static const int32_t kFormat4Length; - static const int32_t kFormat4Language; - static const int32_t kFormat4SegCountX2; - static const int32_t kFormat4SearchRange; - static const int32_t kFormat4EntrySelector; - static const int32_t kFormat4RangeShift; - static const int32_t kFormat4EndCount; - - // format 6: Trimmed table mapping - static const int32_t kFormat6Format; - static const int32_t kFormat6Length; - static const int32_t kFormat6Language; - static const int32_t kFormat6FirstCode; - static const int32_t kFormat6EntryCount; - static const int32_t kFormat6GlyphIdArray; - - // Format 8: mixed 16-bit and 32-bit coverage - static const int32_t kFormat8Format; - static const int32_t kFormat8Length; - static const int32_t kFormat8Language; - static const int32_t kFormat8Is32; - static const int32_t kFormat8nGroups204; - static const int32_t kFormat8Groups208; - // ofset relative to the group structure - static const int32_t kFormat8Group_startCharCode; - static const int32_t kFormat8Group_endCharCode; - static const int32_t kFormat8Group_startGlyphId; - static const int32_t kFormat8Group_structLength; - - // Format 10: Trimmed array - static const int32_t kFormat10Format; - static const int32_t kFormat10Length; - static const int32_t kFormat10Language; - static const int32_t kFormat10StartCharCode; - static const int32_t kFormat10NumChars; - static const int32_t kFormat10Glyphs0; - - // Format 12: Segmented coverage - static const int32_t kFormat12Format; - static const int32_t kFormat12Length; - static const int32_t kFormat12Language; - static const int32_t kFormat12nGroups; - static const int32_t kFormat12Groups; - static const int32_t kFormat12Groups_structLength; - // offsets within the group structure - static const int32_t kFormat12_startCharCode; - static const int32_t kFormat12_endCharCode; - static const int32_t kFormat12_startGlyphId; - - // Format 13: Last Resort Font - static const int32_t kFormat13Format; - static const int32_t kFormat13Length; - static const int32_t kFormat13Language; - static const int32_t kFormat13nGroups; - static const int32_t kFormat13Groups; - static const int32_t kFormat13Groups_structLength; - // offsets within the group structure - static const int32_t kFormat13_startCharCode; - static const int32_t kFormat13_endCharCode; - static const int32_t kFormat13_glyphId; - - // Format 14: Unicode Variation Sequences - static const int32_t kFormat14Format; - static const int32_t kFormat14Length; - - // TODO(stuartg): finish tables - // Default UVS Table - - // Non-default UVS Table - static const int32_t kLast; - }; - - // CMap subtable formats - struct CMapFormat { - static const int32_t kFormat0; - static const int32_t kFormat2; - static const int32_t kFormat4; - static const int32_t kFormat6; - static const int32_t kFormat8; - static const int32_t kFormat10; - static const int32_t kFormat12; - static const int32_t kFormat13; - static const int32_t kFormat14; + enum { + kVersion = 0, + kNumTables = 2, + kEncodingRecordStart = 4, + + // offsets relative to the encoding record + kEncodingRecordPlatformId = 0, + kEncodingRecordEncodingId = 2, + kEncodingRecordOffset = 4, + kEncodingRecordSize = 8, + + kFormat = 0, + + // Format 0: Byte encoding table + kFormat0Format = 0, + kFormat0Length = 2, + kFormat0Language = 4, + kFormat0GlyphIdArray = 6, + + // Format 2: High-byte mapping through table + kFormat2Format = 0, + kFormat2Length = 2, + kFormat2Language = 4, + kFormat2SubHeaderKeys = 6, + kFormat2SubHeaders = 518, + // offset relative to the subHeader structure + kFormat2SubHeader_firstCode = 0, + kFormat2SubHeader_entryCount = 2, + kFormat2SubHeader_idDelta = 4, + kFormat2SubHeader_idRangeOffset = 6, + kFormat2SubHeader_structLength = 8, + + // Format 4: Segment mapping to delta values + kFormat4Format = 0, + kFormat4Length = 2, + kFormat4Language = 4, + kFormat4SegCountX2 = 6, + kFormat4SearchRange = 8, + kFormat4EntrySelector = 10, + kFormat4RangeShift = 12, + kFormat4EndCount = 14, + + // format 6: Trimmed table mapping + kFormat6Format = 0, + kFormat6Length = 2, + kFormat6Language = 4, + kFormat6FirstCode = 6, + kFormat6EntryCount = 8, + kFormat6GlyphIdArray = 10, + + // Format 8: mixed 16-bit and 32-bit coverage + kFormat8Format = 0, + kFormat8Length = 4, + kFormat8Language = 8, + kFormat8Is32 = 12, + kFormat8nGroups204 = 8204, + kFormat8Groups208 = 8208, + // offset relative to the group structure + kFormat8Group_startCharCode = 0, + kFormat8Group_endCharCode = 4, + kFormat8Group_startGlyphId = 8, + kFormat8Group_structLength = 12, + + // Format 10: Trimmed array + kFormat10Format = 0, + kFormat10Length = 4, + kFormat10Language = 8, + kFormat10StartCharCode = 12, + kFormat10NumChars = 16, + kFormat10Glyphs0 = 20, + + // Format 12: Segmented coverage + kFormat12Format = 0, + kFormat12Length = 4, + kFormat12Language = 8, + kFormat12nGroups = 12, + kFormat12Groups = 16, + kFormat12Groups_structLength = 12, + // offsets within the group structure + kFormat12_startCharCode = 0, + kFormat12_endCharCode = 4, + kFormat12_startGlyphId = 8, + + // Format 13: Last Resort Font + kFormat13Format = 0, + kFormat13Length = 4, + kFormat13Language = 8, + kFormat13nGroups = 12, + kFormat13Groups = 16, + kFormat13Groups_structLength = 12, + // offsets within the group structure + kFormat13_startCharCode = 0, + kFormat13_endCharCode = 4, + kFormat13_glyphId = 8, + + // Format 14: Unicode Variation Sequences + kFormat14Format = 0, + kFormat14Length = 2, + + // TODO(stuartg): finish tables + // Default UVS Table + + // Non-default UVS Table + kLast = -1 + }; }; public: diff --git a/cpp/src/sfntly/data/font_data.cc b/cpp/src/sfntly/data/font_data.cc index 8cda562..fdba5f8 100644 --- a/cpp/src/sfntly/data/font_data.cc +++ b/cpp/src/sfntly/data/font_data.cc @@ -22,23 +22,6 @@ namespace sfntly { -const int32_t DataSize::kBYTE = 1; -const int32_t DataSize::kCHAR = 1; -const int32_t DataSize::kUSHORT = 2; -const int32_t DataSize::kSHORT = 2; -const int32_t DataSize::kUINT24 = 3; -const int32_t DataSize::kULONG = 4; -const int32_t DataSize::kLONG = 4; -const int32_t DataSize::kFixed = 4; -const int32_t DataSize::kFUNIT = 4; -const int32_t DataSize::kFWORD = 2; -const int32_t DataSize::kUFWORD = 2; -const int32_t DataSize::kF2DOT14 = 2; -const int32_t DataSize::kLONGDATETIME = 8; -const int32_t DataSize::kTag = 4; -const int32_t DataSize::kGlyphID = 2; -const int32_t DataSize::kOffset = 2; - FontData::~FontData() {} void FontData::init(ByteArray* ba) { diff --git a/cpp/src/sfntly/data/font_data.h b/cpp/src/sfntly/data/font_data.h index 5766cb8..6bcdb73 100644 --- a/cpp/src/sfntly/data/font_data.h +++ b/cpp/src/sfntly/data/font_data.h @@ -25,22 +25,24 @@ namespace sfntly { struct DataSize { - static const int32_t kBYTE; - static const int32_t kCHAR; - static const int32_t kUSHORT; - static const int32_t kSHORT; - static const int32_t kUINT24; - static const int32_t kULONG; - static const int32_t kLONG; - static const int32_t kFixed; - static const int32_t kFUNIT; - static const int32_t kFWORD; - static const int32_t kUFWORD; - static const int32_t kF2DOT14; - static const int32_t kLONGDATETIME; - static const int32_t kTag; - static const int32_t kGlyphID; - static const int32_t kOffset; + enum { + kBYTE = 1, + kCHAR = 1, + kUSHORT = 2, + kSHORT = 2, + kUINT24 = 3, + kULONG = 4, + kLONG = 4, + kFixed = 4, + kFUNIT = 4, + kFWORD = 2, + kUFWORD = 2, + kF2DOT14 = 2, + kLONGDATETIME = 8, + kTag = 4, + kGlyphID = 2, + kOffset = 2 + }; }; class FontData : virtual public RefCount { diff --git a/cpp/src/sfntly/font.cc b/cpp/src/sfntly/font.cc index 46dc48c..1532f49 100644 --- a/cpp/src/sfntly/font.cc +++ b/cpp/src/sfntly/font.cc @@ -34,84 +34,8 @@ namespace sfntly { -/****************************************************************************** - * constant definitions - ******************************************************************************/ -const int32_t PlatformId::kUnknown = -1; -const int32_t PlatformId::kUnicode = 0; -const int32_t PlatformId::kMacintosh = 1; -const int32_t PlatformId::kISO = 2; -const int32_t PlatformId::kWindows = 3; -const int32_t PlatformId::kCustom = 4; - -const int32_t UnicodeEncodingId::kUnknown = -1; -const int32_t UnicodeEncodingId::kUnicode1_0 = 0; -const int32_t UnicodeEncodingId::kUnicode1_1 = 1; -const int32_t UnicodeEncodingId::kISO10646 = 2; -const int32_t UnicodeEncodingId::kUnicode2_0_BMP = 3; -const int32_t UnicodeEncodingId::kUnicode2_0 = 4; -const int32_t UnicodeEncodingId::kUnicodeVariationSequences = 5; - -const int32_t WindowsEncodingId::kUnknown = 0xffffffff; -const int32_t WindowsEncodingId::kSymbol = 0; -const int32_t WindowsEncodingId::kUnicodeUCS2 = 1; -const int32_t WindowsEncodingId::kShiftJIS = 2; -const int32_t WindowsEncodingId::kPRC = 3; -const int32_t WindowsEncodingId::kBig5 = 4; -const int32_t WindowsEncodingId::kWansung = 5; -const int32_t WindowsEncodingId::kJohab = 6; -const int32_t WindowsEncodingId::kUnicodeUCS4 = 10; - -const int32_t MacintoshEncodingId::kUnknown = -1; -const int32_t MacintoshEncodingId::kRoman = 0; -const int32_t MacintoshEncodingId::kJapanese = 1; -const int32_t MacintoshEncodingId::kChineseTraditional = 2; -const int32_t MacintoshEncodingId::kKorean = 3; -const int32_t MacintoshEncodingId::kArabic = 4; -const int32_t MacintoshEncodingId::kHebrew = 5; -const int32_t MacintoshEncodingId::kGreek = 6; -const int32_t MacintoshEncodingId::kRussian = 7; -const int32_t MacintoshEncodingId::kRSymbol = 8; -const int32_t MacintoshEncodingId::kDevanagari = 9; -const int32_t MacintoshEncodingId::kGurmukhi = 10; -const int32_t MacintoshEncodingId::kGujarati = 11; -const int32_t MacintoshEncodingId::kOriya = 12; -const int32_t MacintoshEncodingId::kBengali = 13; -const int32_t MacintoshEncodingId::kTamil = 14; -const int32_t MacintoshEncodingId::kTelugu = 15; -const int32_t MacintoshEncodingId::kKannada = 16; -const int32_t MacintoshEncodingId::kMalayalam = 17; -const int32_t MacintoshEncodingId::kSinhalese = 18; -const int32_t MacintoshEncodingId::kBurmese = 19; -const int32_t MacintoshEncodingId::kKhmer = 20; -const int32_t MacintoshEncodingId::kThai = 21; -const int32_t MacintoshEncodingId::kLaotian = 22; -const int32_t MacintoshEncodingId::kGeorgian = 23; -const int32_t MacintoshEncodingId::kArmenian = 24; -const int32_t MacintoshEncodingId::kChineseSimplified = 25; -const int32_t MacintoshEncodingId::kTibetan = 26; -const int32_t MacintoshEncodingId::kMongolian = 27; -const int32_t MacintoshEncodingId::kGeez = 28; -const int32_t MacintoshEncodingId::kSlavic = 29; -const int32_t MacintoshEncodingId::kVietnamese = 30; -const int32_t MacintoshEncodingId::kSindhi = 31; -const int32_t MacintoshEncodingId::kUninterpreted = 32; - const int32_t SFNTVERSION_1 = Fixed1616::fixed(1, 0); -const int32_t Font::Offset::kSfntVersion = 0; -const int32_t Font::Offset::kNumTables = 4; -const int32_t Font::Offset::kSearchRange = 6; -const int32_t Font::Offset::kEntrySelector = 8; -const int32_t Font::Offset::kRangeShift = 10; -const int32_t Font::Offset::kTableRecordBegin = 12; -const int32_t Font::Offset::kSfntHeaderSize = 12; -const int32_t Font::Offset::kTableTag = 0; -const int32_t Font::Offset::kTableCheckSum = 4; -const int32_t Font::Offset::kTableOffset = 8; -const int32_t Font::Offset::kTableLength = 12; -const int32_t Font::Offset::kTableRecordSize = 16; - /****************************************************************************** * Font class ******************************************************************************/ diff --git a/cpp/src/sfntly/font.h b/cpp/src/sfntly/font.h index 4b1dc1b..cbd9607 100644 --- a/cpp/src/sfntly/font.h +++ b/cpp/src/sfntly/font.h @@ -36,78 +36,86 @@ namespace sfntly { // Platform ids. These are used in a number of places within the font whenever // the platform needs to be specified. struct PlatformId { - static const int32_t kUnknown; - static const int32_t kUnicode; - static const int32_t kMacintosh; - static const int32_t kISO; - static const int32_t kWindows; - static const int32_t kCustom; + enum { + kUnknown = -1, + kUnicode = 0, + kMacintosh = 1, + kISO = 2, + kWindows = 3, + kCustom = 4 + }; }; // Unicode encoding ids. These are used in a number of places within the font // whenever character encodings need to be specified. struct UnicodeEncodingId { - static const int32_t kUnknown; - static const int32_t kUnicode1_0; - static const int32_t kUnicode1_1; - static const int32_t kISO10646; - static const int32_t kUnicode2_0_BMP; - static const int32_t kUnicode2_0; - static const int32_t kUnicodeVariationSequences; + enum { + kUnknown = -1, + kUnicode1_0 = 0, + kUnicode1_1 = 1, + kISO10646 = 2, + kUnicode2_0_BMP = 3, + kUnicode2_0 = 4, + kUnicodeVariationSequences = 5 + }; }; // Windows encoding ids. These are used in a number of places within the font // whenever character encodings need to be specified. struct WindowsEncodingId { - static const int32_t kUnknown; - static const int32_t kSymbol; - static const int32_t kUnicodeUCS2; - static const int32_t kShiftJIS; - static const int32_t kPRC; - static const int32_t kBig5; - static const int32_t kWansung; - static const int32_t kJohab; - static const int32_t kUnicodeUCS4; + enum { + kUnknown = 0xffffffff, + kSymbol = 0, + kUnicodeUCS2 = 1, + kShiftJIS = 2, + kPRC = 3, + kBig5 = 4, + kWansung = 5, + kJohab = 6, + kUnicodeUCS4 = 10 + }; }; // Macintosh encoding ids. These are used in a number of places within the // font whenever character encodings need to be specified. struct MacintoshEncodingId { // Macintosh Platform Encodings - static const int32_t kUnknown; - static const int32_t kRoman; - static const int32_t kJapanese; - static const int32_t kChineseTraditional; - static const int32_t kKorean; - static const int32_t kArabic; - static const int32_t kHebrew; - static const int32_t kGreek; - static const int32_t kRussian; - static const int32_t kRSymbol; - static const int32_t kDevanagari; - static const int32_t kGurmukhi; - static const int32_t kGujarati; - static const int32_t kOriya; - static const int32_t kBengali; - static const int32_t kTamil; - static const int32_t kTelugu; - static const int32_t kKannada; - static const int32_t kMalayalam; - static const int32_t kSinhalese; - static const int32_t kBurmese; - static const int32_t kKhmer; - static const int32_t kThai; - static const int32_t kLaotian; - static const int32_t kGeorgian; - static const int32_t kArmenian; - static const int32_t kChineseSimplified; - static const int32_t kTibetan; - static const int32_t kMongolian; - static const int32_t kGeez; - static const int32_t kSlavic; - static const int32_t kVietnamese; - static const int32_t kSindhi; - static const int32_t kUninterpreted; + enum { + kUnknown = -1, + kRoman = 0, + kJapanese = 1, + kChineseTraditional = 2, + kKorean = 3, + kArabic = 4, + kHebrew = 5, + kGreek = 6, + kRussian = 7, + kRSymbol = 8, + kDevanagari = 9, + kGurmukhi = 10, + kGujarati = 11, + kOriya = 12, + kBengali = 13, + kTamil = 14, + kTelugu = 15, + kKannada = 16, + kMalayalam = 17, + kSinhalese = 18, + kBurmese = 19, + kKhmer = 20, + kThai = 21, + kLaotian = 22, + kGeorgian = 23, + kArmenian = 24, + kChineseSimplified = 25, + kTibetan = 26, + kMongolian = 27, + kGeez = 28, + kSlavic = 29, + kVietnamese = 30, + kSindhi = 31, + kUninterpreted = 32 + }; }; extern const int32_t SFNTVERSION_1; @@ -119,21 +127,23 @@ class Font : public RefCounted<Font> { // relative to the start of the table or the start of sub-blocks within the // table. struct Offset { + enum { // Offsets within the main directory - static const int32_t kSfntVersion; - static const int32_t kNumTables; - static const int32_t kSearchRange; - static const int32_t kEntrySelector; - static const int32_t kRangeShift; - static const int32_t kTableRecordBegin; - static const int32_t kSfntHeaderSize; + kSfntVersion = 0, + kNumTables = 4, + kSearchRange = 6, + kEntrySelector = 8, + kRangeShift = 10, + kTableRecordBegin = 12, + kSfntHeaderSize = 12, // Offsets within a specific table record - static const int32_t kTableTag; - static const int32_t kTableCheckSum; - static const int32_t kTableOffset; - static const int32_t kTableLength; - static const int32_t kTableRecordSize; + kTableTag = 0, + kTableCheckSum = 4, + kTableOffset = 8, + kTableLength = 12, + kTableRecordSize = 16 + }; }; // Note: the two constants are moved to tag.h to avoid VC++ bug. diff --git a/cpp/src/sfntly/font_factory.cc b/cpp/src/sfntly/font_factory.cc index f1d1f25..b741f0a 100644 --- a/cpp/src/sfntly/font_factory.cc +++ b/cpp/src/sfntly/font_factory.cc @@ -23,14 +23,6 @@ namespace sfntly { -const int32_t FontFactory::Offset::kTTCTag = 0; -const int32_t FontFactory::Offset::kVersion = 4; -const int32_t FontFactory::Offset::kNumFonts = 8; -const int32_t FontFactory::Offset::kOffsetTable = 12; -const int32_t FontFactory::Offset::kulDsigTag = 0; -const int32_t FontFactory::Offset::kulDsigLength = 4; -const int32_t FontFactory::Offset::kulDsigOffset = 8; - FontFactory::FontFactory() : fingerprint_(false) { } diff --git a/cpp/src/sfntly/font_factory.h b/cpp/src/sfntly/font_factory.h index 9307d91..907ea66 100644 --- a/cpp/src/sfntly/font_factory.h +++ b/cpp/src/sfntly/font_factory.h @@ -31,17 +31,19 @@ class FontFactory : public RefCounted<FontFactory> { // relative to the start of the table or the start of sub-blocks within the // table. struct Offset { - // Offsets within the main directory - static const int32_t kTTCTag; - static const int32_t kVersion; - static const int32_t kNumFonts; - static const int32_t kOffsetTable; - - // TTC Version 2.0 extensions - // offsets from end of OffsetTable - static const int32_t kulDsigTag; - static const int32_t kulDsigLength; - static const int32_t kulDsigOffset; + enum { + // Offsets within the main directory + kTTCTag = 0, + kVersion = 4, + kNumFonts = 8, + kOffsetTable = 12, + + // TTC Version 2.0 extensions + // offsets from end of OffsetTable + kulDsigTag = 0, + kulDsigLength = 4, + kulDsigOffset = 8 + }; }; FontFactory(); diff --git a/cpp/src/sfntly/font_header_table.cc b/cpp/src/sfntly/font_header_table.cc index 5d23d39..7710c5a 100644 --- a/cpp/src/sfntly/font_header_table.cc +++ b/cpp/src/sfntly/font_header_table.cc @@ -18,36 +18,6 @@ namespace sfntly { /****************************************************************************** - * Constants - ******************************************************************************/ -const int32_t FontHeaderTable::Offset::kTableVersion = 0; -const int32_t FontHeaderTable::Offset::kFontRevision = 4; -const int32_t FontHeaderTable::Offset::kCheckSumAdjustment = 8; -const int32_t FontHeaderTable::Offset::kMagicNumber = 12; -const int32_t FontHeaderTable::Offset::kFlags = 16; -const int32_t FontHeaderTable::Offset::kUnitsPerEm = 18; -const int32_t FontHeaderTable::Offset::kCreated = 20; -const int32_t FontHeaderTable::Offset::kModified = 28; -const int32_t FontHeaderTable::Offset::kXMin = 36; -const int32_t FontHeaderTable::Offset::kYMin = 38; -const int32_t FontHeaderTable::Offset::kXMax = 40; -const int32_t FontHeaderTable::Offset::kYMax = 42; -const int32_t FontHeaderTable::Offset::kMacStyle = 44; -const int32_t FontHeaderTable::Offset::kLowestRecPPEM = 46; -const int32_t FontHeaderTable::Offset::kFontDirectionHint = 48; -const int32_t FontHeaderTable::Offset::kIndexToLocFormat = 50; -const int32_t FontHeaderTable::Offset::kGlyphDataFormat = 52; - -const int32_t IndexToLocFormat::kShortOffset = 0; -const int32_t IndexToLocFormat::kLongOffset = 1; - -const int32_t FontDirectionHint::kFullyMixed = 0; -const int32_t FontDirectionHint::kOnlyStrongLTR = 1; -const int32_t FontDirectionHint::kStrongLTRAndNeutral = 2; -const int32_t FontDirectionHint::kOnlyStrongRTL = -1; -const int32_t FontDirectionHint::kStrongRTLAndNeutral = -2; - -/****************************************************************************** * FontHeaderTable class ******************************************************************************/ FontHeaderTable::FontHeaderTable(Header* header, ReadableFontData* data) diff --git a/cpp/src/sfntly/font_header_table.h b/cpp/src/sfntly/font_header_table.h index cac33c8..c8aa9fe 100644 --- a/cpp/src/sfntly/font_header_table.h +++ b/cpp/src/sfntly/font_header_table.h @@ -22,38 +22,44 @@ namespace sfntly { struct IndexToLocFormat { - static const int32_t kShortOffset; - static const int32_t kLongOffset; + enum { + kShortOffset = 0, + kLongOffset = 1 + }; }; struct FontDirectionHint { - static const int32_t kFullyMixed; - static const int32_t kOnlyStrongLTR; - static const int32_t kStrongLTRAndNeutral; - static const int32_t kOnlyStrongRTL; - static const int32_t kStrongRTLAndNeutral; + enum { + kFullyMixed = 0, + kOnlyStrongLTR = 1, + kStrongLTRAndNeutral = 2, + kOnlyStrongRTL = -1, + kStrongRTLAndNeutral = -2 + }; }; class FontHeaderTable : public Table, public RefCounted<FontHeaderTable> { private: struct Offset { - static const int32_t kTableVersion; - static const int32_t kFontRevision; - static const int32_t kCheckSumAdjustment; - static const int32_t kMagicNumber; - static const int32_t kFlags; - static const int32_t kUnitsPerEm; - static const int32_t kCreated; - static const int32_t kModified; - static const int32_t kXMin; - static const int32_t kYMin; - static const int32_t kXMax; - static const int32_t kYMax; - static const int32_t kMacStyle; - static const int32_t kLowestRecPPEM; - static const int32_t kFontDirectionHint; - static const int32_t kIndexToLocFormat; - static const int32_t kGlyphDataFormat; + enum { + kTableVersion = 0, + kFontRevision = 4, + kCheckSumAdjustment = 8, + kMagicNumber = 12, + kFlags = 16, + kUnitsPerEm = 18, + kCreated = 20, + kModified = 28, + kXMin = 36, + kYMin = 38, + kXMax = 40, + kYMax = 42, + kMacStyle = 44, + kLowestRecPPEM = 46, + kFontDirectionHint = 48, + kIndexToLocFormat = 50, + kGlyphDataFormat = 52 + }; }; private: diff --git a/cpp/src/sfntly/glyph_table.cc b/cpp/src/sfntly/glyph_table.cc index 4cd6436..3ff6d97 100644 --- a/cpp/src/sfntly/glyph_table.cc +++ b/cpp/src/sfntly/glyph_table.cc @@ -23,21 +23,6 @@ namespace sfntly { /****************************************************************************** * Constants ******************************************************************************/ -const int32_t GlyphTable::Offset::kNumberOfContours = 0; -const int32_t GlyphTable::Offset::kXMin = 2; -const int32_t GlyphTable::Offset::kYMin = 4; -const int32_t GlyphTable::Offset::kXMax = 6; -const int32_t GlyphTable::Offset::kYMax = 8; -const int32_t GlyphTable::Offset::kSimpleEndPtsOfCountours = 10; -const int32_t GlyphTable::Offset::kSimpleInstructionLength = 0; -const int32_t GlyphTable::Offset::kSimpleInstructions = 2; -const int32_t GlyphTable::Offset::kCompositeFlags = 0; -const int32_t GlyphTable::Offset::kCompositeGyphIndexWithoutFlag = 0; -const int32_t GlyphTable::Offset::kCompositeGlyphIndexWithFlag = 2; - -const int32_t GlyphType::kSimple = 0; -const int32_t GlyphType::kComposite = 1; - const int32_t GlyphTable::SimpleGlyph::kFLAG_ONCURVE = 1; const int32_t GlyphTable::SimpleGlyph::kFLAG_XSHORT = 1 << 1; const int32_t GlyphTable::SimpleGlyph::kFLAG_YSHORT = 1 << 2; diff --git a/cpp/src/sfntly/glyph_table.h b/cpp/src/sfntly/glyph_table.h index 6f04d45..8a7a8aa 100644 --- a/cpp/src/sfntly/glyph_table.h +++ b/cpp/src/sfntly/glyph_table.h @@ -25,8 +25,10 @@ namespace sfntly { struct GlyphType { - static const int32_t kSimple; - static const int32_t kComposite; + enum { + kSimple = 0, + kComposite = 1 + }; }; // Note: due to the complexity of this class, the order of declaration is @@ -35,26 +37,28 @@ struct GlyphType { class GlyphTable : public Table, public RefCounted<GlyphTable> { public: struct Offset { - // header - static const int32_t kNumberOfContours; - static const int32_t kXMin; - static const int32_t kYMin; - static const int32_t kXMax; - static const int32_t kYMax; - - // Simple Glyph Description - static const int32_t kSimpleEndPtsOfCountours; - // offset from the end of the contours array - static const int32_t kSimpleInstructionLength; - static const int32_t kSimpleInstructions; - // flags - // xCoordinates - // yCoordinates - - // Composite Glyph Description - static const int32_t kCompositeFlags; - static const int32_t kCompositeGyphIndexWithoutFlag; - static const int32_t kCompositeGlyphIndexWithFlag; + enum { + // header + kNumberOfContours = 0, + kXMin = 2, + kYMin = 4, + kXMax = 6, + kYMax = 8, + + // Simple Glyph Description + kSimpleEndPtsOfCountours = 10, + // offset from the end of the contours array + kSimpleInstructionLength = 0, + kSimpleInstructions = 2, + // flags + // xCoordinates + // yCoordinates + + // Composite Glyph Description + kCompositeFlags = 0, + kCompositeGyphIndexWithoutFlag = 0, + kCompositeGlyphIndexWithFlag = 2, + }; }; private: diff --git a/cpp/src/sfntly/horizontal_header_table.cc b/cpp/src/sfntly/horizontal_header_table.cc index 68afeea..f30e8db 100644 --- a/cpp/src/sfntly/horizontal_header_table.cc +++ b/cpp/src/sfntly/horizontal_header_table.cc @@ -22,23 +22,6 @@ namespace sfntly { /****************************************************************************** - * HorizontalHeaderTable::Builder class - ******************************************************************************/ -const int32_t HorizontalHeaderTable::Offset::kVersion = 0; -const int32_t HorizontalHeaderTable::Offset::kAscender = 4; -const int32_t HorizontalHeaderTable::Offset::kDescender = 6; -const int32_t HorizontalHeaderTable::Offset::kLineGap = 8; -const int32_t HorizontalHeaderTable::Offset::kAdvanceWidthMax = 10; -const int32_t HorizontalHeaderTable::Offset::kMinLeftSideBearing = 12; -const int32_t HorizontalHeaderTable::Offset::kMinRightSideBearing = 14; -const int32_t HorizontalHeaderTable::Offset::kXMaxExtent = 16; -const int32_t HorizontalHeaderTable::Offset::kCaretSlopeRise = 18; -const int32_t HorizontalHeaderTable::Offset::kCaretSlopeRun = 20; -const int32_t HorizontalHeaderTable::Offset::kCaretOffset = 22; -const int32_t HorizontalHeaderTable::Offset::kMetricDataFormat = 32; -const int32_t HorizontalHeaderTable::Offset::kNumberOfHMetrics = 34; - -/****************************************************************************** * HorizontalHeaderTable class ******************************************************************************/ HorizontalHeaderTable:: HorizontalHeaderTable(Header* header, diff --git a/cpp/src/sfntly/horizontal_header_table.h b/cpp/src/sfntly/horizontal_header_table.h index 36f4180..704391c 100644 --- a/cpp/src/sfntly/horizontal_header_table.h +++ b/cpp/src/sfntly/horizontal_header_table.h @@ -25,19 +25,21 @@ class HorizontalHeaderTable : public Table, public RefCounted<HorizontalHeaderTable> { private: struct Offset { - static const int32_t kVersion; - static const int32_t kAscender; - static const int32_t kDescender; - static const int32_t kLineGap; - static const int32_t kAdvanceWidthMax; - static const int32_t kMinLeftSideBearing; - static const int32_t kMinRightSideBearing; - static const int32_t kXMaxExtent; - static const int32_t kCaretSlopeRise; - static const int32_t kCaretSlopeRun; - static const int32_t kCaretOffset; - static const int32_t kMetricDataFormat; - static const int32_t kNumberOfHMetrics; + enum { + kVersion = 0, + kAscender = 4, + kDescender = 6, + kLineGap = 8, + kAdvanceWidthMax = 10, + kMinLeftSideBearing = 12, + kMinRightSideBearing = 14, + kXMaxExtent = 16, + kCaretSlopeRise = 18, + kCaretSlopeRun = 20, + kCaretOffset = 22, + kMetricDataFormat = 32, + kNumberOfHMetrics = 34, + }; }; private: diff --git a/cpp/src/sfntly/horizontal_metrics_table.cc b/cpp/src/sfntly/horizontal_metrics_table.cc index d6beab1..c151e18 100644 --- a/cpp/src/sfntly/horizontal_metrics_table.cc +++ b/cpp/src/sfntly/horizontal_metrics_table.cc @@ -19,15 +19,6 @@ namespace sfntly { /****************************************************************************** - * Constants - ******************************************************************************/ -const int32_t HorizontalMetricsTable::Offset::kHMetricsStart = 0; -const int32_t HorizontalMetricsTable::Offset::kHMetricsSize = 4; -const int32_t HorizontalMetricsTable::Offset::kHMetricsAdvanceWidth = 0; -const int32_t HorizontalMetricsTable::Offset::kHMetricsLeftSideBearing = 2; -const int32_t HorizontalMetricsTable::Offset::kLeftSideBearingSize = 2; - -/****************************************************************************** * HorizontalMetricsTable class ******************************************************************************/ HorizontalMetricsTable::HorizontalMetricsTable(Header* header, diff --git a/cpp/src/sfntly/horizontal_metrics_table.h b/cpp/src/sfntly/horizontal_metrics_table.h index 0f1d651..c393fee 100644 --- a/cpp/src/sfntly/horizontal_metrics_table.h +++ b/cpp/src/sfntly/horizontal_metrics_table.h @@ -25,15 +25,17 @@ class HorizontalMetricsTable : public Table, public RefCounted<HorizontalMetricsTable> { private: struct Offset { - // hMetrics - static const int32_t kHMetricsStart; - static const int32_t kHMetricsSize; + enum { + // hMetrics + kHMetricsStart = 0, + kHMetricsSize = 4, - // Offset within an hMetric - static const int32_t kHMetricsAdvanceWidth; - static const int32_t kHMetricsLeftSideBearing; + // Offset within an hMetric + kHMetricsAdvanceWidth = 0, + kHMetricsLeftSideBearing = 2, - static const int32_t kLeftSideBearingSize; + kLeftSideBearingSize = 2 + }; }; private: diff --git a/cpp/src/sfntly/maximum_profile_table.cc b/cpp/src/sfntly/maximum_profile_table.cc index a79d1e4..61a176e 100644 --- a/cpp/src/sfntly/maximum_profile_table.cc +++ b/cpp/src/sfntly/maximum_profile_table.cc @@ -18,25 +18,6 @@ namespace sfntly { /****************************************************************************** - * Constants - ******************************************************************************/ -const int32_t MaximumProfileTable::Offset::kVersion = 0; -const int32_t MaximumProfileTable::Offset::kNumGlyphs = 4; -const int32_t MaximumProfileTable::Offset::kMaxPoints = 6; -const int32_t MaximumProfileTable::Offset::kMaxContours = 8; -const int32_t MaximumProfileTable::Offset::kMaxCompositePoints = 10; -const int32_t MaximumProfileTable::Offset::kMaxCompositeContours = 12; -const int32_t MaximumProfileTable::Offset::kMaxZones = 14; -const int32_t MaximumProfileTable::Offset::kMaxTwilightPoints = 16; -const int32_t MaximumProfileTable::Offset::kMaxStorage = 18; -const int32_t MaximumProfileTable::Offset::kMaxFunctionDefs = 20; -const int32_t MaximumProfileTable::Offset::kMaxInstructionDefs = 22; -const int32_t MaximumProfileTable::Offset::kMaxStackElements = 24; -const int32_t MaximumProfileTable::Offset::kMaxSizeOfInstructions = 26; -const int32_t MaximumProfileTable::Offset::kMaxComponentElements = 28; -const int32_t MaximumProfileTable::Offset::kMaxComponentDepth = 30; - -/****************************************************************************** * MaximumProfileTable class ******************************************************************************/ MaximumProfileTable::MaximumProfileTable(Header* header, diff --git a/cpp/src/sfntly/maximum_profile_table.h b/cpp/src/sfntly/maximum_profile_table.h index 7a0b941..044eccf 100644 --- a/cpp/src/sfntly/maximum_profile_table.h +++ b/cpp/src/sfntly/maximum_profile_table.h @@ -26,24 +26,26 @@ class MaximumProfileTable : public Table, public RefCounted<MaximumProfileTable> { private: struct Offset { - // version 0.5 and 1.0 - static const int32_t kVersion; - static const int32_t kNumGlyphs; + enum { + // version 0.5 and 1.0 + kVersion = 0, + kNumGlyphs = 4, - // version 1.0 - static const int32_t kMaxPoints; - static const int32_t kMaxContours; - static const int32_t kMaxCompositePoints; - static const int32_t kMaxCompositeContours; - static const int32_t kMaxZones; - static const int32_t kMaxTwilightPoints; - static const int32_t kMaxStorage; - static const int32_t kMaxFunctionDefs; - static const int32_t kMaxInstructionDefs; - static const int32_t kMaxStackElements; - static const int32_t kMaxSizeOfInstructions; - static const int32_t kMaxComponentElements; - static const int32_t kMaxComponentDepth; + // version 1.0 + kMaxPoints = 6, + kMaxContours = 8, + kMaxCompositePoints = 10, + kMaxCompositeContours = 12, + kMaxZones = 14, + kMaxTwilightPoints = 16, + kMaxStorage = 18, + kMaxFunctionDefs = 20, + kMaxInstructionDefs = 22, + kMaxStackElements = 24, + kMaxSizeOfInstructions = 26, + kMaxComponentElements = 28, + kMaxComponentDepth = 30, + }; }; private: diff --git a/cpp/src/sfntly/name_table.cc b/cpp/src/sfntly/name_table.cc index b344bfa..cee6e3d 100644 --- a/cpp/src/sfntly/name_table.cc +++ b/cpp/src/sfntly/name_table.cc @@ -20,378 +20,6 @@ namespace sfntly { /****************************************************************************** - * Constants - ******************************************************************************/ -const int32_t NameTable::Offset::kFormat = 0; -const int32_t NameTable::Offset::kCount = 2; -const int32_t NameTable::Offset::kStringOffset = 4; -const int32_t NameTable::Offset::kNameRecordStart = 6; -const int32_t NameTable::Offset::kLangTagCount = 0; -const int32_t NameTable::Offset::kLangTagRecord = 2; -const int32_t NameTable::Offset::kNameRecordSize = 12; -const int32_t NameTable::Offset::kNameRecordPlatformId = 0; -const int32_t NameTable::Offset::kNameRecordEncodingId = 2; -const int32_t NameTable::Offset::kNameRecordLanguageId = 4; -const int32_t NameTable::Offset::kNameRecordNameId = 6; -const int32_t NameTable::Offset::kNameRecordStringLength = 8; -const int32_t NameTable::Offset::kNameRecordStringOffset = 10; - -const int32_t NameTable::NameId::kUnknown = -1; -const int32_t NameTable::NameId::kCopyrightNotice = 0; -const int32_t NameTable::NameId::kFontFamilyName = 1; -const int32_t NameTable::NameId::kFontSubfamilyName = 2; -const int32_t NameTable::NameId::kUniqueFontIdentifier = 3; -const int32_t NameTable::NameId::kFullFontName = 4; -const int32_t NameTable::NameId::kVersionString = 5; -const int32_t NameTable::NameId::kPostscriptName = 6; -const int32_t NameTable::NameId::kTrademark = 7; -const int32_t NameTable::NameId::kManufacturerName = 8; -const int32_t NameTable::NameId::kDesigner = 9; -const int32_t NameTable::NameId::kDescription = 10; -const int32_t NameTable::NameId::kVendorURL = 11; -const int32_t NameTable::NameId::kDesignerURL = 12; -const int32_t NameTable::NameId::kLicenseDescription = 13; -const int32_t NameTable::NameId::kLicenseInfoURL = 14; -const int32_t NameTable::NameId::kReserved15 = 15; -const int32_t NameTable::NameId::kPreferredFamily = 16; -const int32_t NameTable::NameId::kPreferredSubfamily = 17; -const int32_t NameTable::NameId::kCompatibleFullName = 18; -const int32_t NameTable::NameId::kSampleText = 19; -const int32_t NameTable::NameId::kPostscriptCID = 20; -const int32_t NameTable::NameId::kWWSFamilyName = 21; -const int32_t NameTable::NameId::kWWSSubfamilyName = 22; - -const int32_t UnicodeLanguageId::kUnknown = -1; -const int32_t UnicodeLanguageId::kAll = 0; - -const int32_t MacintoshLanguageId::kUnknown = -1; -const int32_t MacintoshLanguageId::kEnglish = 0; -const int32_t MacintoshLanguageId::kFrench = 1; -const int32_t MacintoshLanguageId::kGerman = 2; -const int32_t MacintoshLanguageId::kItalian = 3; -const int32_t MacintoshLanguageId::kDutch = 4; -const int32_t MacintoshLanguageId::kSwedish = 5; -const int32_t MacintoshLanguageId::kSpanish = 6; -const int32_t MacintoshLanguageId::kDanish = 7; -const int32_t MacintoshLanguageId::kPortuguese = 8; -const int32_t MacintoshLanguageId::kNorwegian = 9; -const int32_t MacintoshLanguageId::kHebrew = 10; -const int32_t MacintoshLanguageId::kJapanese = 11; -const int32_t MacintoshLanguageId::kArabic = 12; -const int32_t MacintoshLanguageId::kFinnish = 13; -const int32_t MacintoshLanguageId::kGreek = 14; -const int32_t MacintoshLanguageId::kIcelandic = 15; -const int32_t MacintoshLanguageId::kMaltese = 16; -const int32_t MacintoshLanguageId::kTurkish = 17; -const int32_t MacintoshLanguageId::kCroatian = 18; -const int32_t MacintoshLanguageId::kChinese_Traditional = 19; -const int32_t MacintoshLanguageId::kUrdu = 20; -const int32_t MacintoshLanguageId::kHindi = 21; -const int32_t MacintoshLanguageId::kThai = 22; -const int32_t MacintoshLanguageId::kKorean = 23; -const int32_t MacintoshLanguageId::kLithuanian = 24; -const int32_t MacintoshLanguageId::kPolish = 25; -const int32_t MacintoshLanguageId::kHungarian = 26; -const int32_t MacintoshLanguageId::kEstonian = 27; -const int32_t MacintoshLanguageId::kLatvian = 28; -const int32_t MacintoshLanguageId::kSami = 29; -const int32_t MacintoshLanguageId::kFaroese = 30; -const int32_t MacintoshLanguageId::kFarsiPersian = 31; -const int32_t MacintoshLanguageId::kRussian = 32; -const int32_t MacintoshLanguageId::kChinese_Simplified = 33; -const int32_t MacintoshLanguageId::kFlemish = 34; -const int32_t MacintoshLanguageId::kIrishGaelic = 35; -const int32_t MacintoshLanguageId::kAlbanian = 36; -const int32_t MacintoshLanguageId::kRomanian = 37; -const int32_t MacintoshLanguageId::kCzech = 38; -const int32_t MacintoshLanguageId::kSlovak = 39; -const int32_t MacintoshLanguageId::kSlovenian = 40; -const int32_t MacintoshLanguageId::kYiddish = 41; -const int32_t MacintoshLanguageId::kSerbian = 42; -const int32_t MacintoshLanguageId::kMacedonian = 43; -const int32_t MacintoshLanguageId::kBulgarian = 44; -const int32_t MacintoshLanguageId::kUkrainian = 45; -const int32_t MacintoshLanguageId::kByelorussian = 46; -const int32_t MacintoshLanguageId::kUzbek = 47; -const int32_t MacintoshLanguageId::kKazakh = 48; -const int32_t MacintoshLanguageId::kAzerbaijani_Cyrillic = 49; -const int32_t MacintoshLanguageId::kAzerbaijani_Arabic = 50; -const int32_t MacintoshLanguageId::kArmenian = 51; -const int32_t MacintoshLanguageId::kGeorgian = 52; -const int32_t MacintoshLanguageId::kMoldavian = 53; -const int32_t MacintoshLanguageId::kKirghiz = 54; -const int32_t MacintoshLanguageId::kTajiki = 55; -const int32_t MacintoshLanguageId::kTurkmen = 56; -const int32_t MacintoshLanguageId::kMongolian_Mongolian = 57; -const int32_t MacintoshLanguageId::kMongolian_Cyrillic = 58; -const int32_t MacintoshLanguageId::kPashto = 59; -const int32_t MacintoshLanguageId::kKurdish = 60; -const int32_t MacintoshLanguageId::kKashmiri = 61; -const int32_t MacintoshLanguageId::kSindhi = 62; -const int32_t MacintoshLanguageId::kTibetan = 63; -const int32_t MacintoshLanguageId::kNepali = 64; -const int32_t MacintoshLanguageId::kSanskrit = 65; -const int32_t MacintoshLanguageId::kMarathi = 66; -const int32_t MacintoshLanguageId::kBengali = 67; -const int32_t MacintoshLanguageId::kAssamese = 68; -const int32_t MacintoshLanguageId::kGujarati = 69; -const int32_t MacintoshLanguageId::kPunjabi = 70; -const int32_t MacintoshLanguageId::kOriya = 71; -const int32_t MacintoshLanguageId::kMalayalam = 72; -const int32_t MacintoshLanguageId::kKannada = 73; -const int32_t MacintoshLanguageId::kTamil = 74; -const int32_t MacintoshLanguageId::kTelugu = 75; -const int32_t MacintoshLanguageId::kSinhalese = 76; -const int32_t MacintoshLanguageId::kBurmese = 77; -const int32_t MacintoshLanguageId::kKhmer = 78; -const int32_t MacintoshLanguageId::kLao = 79; -const int32_t MacintoshLanguageId::kVietnamese = 80; -const int32_t MacintoshLanguageId::kIndonesian = 81; -const int32_t MacintoshLanguageId::kTagalong = 82; -const int32_t MacintoshLanguageId::kMalay_Roman = 83; -const int32_t MacintoshLanguageId::kMalay_Arabic = 84; -const int32_t MacintoshLanguageId::kAmharic = 85; -const int32_t MacintoshLanguageId::kTigrinya = 86; -const int32_t MacintoshLanguageId::kGalla = 87; -const int32_t MacintoshLanguageId::kSomali = 88; -const int32_t MacintoshLanguageId::kSwahili = 89; -const int32_t MacintoshLanguageId::kKinyarwandaRuanda = 90; -const int32_t MacintoshLanguageId::kRundi = 91; -const int32_t MacintoshLanguageId::kNyanjaChewa = 92; -const int32_t MacintoshLanguageId::kMalagasy = 93; -const int32_t MacintoshLanguageId::kEsperanto = 94; -const int32_t MacintoshLanguageId::kWelsh = 128; -const int32_t MacintoshLanguageId::kBasque = 129; -const int32_t MacintoshLanguageId::kCatalan = 130; -const int32_t MacintoshLanguageId::kLatin = 131; -const int32_t MacintoshLanguageId::kQuenchua = 132; -const int32_t MacintoshLanguageId::kGuarani = 133; -const int32_t MacintoshLanguageId::kAymara = 134; -const int32_t MacintoshLanguageId::kTatar = 135; -const int32_t MacintoshLanguageId::kUighur = 136; -const int32_t MacintoshLanguageId::kDzongkha = 137; -const int32_t MacintoshLanguageId::kJavanese_Roman = 138; -const int32_t MacintoshLanguageId::kSundanese_Roman = 139; -const int32_t MacintoshLanguageId::kGalician = 140; -const int32_t MacintoshLanguageId::kAfrikaans = 141; -const int32_t MacintoshLanguageId::kBreton = 142; -const int32_t MacintoshLanguageId::kInuktitut = 143; -const int32_t MacintoshLanguageId::kScottishGaelic = 144; -const int32_t MacintoshLanguageId::kManxGaelic = 145; -const int32_t MacintoshLanguageId::kIrishGaelic_WithDotAbove = 146; -const int32_t MacintoshLanguageId::kTongan = 147; -const int32_t MacintoshLanguageId::kGreek_Polytonic = 148; -const int32_t MacintoshLanguageId::kGreenlandic = 149; -const int32_t MacintoshLanguageId::kAzerbaijani_Roman = 150; - -const int32_t WindowsLanguageId::kUnknown = -1; -const int32_t WindowsLanguageId::kAfrikaans_SouthAfrica = 0x0436; -const int32_t WindowsLanguageId::kAlbanian_Albania = 0x041C; -const int32_t WindowsLanguageId::kAlsatian_France = 0x0484; -const int32_t WindowsLanguageId::kAmharic_Ethiopia = 0x045E; -const int32_t WindowsLanguageId::kArabic_Algeria = 0x1401; -const int32_t WindowsLanguageId::kArabic_Bahrain = 0x3C01; -const int32_t WindowsLanguageId::kArabic_Egypt = 0x0C01; -const int32_t WindowsLanguageId::kArabic_Iraq = 0x0801; -const int32_t WindowsLanguageId::kArabic_Jordan = 0x2C01; -const int32_t WindowsLanguageId::kArabic_Kuwait = 0x3401; -const int32_t WindowsLanguageId::kArabic_Lebanon = 0x3001; -const int32_t WindowsLanguageId::kArabic_Libya = 0x1001; -const int32_t WindowsLanguageId::kArabic_Morocco = 0x1801; -const int32_t WindowsLanguageId::kArabic_Oman = 0x2001; -const int32_t WindowsLanguageId::kArabic_Qatar = 0x4001; -const int32_t WindowsLanguageId::kArabic_SaudiArabia = 0x0401; -const int32_t WindowsLanguageId::kArabic_Syria = 0x2801; -const int32_t WindowsLanguageId::kArabic_Tunisia = 0x1C01; -const int32_t WindowsLanguageId::kArabic_UAE = 0x3801; -const int32_t WindowsLanguageId::kArabic_Yemen = 0x2401; -const int32_t WindowsLanguageId::kArmenian_Armenia = 0x042B; -const int32_t WindowsLanguageId::kAssamese_India = 0x044D; -const int32_t WindowsLanguageId::kAzeri_Cyrillic_Azerbaijan = 0x082C; -const int32_t WindowsLanguageId::kAzeri_Latin_Azerbaijan = 0x042C; -const int32_t WindowsLanguageId::kBashkir_Russia = 0x046D; -const int32_t WindowsLanguageId::kBasque_Basque = 0x042D; -const int32_t WindowsLanguageId::kBelarusian_Belarus = 0x0423; -const int32_t WindowsLanguageId::kBengali_Bangladesh = 0x0845; -const int32_t WindowsLanguageId::kBengali_India = 0x0445; -const int32_t WindowsLanguageId::kBosnian_Cyrillic_BosniaAndHerzegovina = 0x201A; -const int32_t WindowsLanguageId::kBosnian_Latin_BosniaAndHerzegovina = 0x141A; -const int32_t WindowsLanguageId::kBreton_France = 0x047E; -const int32_t WindowsLanguageId::kBulgarian_Bulgaria = 0x0402; -const int32_t WindowsLanguageId::kCatalan_Catalan = 0x0403; -const int32_t WindowsLanguageId::kChinese_HongKongSAR = 0x0C04; -const int32_t WindowsLanguageId::kChinese_MacaoSAR = 0x1404; -const int32_t WindowsLanguageId::kChinese_PeoplesRepublicOfChina = 0x0804; -const int32_t WindowsLanguageId::kChinese_Singapore = 0x1004; -const int32_t WindowsLanguageId::kChinese_Taiwan = 0x0404; -const int32_t WindowsLanguageId::kCorsican_France = 0x0483; -const int32_t WindowsLanguageId::kCroatian_Croatia = 0x041A; -const int32_t WindowsLanguageId::kCroatian_Latin_BosniaAndHerzegovina = 0x101A; -const int32_t WindowsLanguageId::kCzech_CzechRepublic = 0x0405; -const int32_t WindowsLanguageId::kDanish_Denmark = 0x0406; -const int32_t WindowsLanguageId::kDari_Afghanistan = 0x048C; -const int32_t WindowsLanguageId::kDivehi_Maldives = 0x0465; -const int32_t WindowsLanguageId::kDutch_Belgium = 0x0813; -const int32_t WindowsLanguageId::kDutch_Netherlands = 0x0413; -const int32_t WindowsLanguageId::kEnglish_Australia = 0x0C09; -const int32_t WindowsLanguageId::kEnglish_Belize = 0x2809; -const int32_t WindowsLanguageId::kEnglish_Canada = 0x1009; -const int32_t WindowsLanguageId::kEnglish_Caribbean = 0x2409; -const int32_t WindowsLanguageId::kEnglish_India = 0x4009; -const int32_t WindowsLanguageId::kEnglish_Ireland = 0x1809; -const int32_t WindowsLanguageId::kEnglish_Jamaica = 0x2009; -const int32_t WindowsLanguageId::kEnglish_Malaysia = 0x4409; -const int32_t WindowsLanguageId::kEnglish_NewZealand = 0x1409; -const int32_t WindowsLanguageId::kEnglish_RepublicOfThePhilippines = 0x3409; -const int32_t WindowsLanguageId::kEnglish_Singapore = 0x4809; -const int32_t WindowsLanguageId::kEnglish_SouthAfrica = 0x1C09; -const int32_t WindowsLanguageId::kEnglish_TrinidadAndTobago = 0x2C09; -const int32_t WindowsLanguageId::kEnglish_UnitedKingdom = 0x0809; -const int32_t WindowsLanguageId::kEnglish_UnitedStates = 0x0409; -const int32_t WindowsLanguageId::kEnglish_Zimbabwe = 0x3009; -const int32_t WindowsLanguageId::kEstonian_Estonia = 0x0425; -const int32_t WindowsLanguageId::kFaroese_FaroeIslands = 0x0438; -const int32_t WindowsLanguageId::kFilipino_Philippines = 0x0464; -const int32_t WindowsLanguageId::kFinnish_Finland = 0x040B; -const int32_t WindowsLanguageId::kFrench_Belgium = 0x080C; -const int32_t WindowsLanguageId::kFrench_Canada = 0x0C0C; -const int32_t WindowsLanguageId::kFrench_France = 0x040C; -const int32_t WindowsLanguageId::kFrench_Luxembourg = 0x140c; -const int32_t WindowsLanguageId::kFrench_PrincipalityOfMonoco = 0x180C; -const int32_t WindowsLanguageId::kFrench_Switzerland = 0x100C; -const int32_t WindowsLanguageId::kFrisian_Netherlands = 0x0462; -const int32_t WindowsLanguageId::kGalician_Galician = 0x0456; -const int32_t WindowsLanguageId::kGeorgian_Georgia = 0x0437; -const int32_t WindowsLanguageId::kGerman_Austria = 0x0C07; -const int32_t WindowsLanguageId::kGerman_Germany = 0x0407; -const int32_t WindowsLanguageId::kGerman_Liechtenstein = 0x1407; -const int32_t WindowsLanguageId::kGerman_Luxembourg = 0x1007; -const int32_t WindowsLanguageId::kGerman_Switzerland = 0x0807; -const int32_t WindowsLanguageId::kGreek_Greece = 0x0408; -const int32_t WindowsLanguageId::kGreenlandic_Greenland = 0x046F; -const int32_t WindowsLanguageId::kGujarati_India = 0x0447; -const int32_t WindowsLanguageId::kHausa_Latin_Nigeria = 0x0468; -const int32_t WindowsLanguageId::kHebrew_Israel = 0x040D; -const int32_t WindowsLanguageId::kHindi_India = 0x0439; -const int32_t WindowsLanguageId::kHungarian_Hungary = 0x040E; -const int32_t WindowsLanguageId::kIcelandic_Iceland = 0x040F; -const int32_t WindowsLanguageId::kIgbo_Nigeria = 0x0470; -const int32_t WindowsLanguageId::kIndonesian_Indonesia = 0x0421; -const int32_t WindowsLanguageId::kInuktitut_Canada = 0x045D; -const int32_t WindowsLanguageId::kInuktitut_Latin_Canada = 0x085D; -const int32_t WindowsLanguageId::kIrish_Ireland = 0x083C; -const int32_t WindowsLanguageId::kisiXhosa_SouthAfrica = 0x0434; -const int32_t WindowsLanguageId::kisiZulu_SouthAfrica = 0x0435; -const int32_t WindowsLanguageId::kItalian_Italy = 0x0410; -const int32_t WindowsLanguageId::kItalian_Switzerland = 0x0810; -const int32_t WindowsLanguageId::kJapanese_Japan = 0x0411; -const int32_t WindowsLanguageId::kKannada_India = 0x044B; -const int32_t WindowsLanguageId::kKazakh_Kazakhstan = 0x043F; -const int32_t WindowsLanguageId::kKhmer_Cambodia = 0x0453; -const int32_t WindowsLanguageId::kKiche_Guatemala = 0x0486; -const int32_t WindowsLanguageId::kKinyarwanda_Rwanda = 0x0487; -const int32_t WindowsLanguageId::kKiswahili_Kenya = 0x0441; -const int32_t WindowsLanguageId::kKonkani_India = 0x0457; -const int32_t WindowsLanguageId::kKorean_Korea = 0x0412; -const int32_t WindowsLanguageId::kKyrgyz_Kyrgyzstan = 0x0440; -const int32_t WindowsLanguageId::kLao_LaoPDR = 0x0454; -const int32_t WindowsLanguageId::kLatvian_Latvia = 0x0426; -const int32_t WindowsLanguageId::kLithuanian_Lithuania = 0x0427; -const int32_t WindowsLanguageId::kLowerSorbian_Germany = 0x082E; -const int32_t WindowsLanguageId::kLuxembourgish_Luxembourg = 0x046E; -const int32_t WindowsLanguageId::kMacedonian_FYROM_FormerYugoslavRepublicOfMacedonia = 0x042F; -const int32_t WindowsLanguageId::kMalay_BruneiDarussalam = 0x083E; -const int32_t WindowsLanguageId::kMalay_Malaysia = 0x043E; -const int32_t WindowsLanguageId::kMalayalam_India = 0x044C; -const int32_t WindowsLanguageId::kMaltese_Malta = 0x043A; -const int32_t WindowsLanguageId::kMaori_NewZealand = 0x0481; -const int32_t WindowsLanguageId::kMapudungun_Chile = 0x047A; -const int32_t WindowsLanguageId::kMarathi_India = 0x044E; -const int32_t WindowsLanguageId::kMohawk_Mohawk = 0x047C; -const int32_t WindowsLanguageId::kMongolian_Cyrillic_Mongolia = 0x0450; -const int32_t WindowsLanguageId::kMongolian_Traditional_PeoplesRepublicOfChina = 0x0850; -const int32_t WindowsLanguageId::kNepali_Nepal = 0x0461; -const int32_t WindowsLanguageId::kNorwegian_Bokmal_Norway = 0x0414; -const int32_t WindowsLanguageId::kNorwegian_Nynorsk_Norway = 0x0814; -const int32_t WindowsLanguageId::kOccitan_France = 0x0482; -const int32_t WindowsLanguageId::kOriya_India = 0x0448; -const int32_t WindowsLanguageId::kPashto_Afghanistan = 0x0463; -const int32_t WindowsLanguageId::kPolish_Poland = 0x0415; -const int32_t WindowsLanguageId::kPortuguese_Brazil = 0x0416; -const int32_t WindowsLanguageId::kPortuguese_Portugal = 0x0816; -const int32_t WindowsLanguageId::kPunjabi_India = 0x0446; -const int32_t WindowsLanguageId::kQuechua_Bolivia = 0x046B; -const int32_t WindowsLanguageId::kQuechua_Ecuador = 0x086B; -const int32_t WindowsLanguageId::kQuechua_Peru = 0x0C6B; -const int32_t WindowsLanguageId::kRomanian_Romania = 0x0418; -const int32_t WindowsLanguageId::kRomansh_Switzerland = 0x0417; -const int32_t WindowsLanguageId::kRussian_Russia = 0x0419; -const int32_t WindowsLanguageId::kSami_Inari_Finland = 0x243B; -const int32_t WindowsLanguageId::kSami_Lule_Norway = 0x103B; -const int32_t WindowsLanguageId::kSami_Lule_Sweden = 0x143B; -const int32_t WindowsLanguageId::kSami_Northern_Finland = 0x0C3B; -const int32_t WindowsLanguageId::kSami_Northern_Norway = 0x043B; -const int32_t WindowsLanguageId::kSami_Northern_Sweden = 0x083B; -const int32_t WindowsLanguageId::kSami_Skolt_Finland = 0x203B; -const int32_t WindowsLanguageId::kSami_Southern_Norway = 0x183B; -const int32_t WindowsLanguageId::kSami_Southern_Sweden = 0x1C3B; -const int32_t WindowsLanguageId::kSanskrit_India = 0x044F; -const int32_t WindowsLanguageId::kSerbian_Cyrillic_BosniaAndHerzegovina = 0x1C1A; -const int32_t WindowsLanguageId::kSerbian_Cyrillic_Serbia = 0x0C1A; -const int32_t WindowsLanguageId::kSerbian_Latin_BosniaAndHerzegovina = 0x181A; -const int32_t WindowsLanguageId::kSerbian_Latin_Serbia = 0x081A; -const int32_t WindowsLanguageId::kSesothoSaLeboa_SouthAfrica = 0x046C; -const int32_t WindowsLanguageId::kSetswana_SouthAfrica = 0x0432; -const int32_t WindowsLanguageId::kSinhala_SriLanka = 0x045B; -const int32_t WindowsLanguageId::kSlovak_Slovakia = 0x041B; -const int32_t WindowsLanguageId::kSlovenian_Slovenia = 0x0424; -const int32_t WindowsLanguageId::kSpanish_Argentina = 0x2C0A; -const int32_t WindowsLanguageId::kSpanish_Bolivia = 0x400A; -const int32_t WindowsLanguageId::kSpanish_Chile = 0x340A; -const int32_t WindowsLanguageId::kSpanish_Colombia = 0x240A; -const int32_t WindowsLanguageId::kSpanish_CostaRica = 0x140A; -const int32_t WindowsLanguageId::kSpanish_DominicanRepublic = 0x1C0A; -const int32_t WindowsLanguageId::kSpanish_Ecuador = 0x300A; -const int32_t WindowsLanguageId::kSpanish_ElSalvador = 0x440A; -const int32_t WindowsLanguageId::kSpanish_Guatemala = 0x100A; -const int32_t WindowsLanguageId::kSpanish_Honduras = 0x480A; -const int32_t WindowsLanguageId::kSpanish_Mexico = 0x080A; -const int32_t WindowsLanguageId::kSpanish_Nicaragua = 0x4C0A; -const int32_t WindowsLanguageId::kSpanish_Panama = 0x180A; -const int32_t WindowsLanguageId::kSpanish_Paraguay = 0x3C0A; -const int32_t WindowsLanguageId::kSpanish_Peru = 0x280A; -const int32_t WindowsLanguageId::kSpanish_PuertoRico = 0x500A; -const int32_t WindowsLanguageId::kSpanish_ModernSort_Spain = 0x0C0A; -const int32_t WindowsLanguageId::kSpanish_TraditionalSort_Spain = 0x040A; -const int32_t WindowsLanguageId::kSpanish_UnitedStates = 0x540A; -const int32_t WindowsLanguageId::kSpanish_Uruguay = 0x380A; -const int32_t WindowsLanguageId::kSpanish_Venezuela = 0x200A; -const int32_t WindowsLanguageId::kSweden_Finland = 0x081D; -const int32_t WindowsLanguageId::kSwedish_Sweden = 0x041D; -const int32_t WindowsLanguageId::kSyriac_Syria = 0x045A; -const int32_t WindowsLanguageId::kTajik_Cyrillic_Tajikistan = 0x0428; -const int32_t WindowsLanguageId::kTamazight_Latin_Algeria = 0x085F; -const int32_t WindowsLanguageId::kTamil_India = 0x0449; -const int32_t WindowsLanguageId::kTatar_Russia = 0x0444; -const int32_t WindowsLanguageId::kTelugu_India = 0x044A; -const int32_t WindowsLanguageId::kThai_Thailand = 0x041E; -const int32_t WindowsLanguageId::kTibetan_PRC = 0x0451; -const int32_t WindowsLanguageId::kTurkish_Turkey = 0x041F; -const int32_t WindowsLanguageId::kTurkmen_Turkmenistan = 0x0442; -const int32_t WindowsLanguageId::kUighur_PRC = 0x0480; -const int32_t WindowsLanguageId::kUkrainian_Ukraine = 0x0422; -const int32_t WindowsLanguageId::kUpperSorbian_Germany = 0x042E; -const int32_t WindowsLanguageId::kUrdu_IslamicRepublicOfPakistan = 0x0420; -const int32_t WindowsLanguageId::kUzbek_Cyrillic_Uzbekistan = 0x0843; -const int32_t WindowsLanguageId::kUzbek_Latin_Uzbekistan = 0x0443; -const int32_t WindowsLanguageId::kVietnamese_Vietnam = 0x042A; -const int32_t WindowsLanguageId::kWelsh_UnitedKingdom = 0x0452; -const int32_t WindowsLanguageId::kWolof_Senegal = 0x0448; -const int32_t WindowsLanguageId::kYakut_Russia = 0x0485; -const int32_t WindowsLanguageId::kYi_PRC = 0x0478; -const int32_t WindowsLanguageId::kYoruba_Nigeria = 0x046A; - -/****************************************************************************** * NameTable class ******************************************************************************/ NameTable::NameTable(Header* header, ReadableFontData* data) diff --git a/cpp/src/sfntly/name_table.h b/cpp/src/sfntly/name_table.h index 7553aa0..948c6b9 100644 --- a/cpp/src/sfntly/name_table.h +++ b/cpp/src/sfntly/name_table.h @@ -25,391 +25,401 @@ namespace sfntly { +struct NameId { + enum { + kUnknown = -1, + kCopyrightNotice = 0, + kFontFamilyName = 1, + kFontSubfamilyName = 2, + kUniqueFontIdentifier = 3, + kFullFontName = 4, + kVersionString = 5, + kPostscriptName = 6, + kTrademark = 7, + kManufacturerName = 8, + kDesigner = 9, + kDescription = 10, + kVendorURL = 11, + kDesignerURL = 12, + kLicenseDescription = 13, + kLicenseInfoURL = 14, + kReserved15 = 15, + kPreferredFamily = 16, + kPreferredSubfamily = 17, + kCompatibleFullName = 18, + kSampleText = 19, + kPostscriptCID = 20, + kWWSFamilyName = 21, + kWWSSubfamilyName = 22 + }; +}; + struct UnicodeLanguageId { - static const int32_t kUnknown; - static const int32_t kAll; + enum { + kUnknown = -1, + kAll = 0 + }; }; -// Macinstosh Language IDs (platform ID = 1) +// Macintosh Language IDs (platform ID = 1) struct MacintoshLanguageId { - static const int32_t kUnknown; - static const int32_t kEnglish; - static const int32_t kFrench; - static const int32_t kGerman; - static const int32_t kItalian; - static const int32_t kDutch; - static const int32_t kSwedish; - static const int32_t kSpanish; - static const int32_t kDanish; - static const int32_t kPortuguese; - static const int32_t kNorwegian; - static const int32_t kHebrew; - static const int32_t kJapanese; - static const int32_t kArabic; - static const int32_t kFinnish; - static const int32_t kGreek; - static const int32_t kIcelandic; - static const int32_t kMaltese; - static const int32_t kTurkish; - static const int32_t kCroatian; - static const int32_t kChinese_Traditional; - static const int32_t kUrdu; - static const int32_t kHindi; - static const int32_t kThai; - static const int32_t kKorean; - static const int32_t kLithuanian; - static const int32_t kPolish; - static const int32_t kHungarian; - static const int32_t kEstonian; - static const int32_t kLatvian; - static const int32_t kSami; - static const int32_t kFaroese; - static const int32_t kFarsiPersian; - static const int32_t kRussian; - static const int32_t kChinese_Simplified; - static const int32_t kFlemish; - static const int32_t kIrishGaelic; - static const int32_t kAlbanian; - static const int32_t kRomanian; - static const int32_t kCzech; - static const int32_t kSlovak; - static const int32_t kSlovenian; - static const int32_t kYiddish; - static const int32_t kSerbian; - static const int32_t kMacedonian; - static const int32_t kBulgarian; - static const int32_t kUkrainian; - static const int32_t kByelorussian; - static const int32_t kUzbek; - static const int32_t kKazakh; - static const int32_t kAzerbaijani_Cyrillic; - static const int32_t kAzerbaijani_Arabic; - static const int32_t kArmenian; - static const int32_t kGeorgian; - static const int32_t kMoldavian; - static const int32_t kKirghiz; - static const int32_t kTajiki; - static const int32_t kTurkmen; - static const int32_t kMongolian_Mongolian; - static const int32_t kMongolian_Cyrillic; - static const int32_t kPashto; - static const int32_t kKurdish; - static const int32_t kKashmiri; - static const int32_t kSindhi; - static const int32_t kTibetan; - static const int32_t kNepali; - static const int32_t kSanskrit; - static const int32_t kMarathi; - static const int32_t kBengali; - static const int32_t kAssamese; - static const int32_t kGujarati; - static const int32_t kPunjabi; - static const int32_t kOriya; - static const int32_t kMalayalam; - static const int32_t kKannada; - static const int32_t kTamil; - static const int32_t kTelugu; - static const int32_t kSinhalese; - static const int32_t kBurmese; - static const int32_t kKhmer; - static const int32_t kLao; - static const int32_t kVietnamese; - static const int32_t kIndonesian; - static const int32_t kTagalong; - static const int32_t kMalay_Roman; - static const int32_t kMalay_Arabic; - static const int32_t kAmharic; - static const int32_t kTigrinya; - static const int32_t kGalla; - static const int32_t kSomali; - static const int32_t kSwahili; - static const int32_t kKinyarwandaRuanda; - static const int32_t kRundi; - static const int32_t kNyanjaChewa; - static const int32_t kMalagasy; - static const int32_t kEsperanto; - static const int32_t kWelsh; - static const int32_t kBasque; - static const int32_t kCatalan; - static const int32_t kLatin; - static const int32_t kQuenchua; - static const int32_t kGuarani; - static const int32_t kAymara; - static const int32_t kTatar; - static const int32_t kUighur; - static const int32_t kDzongkha; - static const int32_t kJavanese_Roman; - static const int32_t kSundanese_Roman; - static const int32_t kGalician; - static const int32_t kAfrikaans; - static const int32_t kBreton; - static const int32_t kInuktitut; - static const int32_t kScottishGaelic; - static const int32_t kManxGaelic; - static const int32_t kIrishGaelic_WithDotAbove; - static const int32_t kTongan; - static const int32_t kGreek_Polytonic; - static const int32_t kGreenlandic; - static const int32_t kAzerbaijani_Roman; + enum { + kUnknown = -1, + kEnglish = 0, + kFrench = 1, + kGerman = 2, + kItalian = 3, + kDutch = 4, + kSwedish = 5, + kSpanish = 6, + kDanish = 7, + kPortuguese = 8, + kNorwegian = 9, + kHebrew = 10, + kJapanese = 11, + kArabic = 12, + kFinnish = 13, + kGreek = 14, + kIcelandic = 15, + kMaltese = 16, + kTurkish = 17, + kCroatian = 18, + kChinese_Traditional = 19, + kUrdu = 20, + kHindi = 21, + kThai = 22, + kKorean = 23, + kLithuanian = 24, + kPolish = 25, + kHungarian = 26, + kEstonian = 27, + kLatvian = 28, + kSami = 29, + kFaroese = 30, + kFarsiPersian = 31, + kRussian = 32, + kChinese_Simplified = 33, + kFlemish = 34, + kIrishGaelic = 35, + kAlbanian = 36, + kRomanian = 37, + kCzech = 38, + kSlovak = 39, + kSlovenian = 40, + kYiddish = 41, + kSerbian = 42, + kMacedonian = 43, + kBulgarian = 44, + kUkrainian = 45, + kByelorussian = 46, + kUzbek = 47, + kKazakh = 48, + kAzerbaijani_Cyrillic = 49, + kAzerbaijani_Arabic = 50, + kArmenian = 51, + kGeorgian = 52, + kMoldavian = 53, + kKirghiz = 54, + kTajiki = 55, + kTurkmen = 56, + kMongolian_Mongolian = 57, + kMongolian_Cyrillic = 58, + kPashto = 59, + kKurdish = 60, + kKashmiri = 61, + kSindhi = 62, + kTibetan = 63, + kNepali = 64, + kSanskrit = 65, + kMarathi = 66, + kBengali = 67, + kAssamese = 68, + kGujarati = 69, + kPunjabi = 70, + kOriya = 71, + kMalayalam = 72, + kKannada = 73, + kTamil = 74, + kTelugu = 75, + kSinhalese = 76, + kBurmese = 77, + kKhmer = 78, + kLao = 79, + kVietnamese = 80, + kIndonesian = 81, + kTagalong = 82, + kMalay_Roman = 83, + kMalay_Arabic = 84, + kAmharic = 85, + kTigrinya = 86, + kGalla = 87, + kSomali = 88, + kSwahili = 89, + kKinyarwandaRuanda = 90, + kRundi = 91, + kNyanjaChewa = 92, + kMalagasy = 93, + kEsperanto = 94, + kWelsh = 128, + kBasque = 129, + kCatalan = 130, + kLatin = 131, + kQuenchua = 132, + kGuarani = 133, + kAymara = 134, + kTatar = 135, + kUighur = 136, + kDzongkha = 137, + kJavanese_Roman = 138, + kSundanese_Roman = 139, + kGalician = 140, + kAfrikaans = 141, + kBreton = 142, + kInuktitut = 143, + kScottishGaelic = 144, + kManxGaelic = 145, + kIrishGaelic_WithDotAbove = 146, + kTongan = 147, + kGreek_Polytonic = 148, + kGreenlandic = 149, + kAzerbaijani_Roman = 150 + }; }; // Windows Language IDs (platformID = 3) struct WindowsLanguageId { - static const int32_t kUnknown; - static const int32_t kAfrikaans_SouthAfrica; - static const int32_t kAlbanian_Albania; - static const int32_t kAlsatian_France; - static const int32_t kAmharic_Ethiopia; - static const int32_t kArabic_Algeria; - static const int32_t kArabic_Bahrain; - static const int32_t kArabic_Egypt; - static const int32_t kArabic_Iraq; - static const int32_t kArabic_Jordan; - static const int32_t kArabic_Kuwait; - static const int32_t kArabic_Lebanon; - static const int32_t kArabic_Libya; - static const int32_t kArabic_Morocco; - static const int32_t kArabic_Oman; - static const int32_t kArabic_Qatar; - static const int32_t kArabic_SaudiArabia; - static const int32_t kArabic_Syria; - static const int32_t kArabic_Tunisia; - static const int32_t kArabic_UAE; - static const int32_t kArabic_Yemen; - static const int32_t kArmenian_Armenia; - static const int32_t kAssamese_India; - static const int32_t kAzeri_Cyrillic_Azerbaijan; - static const int32_t kAzeri_Latin_Azerbaijan; - static const int32_t kBashkir_Russia; - static const int32_t kBasque_Basque; - static const int32_t kBelarusian_Belarus; - static const int32_t kBengali_Bangladesh; - static const int32_t kBengali_India; - static const int32_t kBosnian_Cyrillic_BosniaAndHerzegovina; - static const int32_t kBosnian_Latin_BosniaAndHerzegovina; - static const int32_t kBreton_France; - static const int32_t kBulgarian_Bulgaria; - static const int32_t kCatalan_Catalan; - static const int32_t kChinese_HongKongSAR; - static const int32_t kChinese_MacaoSAR; - static const int32_t kChinese_PeoplesRepublicOfChina; - static const int32_t kChinese_Singapore; - static const int32_t kChinese_Taiwan; - static const int32_t kCorsican_France; - static const int32_t kCroatian_Croatia; - static const int32_t kCroatian_Latin_BosniaAndHerzegovina; - static const int32_t kCzech_CzechRepublic; - static const int32_t kDanish_Denmark; - static const int32_t kDari_Afghanistan; - static const int32_t kDivehi_Maldives; - static const int32_t kDutch_Belgium; - static const int32_t kDutch_Netherlands; - static const int32_t kEnglish_Australia; - static const int32_t kEnglish_Belize; - static const int32_t kEnglish_Canada; - static const int32_t kEnglish_Caribbean; - static const int32_t kEnglish_India; - static const int32_t kEnglish_Ireland; - static const int32_t kEnglish_Jamaica; - static const int32_t kEnglish_Malaysia; - static const int32_t kEnglish_NewZealand; - static const int32_t kEnglish_RepublicOfThePhilippines; - static const int32_t kEnglish_Singapore; - static const int32_t kEnglish_SouthAfrica; - static const int32_t kEnglish_TrinidadAndTobago; - static const int32_t kEnglish_UnitedKingdom; - static const int32_t kEnglish_UnitedStates; - static const int32_t kEnglish_Zimbabwe; - static const int32_t kEstonian_Estonia; - static const int32_t kFaroese_FaroeIslands; - static const int32_t kFilipino_Philippines; - static const int32_t kFinnish_Finland; - static const int32_t kFrench_Belgium; - static const int32_t kFrench_Canada; - static const int32_t kFrench_France; - static const int32_t kFrench_Luxembourg; - static const int32_t kFrench_PrincipalityOfMonoco; - static const int32_t kFrench_Switzerland; - static const int32_t kFrisian_Netherlands; - static const int32_t kGalician_Galician; - static const int32_t kGeorgian_Georgia; - static const int32_t kGerman_Austria; - static const int32_t kGerman_Germany; - static const int32_t kGerman_Liechtenstein; - static const int32_t kGerman_Luxembourg; - static const int32_t kGerman_Switzerland; - static const int32_t kGreek_Greece; - static const int32_t kGreenlandic_Greenland; - static const int32_t kGujarati_India; - static const int32_t kHausa_Latin_Nigeria; - static const int32_t kHebrew_Israel; - static const int32_t kHindi_India; - static const int32_t kHungarian_Hungary; - static const int32_t kIcelandic_Iceland; - static const int32_t kIgbo_Nigeria; - static const int32_t kIndonesian_Indonesia; - static const int32_t kInuktitut_Canada; - static const int32_t kInuktitut_Latin_Canada; - static const int32_t kIrish_Ireland; - static const int32_t kisiXhosa_SouthAfrica; - static const int32_t kisiZulu_SouthAfrica; - static const int32_t kItalian_Italy; - static const int32_t kItalian_Switzerland; - static const int32_t kJapanese_Japan; - static const int32_t kKannada_India; - static const int32_t kKazakh_Kazakhstan; - static const int32_t kKhmer_Cambodia; - static const int32_t kKiche_Guatemala; - static const int32_t kKinyarwanda_Rwanda; - static const int32_t kKiswahili_Kenya; - static const int32_t kKonkani_India; - static const int32_t kKorean_Korea; - static const int32_t kKyrgyz_Kyrgyzstan; - static const int32_t kLao_LaoPDR; - static const int32_t kLatvian_Latvia; - static const int32_t kLithuanian_Lithuania; - static const int32_t kLowerSorbian_Germany; - static const int32_t kLuxembourgish_Luxembourg; - static const int32_t kMacedonian_FYROM_FormerYugoslavRepublicOfMacedonia; - static const int32_t kMalay_BruneiDarussalam; - static const int32_t kMalay_Malaysia; - static const int32_t kMalayalam_India; - static const int32_t kMaltese_Malta; - static const int32_t kMaori_NewZealand; - static const int32_t kMapudungun_Chile; - static const int32_t kMarathi_India; - static const int32_t kMohawk_Mohawk; - static const int32_t kMongolian_Cyrillic_Mongolia; - static const int32_t kMongolian_Traditional_PeoplesRepublicOfChina; - static const int32_t kNepali_Nepal; - static const int32_t kNorwegian_Bokmal_Norway; - static const int32_t kNorwegian_Nynorsk_Norway; - static const int32_t kOccitan_France; - static const int32_t kOriya_India; - static const int32_t kPashto_Afghanistan; - static const int32_t kPolish_Poland; - static const int32_t kPortuguese_Brazil; - static const int32_t kPortuguese_Portugal; - static const int32_t kPunjabi_India; - static const int32_t kQuechua_Bolivia; - static const int32_t kQuechua_Ecuador; - static const int32_t kQuechua_Peru; - static const int32_t kRomanian_Romania; - static const int32_t kRomansh_Switzerland; - static const int32_t kRussian_Russia; - static const int32_t kSami_Inari_Finland; - static const int32_t kSami_Lule_Norway; - static const int32_t kSami_Lule_Sweden; - static const int32_t kSami_Northern_Finland; - static const int32_t kSami_Northern_Norway; - static const int32_t kSami_Northern_Sweden; - static const int32_t kSami_Skolt_Finland; - static const int32_t kSami_Southern_Norway; - static const int32_t kSami_Southern_Sweden; - static const int32_t kSanskrit_India; - static const int32_t kSerbian_Cyrillic_BosniaAndHerzegovina; - static const int32_t kSerbian_Cyrillic_Serbia; - static const int32_t kSerbian_Latin_BosniaAndHerzegovina; - static const int32_t kSerbian_Latin_Serbia; - static const int32_t kSesothoSaLeboa_SouthAfrica; - static const int32_t kSetswana_SouthAfrica; - static const int32_t kSinhala_SriLanka; - static const int32_t kSlovak_Slovakia; - static const int32_t kSlovenian_Slovenia; - static const int32_t kSpanish_Argentina; - static const int32_t kSpanish_Bolivia; - static const int32_t kSpanish_Chile; - static const int32_t kSpanish_Colombia; - static const int32_t kSpanish_CostaRica; - static const int32_t kSpanish_DominicanRepublic; - static const int32_t kSpanish_Ecuador; - static const int32_t kSpanish_ElSalvador; - static const int32_t kSpanish_Guatemala; - static const int32_t kSpanish_Honduras; - static const int32_t kSpanish_Mexico; - static const int32_t kSpanish_Nicaragua; - static const int32_t kSpanish_Panama; - static const int32_t kSpanish_Paraguay; - static const int32_t kSpanish_Peru; - static const int32_t kSpanish_PuertoRico; - static const int32_t kSpanish_ModernSort_Spain; - static const int32_t kSpanish_TraditionalSort_Spain; - static const int32_t kSpanish_UnitedStates; - static const int32_t kSpanish_Uruguay; - static const int32_t kSpanish_Venezuela; - static const int32_t kSweden_Finland; - static const int32_t kSwedish_Sweden; - static const int32_t kSyriac_Syria; - static const int32_t kTajik_Cyrillic_Tajikistan; - static const int32_t kTamazight_Latin_Algeria; - static const int32_t kTamil_India; - static const int32_t kTatar_Russia; - static const int32_t kTelugu_India; - static const int32_t kThai_Thailand; - static const int32_t kTibetan_PRC; - static const int32_t kTurkish_Turkey; - static const int32_t kTurkmen_Turkmenistan; - static const int32_t kUighur_PRC; - static const int32_t kUkrainian_Ukraine; - static const int32_t kUpperSorbian_Germany; - static const int32_t kUrdu_IslamicRepublicOfPakistan; - static const int32_t kUzbek_Cyrillic_Uzbekistan; - static const int32_t kUzbek_Latin_Uzbekistan; - static const int32_t kVietnamese_Vietnam; - static const int32_t kWelsh_UnitedKingdom; - static const int32_t kWolof_Senegal; - static const int32_t kYakut_Russia; - static const int32_t kYi_PRC; - static const int32_t kYoruba_Nigeria; + enum { + kUnknown = -1, + kAfrikaans_SouthAfrica = 0x0436, + kAlbanian_Albania = 0x041C, + kAlsatian_France = 0x0484, + kAmharic_Ethiopia = 0x045E, + kArabic_Algeria = 0x1401, + kArabic_Bahrain = 0x3C01, + kArabic_Egypt = 0x0C01, + kArabic_Iraq = 0x0801, + kArabic_Jordan = 0x2C01, + kArabic_Kuwait = 0x3401, + kArabic_Lebanon = 0x3001, + kArabic_Libya = 0x1001, + kArabic_Morocco = 0x1801, + kArabic_Oman = 0x2001, + kArabic_Qatar = 0x4001, + kArabic_SaudiArabia = 0x0401, + kArabic_Syria = 0x2801, + kArabic_Tunisia = 0x1C01, + kArabic_UAE = 0x3801, + kArabic_Yemen = 0x2401, + kArmenian_Armenia = 0x042B, + kAssamese_India = 0x044D, + kAzeri_Cyrillic_Azerbaijan = 0x082C, + kAzeri_Latin_Azerbaijan = 0x042C, + kBashkir_Russia = 0x046D, + kBasque_Basque = 0x042D, + kBelarusian_Belarus = 0x0423, + kBengali_Bangladesh = 0x0845, + kBengali_India = 0x0445, + kBosnian_Cyrillic_BosniaAndHerzegovina = 0x201A, + kBosnian_Latin_BosniaAndHerzegovina = 0x141A, + kBreton_France = 0x047E, + kBulgarian_Bulgaria = 0x0402, + kCatalan_Catalan = 0x0403, + kChinese_HongKongSAR = 0x0C04, + kChinese_MacaoSAR = 0x1404, + kChinese_PeoplesRepublicOfChina = 0x0804, + kChinese_Singapore = 0x1004, + kChinese_Taiwan = 0x0404, + kCorsican_France = 0x0483, + kCroatian_Croatia = 0x041A, + kCroatian_Latin_BosniaAndHerzegovina = 0x101A, + kCzech_CzechRepublic = 0x0405, + kDanish_Denmark = 0x0406, + kDari_Afghanistan = 0x048C, + kDivehi_Maldives = 0x0465, + kDutch_Belgium = 0x0813, + kDutch_Netherlands = 0x0413, + kEnglish_Australia = 0x0C09, + kEnglish_Belize = 0x2809, + kEnglish_Canada = 0x1009, + kEnglish_Caribbean = 0x2409, + kEnglish_India = 0x4009, + kEnglish_Ireland = 0x1809, + kEnglish_Jamaica = 0x2009, + kEnglish_Malaysia = 0x4409, + kEnglish_NewZealand = 0x1409, + kEnglish_RepublicOfThePhilippines = 0x3409, + kEnglish_Singapore = 0x4809, + kEnglish_SouthAfrica = 0x1C09, + kEnglish_TrinidadAndTobago = 0x2C09, + kEnglish_UnitedKingdom = 0x0809, + kEnglish_UnitedStates = 0x0409, + kEnglish_Zimbabwe = 0x3009, + kEstonian_Estonia = 0x0425, + kFaroese_FaroeIslands = 0x0438, + kFilipino_Philippines = 0x0464, + kFinnish_Finland = 0x040B, + kFrench_Belgium = 0x080C, + kFrench_Canada = 0x0C0C, + kFrench_France = 0x040C, + kFrench_Luxembourg = 0x140c, + kFrench_PrincipalityOfMonoco = 0x180C, + kFrench_Switzerland = 0x100C, + kFrisian_Netherlands = 0x0462, + kGalician_Galician = 0x0456, + kGeorgian_Georgia = 0x0437, + kGerman_Austria = 0x0C07, + kGerman_Germany = 0x0407, + kGerman_Liechtenstein = 0x1407, + kGerman_Luxembourg = 0x1007, + kGerman_Switzerland = 0x0807, + kGreek_Greece = 0x0408, + kGreenlandic_Greenland = 0x046F, + kGujarati_India = 0x0447, + kHausa_Latin_Nigeria = 0x0468, + kHebrew_Israel = 0x040D, + kHindi_India = 0x0439, + kHungarian_Hungary = 0x040E, + kIcelandic_Iceland = 0x040F, + kIgbo_Nigeria = 0x0470, + kIndonesian_Indonesia = 0x0421, + kInuktitut_Canada = 0x045D, + kInuktitut_Latin_Canada = 0x085D, + kIrish_Ireland = 0x083C, + kisiXhosa_SouthAfrica = 0x0434, + kisiZulu_SouthAfrica = 0x0435, + kItalian_Italy = 0x0410, + kItalian_Switzerland = 0x0810, + kJapanese_Japan = 0x0411, + kKannada_India = 0x044B, + kKazakh_Kazakhstan = 0x043F, + kKhmer_Cambodia = 0x0453, + kKiche_Guatemala = 0x0486, + kKinyarwanda_Rwanda = 0x0487, + kKiswahili_Kenya = 0x0441, + kKonkani_India = 0x0457, + kKorean_Korea = 0x0412, + kKyrgyz_Kyrgyzstan = 0x0440, + kLao_LaoPDR = 0x0454, + kLatvian_Latvia = 0x0426, + kLithuanian_Lithuania = 0x0427, + kLowerSorbian_Germany = 0x082E, + kLuxembourgish_Luxembourg = 0x046E, + kMacedonian_FYROM_FormerYugoslavRepublicOfMacedonia = 0x042F, + kMalay_BruneiDarussalam = 0x083E, + kMalay_Malaysia = 0x043E, + kMalayalam_India = 0x044C, + kMaltese_Malta = 0x043A, + kMaori_NewZealand = 0x0481, + kMapudungun_Chile = 0x047A, + kMarathi_India = 0x044E, + kMohawk_Mohawk = 0x047C, + kMongolian_Cyrillic_Mongolia = 0x0450, + kMongolian_Traditional_PeoplesRepublicOfChina = 0x0850, + kNepali_Nepal = 0x0461, + kNorwegian_Bokmal_Norway = 0x0414, + kNorwegian_Nynorsk_Norway = 0x0814, + kOccitan_France = 0x0482, + kOriya_India = 0x0448, + kPashto_Afghanistan = 0x0463, + kPolish_Poland = 0x0415, + kPortuguese_Brazil = 0x0416, + kPortuguese_Portugal = 0x0816, + kPunjabi_India = 0x0446, + kQuechua_Bolivia = 0x046B, + kQuechua_Ecuador = 0x086B, + kQuechua_Peru = 0x0C6B, + kRomanian_Romania = 0x0418, + kRomansh_Switzerland = 0x0417, + kRussian_Russia = 0x0419, + kSami_Inari_Finland = 0x243B, + kSami_Lule_Norway = 0x103B, + kSami_Lule_Sweden = 0x143B, + kSami_Northern_Finland = 0x0C3B, + kSami_Northern_Norway = 0x043B, + kSami_Northern_Sweden = 0x083B, + kSami_Skolt_Finland = 0x203B, + kSami_Southern_Norway = 0x183B, + kSami_Southern_Sweden = 0x1C3B, + kSanskrit_India = 0x044F, + kSerbian_Cyrillic_BosniaAndHerzegovina = 0x1C1A, + kSerbian_Cyrillic_Serbia = 0x0C1A, + kSerbian_Latin_BosniaAndHerzegovina = 0x181A, + kSerbian_Latin_Serbia = 0x081A, + kSesothoSaLeboa_SouthAfrica = 0x046C, + kSetswana_SouthAfrica = 0x0432, + kSinhala_SriLanka = 0x045B, + kSlovak_Slovakia = 0x041B, + kSlovenian_Slovenia = 0x0424, + kSpanish_Argentina = 0x2C0A, + kSpanish_Bolivia = 0x400A, + kSpanish_Chile = 0x340A, + kSpanish_Colombia = 0x240A, + kSpanish_CostaRica = 0x140A, + kSpanish_DominicanRepublic = 0x1C0A, + kSpanish_Ecuador = 0x300A, + kSpanish_ElSalvador = 0x440A, + kSpanish_Guatemala = 0x100A, + kSpanish_Honduras = 0x480A, + kSpanish_Mexico = 0x080A, + kSpanish_Nicaragua = 0x4C0A, + kSpanish_Panama = 0x180A, + kSpanish_Paraguay = 0x3C0A, + kSpanish_Peru = 0x280A, + kSpanish_PuertoRico = 0x500A, + kSpanish_ModernSort_Spain = 0x0C0A, + kSpanish_TraditionalSort_Spain = 0x040A, + kSpanish_UnitedStates = 0x540A, + kSpanish_Uruguay = 0x380A, + kSpanish_Venezuela = 0x200A, + kSweden_Finland = 0x081D, + kSwedish_Sweden = 0x041D, + kSyriac_Syria = 0x045A, + kTajik_Cyrillic_Tajikistan = 0x0428, + kTamazight_Latin_Algeria = 0x085F, + kTamil_India = 0x0449, + kTatar_Russia = 0x0444, + kTelugu_India = 0x044A, + kThai_Thailand = 0x041E, + kTibetan_PRC = 0x0451, + kTurkish_Turkey = 0x041F, + kTurkmen_Turkmenistan = 0x0442, + kUighur_PRC = 0x0480, + kUkrainian_Ukraine = 0x0422, + kUpperSorbian_Germany = 0x042E, + kUrdu_IslamicRepublicOfPakistan = 0x0420, + kUzbek_Cyrillic_Uzbekistan = 0x0843, + kUzbek_Latin_Uzbekistan = 0x0443, + kVietnamese_Vietnam = 0x042A, + kWelsh_UnitedKingdom = 0x0452, + kWolof_Senegal = 0x0448, + kYakut_Russia = 0x0485, + kYi_PRC = 0x0478, + kYoruba_Nigeria = 0x046A + }; }; class NameTable : public Table, public RefCounted<NameTable> { private: struct Offset { - static const int32_t kFormat; - static const int32_t kCount; - static const int32_t kStringOffset; - static const int32_t kNameRecordStart; + enum { + kFormat = 0, + kCount = 2, + kStringOffset = 4, + kNameRecordStart = 6, - // format 1 - offset from the end of the name records - static const int32_t kLangTagCount; - static const int32_t kLangTagRecord; - - static const int32_t kNameRecordSize; - // Name Records - static const int32_t kNameRecordPlatformId; - static const int32_t kNameRecordEncodingId; - static const int32_t kNameRecordLanguageId; - static const int32_t kNameRecordNameId; - static const int32_t kNameRecordStringLength; - static const int32_t kNameRecordStringOffset; - }; + // format 1 - offset from the end of the name records + kLangTagCount = 0, + kLangTagRecord = 2, - struct NameId { - static const int32_t kUnknown; - static const int32_t kCopyrightNotice; - static const int32_t kFontFamilyName; - static const int32_t kFontSubfamilyName; - static const int32_t kUniqueFontIdentifier; - static const int32_t kFullFontName; - static const int32_t kVersionString; - static const int32_t kPostscriptName; - static const int32_t kTrademark; - static const int32_t kManufacturerName; - static const int32_t kDesigner; - static const int32_t kDescription; - static const int32_t kVendorURL; - static const int32_t kDesignerURL; - static const int32_t kLicenseDescription; - static const int32_t kLicenseInfoURL; - static const int32_t kReserved15; - static const int32_t kPreferredFamily; - static const int32_t kPreferredSubfamily; - static const int32_t kCompatibleFullName; - static const int32_t kSampleText; - static const int32_t kPostscriptCID; - static const int32_t kWWSFamilyName; - static const int32_t kWWSSubfamilyName; + kNameRecordSize = 12, + // Name Records + kNameRecordPlatformId = 0, + kNameRecordEncodingId = 2, + kNameRecordLanguageId = 4, + kNameRecordNameId = 6, + kNameRecordStringLength = 8, + kNameRecordStringOffset = 10 + }; }; public: diff --git a/cpp/src/sfntly/os2_table.cc b/cpp/src/sfntly/os2_table.cc index 73d98cc..4e7189d 100644 --- a/cpp/src/sfntly/os2_table.cc +++ b/cpp/src/sfntly/os2_table.cc @@ -20,98 +20,6 @@ namespace sfntly { /****************************************************************************** * Constants ******************************************************************************/ -const int32_t OS2Table::Offset::kVersion = 0; -const int32_t OS2Table::Offset::kXAvgCharWidth = 2; -const int32_t OS2Table::Offset::kUsWeightClass = 4; -const int32_t OS2Table::Offset::kUsWidthClass = 6; -const int32_t OS2Table::Offset::kFsType = 8; -const int32_t OS2Table::Offset::kYSubscriptXSize = 10; -const int32_t OS2Table::Offset::kYSubscriptYSize = 12; -const int32_t OS2Table::Offset::kYSubscriptXOffset = 14; -const int32_t OS2Table::Offset::kYSubscriptYOffset = 16; -const int32_t OS2Table::Offset::kYSuperscriptXSize = 18; -const int32_t OS2Table::Offset::kYSuperscriptYSize = 20; -const int32_t OS2Table::Offset::kYSuperscriptXOffset = 22; -const int32_t OS2Table::Offset::kYSuperscriptYOffset = 24; -const int32_t OS2Table::Offset::kYStrikeoutSize = 26; -const int32_t OS2Table::Offset::kYStrikeoutPosition = 28; -const int32_t OS2Table::Offset::kSFamilyClass = 30; -const int32_t OS2Table::Offset::kPanose = 32; -const int32_t OS2Table::Offset::kUlUnicodeRange1 = 42; -const int32_t OS2Table::Offset::kUlUnicodeRange2 = 46; -const int32_t OS2Table::Offset::kUlUnicodeRange3 = 50; -const int32_t OS2Table::Offset::kUlUnicodeRange4 = 54; -const int32_t OS2Table::Offset::kAchVendId = 58; -const int32_t OS2Table::Offset::kFsSelection = 62; -const int32_t OS2Table::Offset::kUsFirstCharIndex = 64; -const int32_t OS2Table::Offset::kUsLastCharIndex = 66; -const int32_t OS2Table::Offset::kSTypoAscender = 68; -const int32_t OS2Table::Offset::kSTypoDescender = 70; -const int32_t OS2Table::Offset::kSTypoLineGap = 72; -const int32_t OS2Table::Offset::kUsWinAscent = 74; -const int32_t OS2Table::Offset::kUsWinDescent = 76; -const int32_t OS2Table::Offset::kUlCodePageRange1 = 78; -const int32_t OS2Table::Offset::kUlCodePageRange2 = 82; -const int32_t OS2Table::Offset::kSxHeight = 86; -const int32_t OS2Table::Offset::kSCapHeight = 88; -const int32_t OS2Table::Offset::kUsDefaultChar = 90; -const int32_t OS2Table::Offset::kUsBreakChar = 92; -const int32_t OS2Table::Offset::kUsMaxContext = 94; - -const int32_t WeightClass::kThin = 100; -const int32_t WeightClass::kExtraLight = 200; -const int32_t WeightClass::kUltraLight = 200; -const int32_t WeightClass::kLight = 300; -const int32_t WeightClass::kNormal = 400; -const int32_t WeightClass::kRegular = 400; -const int32_t WeightClass::kMedium = 500; -const int32_t WeightClass::kSemiBold = 600; -const int32_t WeightClass::kDemiBold = 600; -const int32_t WeightClass::kBold = 700; -const int32_t WeightClass::kExtraBold = 800; -const int32_t WeightClass::kUltraBold = 800; -const int32_t WeightClass::kBlack = 900; -const int32_t WeightClass::kHeavy = 900; - -const int32_t WidthClass::kUltraCondensed = 1; -const int32_t WidthClass::kExtraCondensed = 2; -const int32_t WidthClass::kCondensed = 3; -const int32_t WidthClass::kSemiCondensed = 4; -const int32_t WidthClass::kMedium = 5; -const int32_t WidthClass::kNormal = 5; -const int32_t WidthClass::kSemiExpanded = 6; -const int32_t WidthClass::kExpanded = 7; -const int32_t WidthClass::kExtraExpanded = 8; -const int32_t WidthClass::kUltraExpanded = 9; - -const int32_t EmbeddingFlags::kReserved0 = 1 << 0; -const int32_t EmbeddingFlags::kRestrictedLicenseEmbedding = 1 << 1; -const int32_t EmbeddingFlags::kPreviewAndPrintEmbedding = 1 << 2; -const int32_t EmbeddingFlags::kEditableEmbedding = 1 << 3; -const int32_t EmbeddingFlags::kReserved4 = 1 << 4; -const int32_t EmbeddingFlags::kReserved5 = 1 << 5; -const int32_t EmbeddingFlags::kReserved6 = 1 << 6; -const int32_t EmbeddingFlags::kReserved7 = 1 << 7; -const int32_t EmbeddingFlags::kNoSubsetting = 1 << 8; -const int32_t EmbeddingFlags::kBitmapEmbeddingOnly = 1 << 9; -const int32_t EmbeddingFlags::kReserved10 = 1 << 10; -const int32_t EmbeddingFlags::kReserved11 = 1 << 11; -const int32_t EmbeddingFlags::kReserved12 = 1 << 12; -const int32_t EmbeddingFlags::kReserved13 = 1 << 13; -const int32_t EmbeddingFlags::kReserved14 = 1 << 14; -const int32_t EmbeddingFlags::kReserved15 = 1 << 15; - -const int32_t FsSelection::kITALIC = 1 << 0; -const int32_t FsSelection::kUNDERSCORE = 1 << 1; -const int32_t FsSelection::kNEGATIVE = 1 << 2; -const int32_t FsSelection::kOUTLINED = 1 << 3; -const int32_t FsSelection::kSTRIKEOUT = 1 << 4; -const int32_t FsSelection::kBOLD = 1 << 5; -const int32_t FsSelection::kREGULAR = 1 << 6; -const int32_t FsSelection::kUSE_TYPO_METRICS = 1 << 7; -const int32_t FsSelection::kWWS = 1 << 8; -const int32_t FsSelection::kOBLIQUE = 1 << 9; - const int64_t CodePageRange::kLatin1_1252 = (int64_t)1 << 0; const int64_t CodePageRange::kLatin2_1250 = (int64_t)1 << (int64_t)1; const int64_t CodePageRange::kCyrillic_1251 = (int64_t)1 << 2; diff --git a/cpp/src/sfntly/os2_table.h b/cpp/src/sfntly/os2_table.h index 88d4769..9bf33c2 100644 --- a/cpp/src/sfntly/os2_table.h +++ b/cpp/src/sfntly/os2_table.h @@ -23,56 +23,64 @@ namespace sfntly { struct WeightClass { - static const int32_t kThin; - static const int32_t kExtraLight; - static const int32_t kUltraLight; - static const int32_t kLight; - static const int32_t kNormal; - static const int32_t kRegular; - static const int32_t kMedium; - static const int32_t kSemiBold; - static const int32_t kDemiBold; - static const int32_t kBold; - static const int32_t kExtraBold; - static const int32_t kUltraBold; - static const int32_t kBlack; - static const int32_t kHeavy; + enum { + kThin = 100, + kExtraLight = 200, + kUltraLight = 200, + kLight = 300, + kNormal = 400, + kRegular = 400, + kMedium = 500, + kSemiBold = 600, + kDemiBold = 600, + kBold = 700, + kExtraBold = 800, + kUltraBold = 800, + kBlack = 900, + kHeavy = 900 + }; }; struct WidthClass { - static const int32_t kUltraCondensed; - static const int32_t kExtraCondensed; - static const int32_t kCondensed; - static const int32_t kSemiCondensed; - static const int32_t kMedium; - static const int32_t kNormal; - static const int32_t kSemiExpanded; - static const int32_t kExpanded; - static const int32_t kExtraExpanded; - static const int32_t kUltraExpanded; + enum { + kUltraCondensed = 1, + kExtraCondensed = 2, + kCondensed = 3, + kSemiCondensed = 4, + kMedium = 5, + kNormal = 5, + kSemiExpanded = 6, + kExpanded = 7, + kExtraExpanded = 8, + kUltraExpanded = 9 + }; }; struct EmbeddingFlags { - static const int32_t kReserved0; - static const int32_t kRestrictedLicenseEmbedding; - static const int32_t kPreviewAndPrintEmbedding; - static const int32_t kEditableEmbedding; - static const int32_t kReserved4; - static const int32_t kReserved5; - static const int32_t kReserved6; - static const int32_t kReserved7; - static const int32_t kNoSubsetting; - static const int32_t kBitmapEmbeddingOnly; - static const int32_t kReserved10; - static const int32_t kReserved11; - static const int32_t kReserved12; - static const int32_t kReserved13; - static const int32_t kReserved14; - static const int32_t kReserved15; + enum { + kReserved0 = 1 << 0, + kRestrictedLicenseEmbedding = 1 << 1, + kPreviewAndPrintEmbedding = 1 << 2, + kEditableEmbedding = 1 << 3, + kReserved4 = 1 << 4, + kReserved5 = 1 << 5, + kReserved6 = 1 << 6, + kReserved7 = 1 << 7, + kNoSubsetting = 1 << 8, + kBitmapEmbeddingOnly = 1 << 9, + kReserved10 = 1 << 10, + kReserved11 = 1 << 11, + kReserved12 = 1 << 12, + kReserved13 = 1 << 13, + kReserved14 = 1 << 14, + kReserved15 = 1 << 15 + }; }; struct UnicodeRange { enum { + // This enum relies on the ordering of the data matching the ordinal numbers + // of the properties. kBasicLatin, kLatin1Supplement, kLatinExtendedA, @@ -208,18 +216,22 @@ struct UnicodeRange { }; struct FsSelection { - static const int32_t kITALIC; - static const int32_t kUNDERSCORE; - static const int32_t kNEGATIVE; - static const int32_t kOUTLINED; - static const int32_t kSTRIKEOUT; - static const int32_t kBOLD; - static const int32_t kREGULAR; - static const int32_t kUSE_TYPO_METRICS; - static const int32_t kWWS; - static const int32_t kOBLIQUE; + enum { + kITALIC = 1 << 0, + kUNDERSCORE = 1 << 1, + kNEGATIVE = 1 << 2, + kOUTLINED = 1 << 3, + kSTRIKEOUT = 1 << 4, + kBOLD = 1 << 5, + kREGULAR = 1 << 6, + kUSE_TYPO_METRICS = 1 << 7, + kWWS = 1 << 8, + kOBLIQUE = 1 << 9 + }; }; +// C++ port only: C++ does not support 64-bit enums until C++0x. For better +// portability, we need to use static const int64_t instead. struct CodePageRange { static const int64_t kLatin1_1252; static const int64_t kLatin2_1250; @@ -290,43 +302,45 @@ struct CodePageRange { class OS2Table : public Table, public RefCounted<OS2Table> { private: struct Offset { - static const int32_t kVersion; - static const int32_t kXAvgCharWidth; - static const int32_t kUsWeightClass; - static const int32_t kUsWidthClass; - static const int32_t kFsType; - static const int32_t kYSubscriptXSize; - static const int32_t kYSubscriptYSize; - static const int32_t kYSubscriptXOffset; - static const int32_t kYSubscriptYOffset; - static const int32_t kYSuperscriptXSize; - static const int32_t kYSuperscriptYSize; - static const int32_t kYSuperscriptXOffset; - static const int32_t kYSuperscriptYOffset; - static const int32_t kYStrikeoutSize; - static const int32_t kYStrikeoutPosition; - static const int32_t kSFamilyClass; - static const int32_t kPanose; - static const int32_t kUlUnicodeRange1; - static const int32_t kUlUnicodeRange2; - static const int32_t kUlUnicodeRange3; - static const int32_t kUlUnicodeRange4; - static const int32_t kAchVendId; - static const int32_t kFsSelection; - static const int32_t kUsFirstCharIndex; - static const int32_t kUsLastCharIndex; - static const int32_t kSTypoAscender; - static const int32_t kSTypoDescender; - static const int32_t kSTypoLineGap; - static const int32_t kUsWinAscent; - static const int32_t kUsWinDescent; - static const int32_t kUlCodePageRange1; - static const int32_t kUlCodePageRange2; - static const int32_t kSxHeight; - static const int32_t kSCapHeight; - static const int32_t kUsDefaultChar; - static const int32_t kUsBreakChar; - static const int32_t kUsMaxContext; + enum { + kVersion = 0, + kXAvgCharWidth = 2, + kUsWeightClass = 4, + kUsWidthClass = 6, + kFsType = 8, + kYSubscriptXSize = 10, + kYSubscriptYSize = 12, + kYSubscriptXOffset = 14, + kYSubscriptYOffset = 16, + kYSuperscriptXSize = 18, + kYSuperscriptYSize = 20, + kYSuperscriptXOffset = 22, + kYSuperscriptYOffset = 24, + kYStrikeoutSize = 26, + kYStrikeoutPosition = 28, + kSFamilyClass = 30, + kPanose = 32, + kUlUnicodeRange1 = 42, + kUlUnicodeRange2 = 46, + kUlUnicodeRange3 = 50, + kUlUnicodeRange4 = 54, + kAchVendId = 58, + kFsSelection = 62, + kUsFirstCharIndex = 64, + kUsLastCharIndex = 66, + kSTypoAscender = 68, + kSTypoDescender = 70, + kSTypoLineGap = 72, + kUsWinAscent = 74, + kUsWinDescent = 76, + kUlCodePageRange1 = 78, + kUlCodePageRange2 = 82, + kSxHeight = 86, + kSCapHeight = 88, + kUsDefaultChar = 90, + kUsBreakChar = 92, + kUsMaxContext = 94 + }; }; OS2Table(Header* header, ReadableFontData* data); |