summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/SFNTTypes.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/SFNTTypes.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'common/quicktime_win32/SFNTTypes.h')
-rw-r--r--common/quicktime_win32/SFNTTypes.h509
1 files changed, 509 insertions, 0 deletions
diff --git a/common/quicktime_win32/SFNTTypes.h b/common/quicktime_win32/SFNTTypes.h
new file mode 100644
index 0000000..79abc6e
--- /dev/null
+++ b/common/quicktime_win32/SFNTTypes.h
@@ -0,0 +1,509 @@
+/*
+ File: SFNTTypes.h
+
+ Contains: Font file structures.
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1994-2000 by Apple Computer, Inc., all rights reserved.
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://developer.apple.com/bugreporter/
+
+*/
+#ifndef __SFNTTYPES__
+#define __SFNTTYPES__
+
+#ifndef __MACTYPES__
+#include <MacTypes.h>
+#endif
+
+
+
+#if PRAGMA_ONCE
+#pragma once
+#endif
+
+#if PRAGMA_IMPORT
+#pragma import on
+#endif
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=mac68k
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(push, 2)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack(2)
+#endif
+
+struct sfntDirectoryEntry {
+ FourCharCode tableTag;
+ UInt32 checkSum;
+ UInt32 offset;
+ UInt32 length;
+};
+typedef struct sfntDirectoryEntry sfntDirectoryEntry;
+/* The search fields limits numOffsets to 4096. */
+struct sfntDirectory {
+ FourCharCode format;
+ UInt16 numOffsets; /* number of tables */
+ UInt16 searchRange; /* (max2 <= numOffsets)*16 */
+ UInt16 entrySelector; /* log2(max2 <= numOffsets) */
+ UInt16 rangeShift; /* numOffsets*16-searchRange*/
+ sfntDirectoryEntry table[1]; /* table[numOffsets] */
+};
+typedef struct sfntDirectory sfntDirectory;
+enum {
+ sizeof_sfntDirectory = 12
+};
+
+/* Cmap - character id to glyph id mapping */
+enum {
+ cmapFontTableTag = FOUR_CHAR_CODE('cmap')
+};
+
+enum {
+ kFontUnicodePlatform = 0,
+ kFontMacintoshPlatform = 1,
+ kFontReservedPlatform = 2,
+ kFontMicrosoftPlatform = 3,
+ kFontCustomPlatform = 4
+};
+
+enum {
+ kFontUnicodeDefaultSemantics = 0,
+ kFontUnicodeV1_1Semantics = 1,
+ kFontISO10646_1993Semantics = 2
+};
+
+enum {
+ kFontRomanScript = 0,
+ kFontJapaneseScript = 1,
+ kFontTraditionalChineseScript = 2,
+ kFontChineseScript = kFontTraditionalChineseScript,
+ kFontKoreanScript = 3,
+ kFontArabicScript = 4,
+ kFontHebrewScript = 5,
+ kFontGreekScript = 6,
+ kFontCyrillicScript = 7,
+ kFontRussian = kFontCyrillicScript,
+ kFontRSymbolScript = 8,
+ kFontDevanagariScript = 9,
+ kFontGurmukhiScript = 10,
+ kFontGujaratiScript = 11,
+ kFontOriyaScript = 12,
+ kFontBengaliScript = 13,
+ kFontTamilScript = 14,
+ kFontTeluguScript = 15,
+ kFontKannadaScript = 16,
+ kFontMalayalamScript = 17,
+ kFontSinhaleseScript = 18,
+ kFontBurmeseScript = 19,
+ kFontKhmerScript = 20,
+ kFontThaiScript = 21,
+ kFontLaotianScript = 22,
+ kFontGeorgianScript = 23,
+ kFontArmenianScript = 24,
+ kFontSimpleChineseScript = 25,
+ kFontTibetanScript = 26,
+ kFontMongolianScript = 27,
+ kFontGeezScript = 28,
+ kFontEthiopicScript = kFontGeezScript,
+ kFontAmharicScript = kFontGeezScript,
+ kFontSlavicScript = 29,
+ kFontEastEuropeanRomanScript = kFontSlavicScript,
+ kFontVietnameseScript = 30,
+ kFontExtendedArabicScript = 31,
+ kFontSindhiScript = kFontExtendedArabicScript,
+ kFontUninterpretedScript = 32
+};
+
+enum {
+ kFontMicrosoftSymbolScript = 0,
+ kFontMicrosoftStandardScript = 1,
+ kFontMicrosoftUCS4Script = 10
+};
+
+
+enum {
+ kFontCustom8BitScript = 0,
+ kFontCustom816BitScript = 1,
+ kFontCustom16BitScript = 2
+};
+
+/* Language codes are zero based everywhere but within a 'cmap' table */
+enum {
+ kFontEnglishLanguage = 0,
+ kFontFrenchLanguage = 1,
+ kFontGermanLanguage = 2,
+ kFontItalianLanguage = 3,
+ kFontDutchLanguage = 4,
+ kFontSwedishLanguage = 5,
+ kFontSpanishLanguage = 6,
+ kFontDanishLanguage = 7,
+ kFontPortugueseLanguage = 8,
+ kFontNorwegianLanguage = 9,
+ kFontHebrewLanguage = 10,
+ kFontJapaneseLanguage = 11,
+ kFontArabicLanguage = 12,
+ kFontFinnishLanguage = 13,
+ kFontGreekLanguage = 14,
+ kFontIcelandicLanguage = 15,
+ kFontMalteseLanguage = 16,
+ kFontTurkishLanguage = 17,
+ kFontCroatianLanguage = 18,
+ kFontTradChineseLanguage = 19,
+ kFontUrduLanguage = 20,
+ kFontHindiLanguage = 21,
+ kFontThaiLanguage = 22,
+ kFontKoreanLanguage = 23,
+ kFontLithuanianLanguage = 24,
+ kFontPolishLanguage = 25,
+ kFontHungarianLanguage = 26,
+ kFontEstonianLanguage = 27,
+ kFontLettishLanguage = 28,
+ kFontLatvianLanguage = kFontLettishLanguage,
+ kFontSaamiskLanguage = 29,
+ kFontLappishLanguage = kFontSaamiskLanguage,
+ kFontFaeroeseLanguage = 30,
+ kFontFarsiLanguage = 31,
+ kFontPersianLanguage = kFontFarsiLanguage,
+ kFontRussianLanguage = 32,
+ kFontSimpChineseLanguage = 33,
+ kFontFlemishLanguage = 34,
+ kFontIrishLanguage = 35,
+ kFontAlbanianLanguage = 36,
+ kFontRomanianLanguage = 37,
+ kFontCzechLanguage = 38,
+ kFontSlovakLanguage = 39,
+ kFontSlovenianLanguage = 40,
+ kFontYiddishLanguage = 41,
+ kFontSerbianLanguage = 42,
+ kFontMacedonianLanguage = 43,
+ kFontBulgarianLanguage = 44,
+ kFontUkrainianLanguage = 45,
+ kFontByelorussianLanguage = 46,
+ kFontUzbekLanguage = 47,
+ kFontKazakhLanguage = 48,
+ kFontAzerbaijaniLanguage = 49,
+ kFontAzerbaijanArLanguage = 50,
+ kFontArmenianLanguage = 51,
+ kFontGeorgianLanguage = 52,
+ kFontMoldavianLanguage = 53,
+ kFontKirghizLanguage = 54,
+ kFontTajikiLanguage = 55,
+ kFontTurkmenLanguage = 56,
+ kFontMongolianLanguage = 57,
+ kFontMongolianCyrLanguage = 58,
+ kFontPashtoLanguage = 59,
+ kFontKurdishLanguage = 60,
+ kFontKashmiriLanguage = 61,
+ kFontSindhiLanguage = 62,
+ kFontTibetanLanguage = 63,
+ kFontNepaliLanguage = 64,
+ kFontSanskritLanguage = 65,
+ kFontMarathiLanguage = 66,
+ kFontBengaliLanguage = 67,
+ kFontAssameseLanguage = 68,
+ kFontGujaratiLanguage = 69,
+ kFontPunjabiLanguage = 70,
+ kFontOriyaLanguage = 71,
+ kFontMalayalamLanguage = 72,
+ kFontKannadaLanguage = 73,
+ kFontTamilLanguage = 74,
+ kFontTeluguLanguage = 75,
+ kFontSinhaleseLanguage = 76,
+ kFontBurmeseLanguage = 77,
+ kFontKhmerLanguage = 78,
+ kFontLaoLanguage = 79,
+ kFontVietnameseLanguage = 80,
+ kFontIndonesianLanguage = 81,
+ kFontTagalogLanguage = 82,
+ kFontMalayRomanLanguage = 83,
+ kFontMalayArabicLanguage = 84,
+ kFontAmharicLanguage = 85,
+ kFontTigrinyaLanguage = 86,
+ kFontGallaLanguage = 87,
+ kFontOromoLanguage = kFontGallaLanguage,
+ kFontSomaliLanguage = 88,
+ kFontSwahiliLanguage = 89,
+ kFontRuandaLanguage = 90,
+ kFontRundiLanguage = 91,
+ kFontChewaLanguage = 92,
+ kFontMalagasyLanguage = 93,
+ kFontEsperantoLanguage = 94,
+ kFontWelshLanguage = 128,
+ kFontBasqueLanguage = 129,
+ kFontCatalanLanguage = 130,
+ kFontLatinLanguage = 131,
+ kFontQuechuaLanguage = 132,
+ kFontGuaraniLanguage = 133,
+ kFontAymaraLanguage = 134,
+ kFontTatarLanguage = 135,
+ kFontUighurLanguage = 136,
+ kFontDzongkhaLanguage = 137,
+ kFontJavaneseRomLanguage = 138,
+ kFontSundaneseRomLanguage = 139
+};
+
+/* The following are special "don't care" values to be used in interfaces */
+enum {
+ kFontNoPlatformCode = (unsigned long)(-1),
+ kFontNoScriptCode = (unsigned long)(-1),
+ kFontNoLanguageCode = (unsigned long)(-1)
+};
+
+struct sfntCMapSubHeader {
+ UInt16 format;
+ UInt16 length;
+ UInt16 languageID; /* base-1 */
+};
+typedef struct sfntCMapSubHeader sfntCMapSubHeader;
+enum {
+ sizeof_sfntCMapSubHeader = 6
+};
+
+struct sfntCMapExtendedSubHeader {
+ UInt16 format;
+ UInt16 reserved;
+ UInt32 length;
+ UInt32 language;
+};
+typedef struct sfntCMapExtendedSubHeader sfntCMapExtendedSubHeader;
+enum {
+ sizeof_sfntCMapExtendedSubHeader = 12
+};
+
+struct sfntCMapEncoding {
+ UInt16 platformID; /* base-0 */
+ UInt16 scriptID; /* base-0 */
+ UInt32 offset;
+};
+typedef struct sfntCMapEncoding sfntCMapEncoding;
+enum {
+ sizeof_sfntCMapEncoding = 8
+};
+
+struct sfntCMapHeader {
+ UInt16 version;
+ UInt16 numTables;
+ sfntCMapEncoding encoding[1];
+};
+typedef struct sfntCMapHeader sfntCMapHeader;
+enum {
+ sizeof_sfntCMapHeader = 4
+};
+
+/* Name table */
+enum {
+ nameFontTableTag = FOUR_CHAR_CODE('name')
+};
+
+enum {
+ kFontCopyrightName = 0,
+ kFontFamilyName = 1,
+ kFontStyleName = 2,
+ kFontUniqueName = 3,
+ kFontFullName = 4,
+ kFontVersionName = 5,
+ kFontPostscriptName = 6,
+ kFontTrademarkName = 7,
+ kFontManufacturerName = 8,
+ kFontDesignerName = 9,
+ kFontDescriptionName = 10,
+ kFontVendorURLName = 11,
+ kFontDesignerURLName = 12,
+ kFontLicenseDescriptionName = 13,
+ kFontLicenseInfoURLName = 14,
+ kFontLastReservedName = 255
+};
+
+/* The following is a special "don't care" value to be used in interfaces */
+enum {
+ kFontNoNameCode = (unsigned long)(-1)
+};
+
+struct sfntNameRecord {
+ UInt16 platformID; /* base-0 */
+ UInt16 scriptID; /* base-0 */
+ UInt16 languageID; /* base-0 */
+ UInt16 nameID; /* base-0 */
+ UInt16 length;
+ UInt16 offset;
+};
+typedef struct sfntNameRecord sfntNameRecord;
+enum {
+ sizeof_sfntNameRecord = 12
+};
+
+struct sfntNameHeader {
+ UInt16 format;
+ UInt16 count;
+ UInt16 stringOffset;
+ sfntNameRecord rec[1];
+};
+typedef struct sfntNameHeader sfntNameHeader;
+enum {
+ sizeof_sfntNameHeader = 6
+};
+
+/* Fvar table - font variations */
+enum {
+ variationFontTableTag = FOUR_CHAR_CODE('fvar')
+};
+
+/* These define each font variation */
+struct sfntVariationAxis {
+ FourCharCode axisTag;
+ Fixed minValue;
+ Fixed defaultValue;
+ Fixed maxValue;
+ SInt16 flags;
+ SInt16 nameID;
+};
+typedef struct sfntVariationAxis sfntVariationAxis;
+enum {
+ sizeof_sfntVariationAxis = 20
+};
+
+/* These are named locations in style-space for the user */
+struct sfntInstance {
+ SInt16 nameID;
+ SInt16 flags;
+ Fixed coord[1]; /* [axisCount] */
+ /* room to grow since the header carries a tupleSize field */
+};
+typedef struct sfntInstance sfntInstance;
+enum {
+ sizeof_sfntInstance = 4
+};
+
+struct sfntVariationHeader {
+ Fixed version; /* 1.0 Fixed */
+ UInt16 offsetToData; /* to first axis = 16*/
+ UInt16 countSizePairs; /* axis+inst = 2 */
+ UInt16 axisCount;
+ UInt16 axisSize;
+ UInt16 instanceCount;
+ UInt16 instanceSize;
+ /* ...other <count,size> pairs */
+ sfntVariationAxis axis[1]; /* [axisCount] */
+ sfntInstance instance[1]; /* [instanceCount] ...other arrays of data */
+};
+typedef struct sfntVariationHeader sfntVariationHeader;
+enum {
+ sizeof_sfntVariationHeader = 16
+};
+
+/* Fdsc table - font descriptor */
+enum {
+ descriptorFontTableTag = FOUR_CHAR_CODE('fdsc')
+};
+
+struct sfntFontDescriptor {
+ FourCharCode name;
+ Fixed value;
+};
+typedef struct sfntFontDescriptor sfntFontDescriptor;
+struct sfntDescriptorHeader {
+ Fixed version; /* 1.0 in Fixed */
+ SInt32 descriptorCount;
+ sfntFontDescriptor descriptor[1];
+};
+typedef struct sfntDescriptorHeader sfntDescriptorHeader;
+enum {
+ sizeof_sfntDescriptorHeader = 8
+};
+
+/* Feat Table - layout feature table */
+enum {
+ featureFontTableTag = FOUR_CHAR_CODE('feat')
+};
+
+struct sfntFeatureName {
+ UInt16 featureType;
+ UInt16 settingCount;
+ SInt32 offsetToSettings;
+ UInt16 featureFlags;
+ UInt16 nameID;
+};
+typedef struct sfntFeatureName sfntFeatureName;
+struct sfntFontFeatureSetting {
+ UInt16 setting;
+ UInt16 nameID;
+};
+typedef struct sfntFontFeatureSetting sfntFontFeatureSetting;
+struct sfntFontRunFeature {
+ UInt16 featureType;
+ UInt16 setting;
+};
+typedef struct sfntFontRunFeature sfntFontRunFeature;
+struct sfntFeatureHeader {
+ SInt32 version; /* 1.0 */
+ UInt16 featureNameCount;
+ UInt16 featureSetCount;
+ SInt32 reserved; /* set to 0 */
+ sfntFeatureName names[1];
+ sfntFontFeatureSetting settings[1];
+ sfntFontRunFeature runs[1];
+};
+typedef struct sfntFeatureHeader sfntFeatureHeader;
+/* OS/2 Table */
+enum {
+ os2FontTableTag = FOUR_CHAR_CODE('OS/2')
+};
+
+/* Special invalid glyph ID value, useful as a sentinel value, for example */
+enum {
+ nonGlyphID = 65535L
+};
+
+
+/* Deprecated "don't care" values - use kFontNoPlatformCode, kFontNoScriptCode,
+ kFontNoLanguageCode, kFontNoName instead
+*/
+enum {
+ kFontNoPlatform = -1,
+ kFontNoScript = -1,
+ kFontNoLanguage = -1,
+ kFontNoName = -1
+};
+
+
+
+/* Data type used to access names from font name table */
+
+typedef UInt32 FontNameCode;
+/* Data types for encoding components as used in interfaces */
+typedef UInt32 FontPlatformCode;
+typedef UInt32 FontScriptCode;
+typedef UInt32 FontLanguageCode;
+/*
+** FontVariation is used to specify a coordinate along a variation axis. The name
+** identifies the axes to be applied, and value is the setting to be used.
+*/
+struct FontVariation {
+ FourCharCode name;
+ Fixed value;
+};
+typedef struct FontVariation FontVariation;
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=reset
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(pop)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack()
+#endif
+
+#ifdef PRAGMA_IMPORT_OFF
+#pragma import off
+#elif PRAGMA_IMPORT
+#pragma import reset
+#endif
+
+
+#endif /* __SFNTTYPES__ */
+