Files
lualibs-waffi/ffi/winapi/headers/dwrite.lua
T
Dimiter 'malkia' Stanev 1ad4c5b217 More madness
2012-10-12 11:33:21 -07:00

363 lines
21 KiB
Lua
Executable File

require( 'ffi/winapi/headers/windows' )
local ffi = require( 'ffi' )
ffi.cdef [[
typedef void* IDWriteBitmapRenderTarget; //Interface
typedef void* IDWriteFactory; //Interface
typedef void* IDWriteFont; //Interface
typedef void* IDWriteFontCollection; //Interface
typedef void* IDWriteFontCollectionLoader; //Interface
typedef void* IDWriteFontFace; //Interface
typedef void* IDWriteFontFamily; //Interface
typedef void* IDWriteFontFile; //Interface
typedef void* IDWriteFontFileEnumerator; //Interface
typedef void* IDWriteFontFileLoader; //Interface
typedef void* IDWriteFontFileStream; //Interface
typedef void* IDWriteFontList; //Interface
typedef void* IDWriteGdiInterop; //Interface
typedef void* IDWriteGlyphRunAnalysis; //Interface
typedef void* IDWriteInlineObject; //Interface
typedef void* IDWriteLocalFontFileLoader; //Interface
typedef void* IDWriteLocalizedStrings; //Interface
typedef void* IDWritePixelSnapping; //Interface
typedef void* IDWriteRenderingParams; //Interface
typedef void* IDWriteTextAnalyzer; //Interface
typedef void* IDWriteTextFormat; //Interface
typedef void* IDWriteTextLayout; //Interface
typedef void* IDWriteTextRenderer; //Interface
typedef void* IDWriteTypography; //Interface
typedef void* IDWriteTextAnalysisSource; //Interface
typedef void* IDWriteNumberSubstitution; //Interface
typedef void* IDWriteGeometrySink; //Interface
typedef void* IDWriteTextAnalysisSink; //Interface
typedef struct DWRITE_GLYPH_OFFSET {
FLOAT advanceOffset;
FLOAT ascenderOffset;
} DWRITE_GLYPH_OFFSET;
typedef struct DWRITE_GLYPH_RUN {
IDWriteFontFace* fontFace;
FLOAT fontEmSize;
UINT32 glyphCount;
UINT16* glyphIndices;
FLOAT* glyphAdvances;
DWRITE_GLYPH_OFFSET* glyphOffsets;
BOOL isSideways;
UINT32 bidiLevel;
} DWRITE_GLYPH_RUN;
typedef UINT DWRITE_FACTORY_TYPE; //Alias
static const DWRITE_FACTORY_TYPE DWRITE_FACTORY_TYPE_SHARED = 0;
static const DWRITE_FACTORY_TYPE DWRITE_FACTORY_TYPE_ISOLATED = 1;
typedef struct DWRITE_MATRIX {
FLOAT m11;
FLOAT m12;
FLOAT m21;
FLOAT m22;
FLOAT dx;
FLOAT dy;
} DWRITE_MATRIX;
typedef UINT DWRITE_FONT_FACE_TYPE; //Alias
static const DWRITE_FONT_FACE_TYPE DWRITE_FONT_FACE_TYPE_CFF = 0;
static const DWRITE_FONT_FACE_TYPE DWRITE_FONT_FACE_TYPE_TRUETYPE = 1;
static const DWRITE_FONT_FACE_TYPE DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION = 2;
static const DWRITE_FONT_FACE_TYPE DWRITE_FONT_FACE_TYPE_TYPE1 = 3;
static const DWRITE_FONT_FACE_TYPE DWRITE_FONT_FACE_TYPE_VECTOR = 4;
static const DWRITE_FONT_FACE_TYPE DWRITE_FONT_FACE_TYPE_BITMAP = 5;
static const DWRITE_FONT_FACE_TYPE DWRITE_FONT_FACE_TYPE_UNKNOWN = 6;
typedef UINT DWRITE_PIXEL_GEOMETRY; //Alias
static const DWRITE_PIXEL_GEOMETRY DWRITE_PIXEL_GEOMETRY_FLAT = 0;
static const DWRITE_PIXEL_GEOMETRY DWRITE_PIXEL_GEOMETRY_RGB = 1;
static const DWRITE_PIXEL_GEOMETRY DWRITE_PIXEL_GEOMETRY_BGR = 2;
typedef UINT DWRITE_FONT_WEIGHT; //Alias
static const DWRITE_FONT_WEIGHT DWRITE_FONT_WEIGHT_THIN = 100;
static const DWRITE_FONT_WEIGHT DWRITE_FONT_WEIGHT_EXTRA_LIGHT = 200;
static const DWRITE_FONT_WEIGHT DWRITE_FONT_WEIGHT_LIGHT = 300;
static const DWRITE_FONT_WEIGHT DWRITE_FONT_WEIGHT_NORMAL = 400;
static const DWRITE_FONT_WEIGHT DWRITE_FONT_WEIGHT_MEDIUM = 500;
static const DWRITE_FONT_WEIGHT DWRITE_FONT_WEIGHT_SEMI_BOLD = 600;
static const DWRITE_FONT_WEIGHT DWRITE_FONT_WEIGHT_BOLD = 700;
static const DWRITE_FONT_WEIGHT DWRITE_FONT_WEIGHT_EXTRA_BOLD = 800;
static const DWRITE_FONT_WEIGHT DWRITE_FONT_WEIGHT_BLACK = 900;
static const DWRITE_FONT_WEIGHT DWRITE_FONT_WEIGHT_EXTRA_BLACK = 950;
typedef UINT DWRITE_NUMBER_SUBSTITUTION_METHOD; //Alias
static const DWRITE_NUMBER_SUBSTITUTION_METHOD DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE = 0;
static const DWRITE_NUMBER_SUBSTITUTION_METHOD DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL = 1;
static const DWRITE_NUMBER_SUBSTITUTION_METHOD DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE = 2;
static const DWRITE_NUMBER_SUBSTITUTION_METHOD DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL = 3;
static const DWRITE_NUMBER_SUBSTITUTION_METHOD DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL = 4;
typedef UINT DWRITE_FONT_STRETCH; //Alias
static const DWRITE_FONT_STRETCH DWRITE_FONT_STRETCH_UNDEFINED = 0;
static const DWRITE_FONT_STRETCH DWRITE_FONT_STRETCH_ULTRA_CONDENSED = 1;
static const DWRITE_FONT_STRETCH DWRITE_FONT_STRETCH_EXTRA_CONDENSED = 2;
static const DWRITE_FONT_STRETCH DWRITE_FONT_STRETCH_CONDENSED = 3;
static const DWRITE_FONT_STRETCH DWRITE_FONT_STRETCH_SEMI_CONDENSED = 4;
static const DWRITE_FONT_STRETCH DWRITE_FONT_STRETCH_NORMAL = 5;
static const DWRITE_FONT_STRETCH DWRITE_FONT_STRETCH_SEMI_EXPANDED = 6;
static const DWRITE_FONT_STRETCH DWRITE_FONT_STRETCH_EXPANDED = 7;
static const DWRITE_FONT_STRETCH DWRITE_FONT_STRETCH_EXTRA_EXPANDED = 8;
static const DWRITE_FONT_STRETCH DWRITE_FONT_STRETCH_ULTRA_EXPANDED = 9;
typedef UINT DWRITE_FONT_STYLE; //Alias
static const DWRITE_FONT_STYLE DWRITE_FONT_STYLE_NORMAL = 0;
static const DWRITE_FONT_STYLE DWRITE_FONT_STYLE_OBLIQUE = 1;
static const DWRITE_FONT_STYLE DWRITE_FONT_STYLE_ITALIC = 2;
typedef UINT DWRITE_INFORMATIONAL_STRING_ID; //Alias
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_NONE = 0;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE = 1;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS = 2;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_TRADEMARK = 3;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_MANUFACTURER = 4;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_DESIGNER = 5;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_DESIGNER_URL = 6;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_DESCRIPTION = 7;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL = 8;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION = 9;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL = 10;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES = 11;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES = 12;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES = 13;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES = 14;
static const DWRITE_INFORMATIONAL_STRING_ID DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT = 15;
typedef UINT DWRITE_FONT_SIMULATIONS; //Alias
typedef struct DWRITE_FONT_METRICS {
UINT16 designUnitsPerEm;
UINT16 ascent;
UINT16 descent;
INT16 lineGap;
UINT16 capHeight;
UINT16 xHeight;
INT16 underlinePosition;
UINT16 underlineThickness;
INT16 strikethroughPosition;
UINT16 strikethroughThickness;
} DWRITE_FONT_METRICS;
typedef UINT DWRITE_RENDERING_MODE; //Alias
static const DWRITE_RENDERING_MODE DWRITE_RENDERING_MODE_DEFAULT = 0;
static const DWRITE_RENDERING_MODE DWRITE_RENDERING_MODE_ALIASED = 1;
static const DWRITE_RENDERING_MODE DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC = 2;
static const DWRITE_RENDERING_MODE DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL = 3;
static const DWRITE_RENDERING_MODE DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL = 4;
static const DWRITE_RENDERING_MODE DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC = 5;
static const DWRITE_RENDERING_MODE DWRITE_RENDERING_MODE_OUTLINE = 6;
typedef UINT DWRITE_FONT_FILE_TYPE; //Alias
static const DWRITE_FONT_FILE_TYPE DWRITE_FONT_FILE_TYPE_UNKNOWN = 0;
static const DWRITE_FONT_FILE_TYPE DWRITE_FONT_FILE_TYPE_CFF = 1;
static const DWRITE_FONT_FILE_TYPE DWRITE_FONT_FILE_TYPE_TRUETYPE = 2;
static const DWRITE_FONT_FILE_TYPE DWRITE_FONT_FILE_TYPE_TRUETYPE_COLLECTION = 3;
static const DWRITE_FONT_FILE_TYPE DWRITE_FONT_FILE_TYPE_TYPE1_PFM = 4;
static const DWRITE_FONT_FILE_TYPE DWRITE_FONT_FILE_TYPE_TYPE1_PFB = 5;
static const DWRITE_FONT_FILE_TYPE DWRITE_FONT_FILE_TYPE_VECTOR = 6;
static const DWRITE_FONT_FILE_TYPE DWRITE_FONT_FILE_TYPE_BITMAP = 7;
typedef UINT DWRITE_TEXTURE_TYPE; //Alias
static const DWRITE_TEXTURE_TYPE DWRITE_TEXTURE_ALIASED_1x1 = 0;
static const DWRITE_TEXTURE_TYPE DWRITE_TEXTURE_CLEARTYPE_3x1 = 1;
typedef struct DWRITE_INLINE_OBJECT_METRICS {
FLOAT width;
FLOAT height;
FLOAT baseline;
BOOL supportsSideways;
} DWRITE_INLINE_OBJECT_METRICS;
typedef struct DWRITE_OVERHANG_METRICS {
FLOAT left;
FLOAT top;
FLOAT right;
FLOAT bottom;
} DWRITE_OVERHANG_METRICS;
typedef UINT DWRITE_BREAK_CONDITION; //Alias
static const DWRITE_BREAK_CONDITION DWRITE_BREAK_CONDITION_NEUTRAL = 0;
static const DWRITE_BREAK_CONDITION DWRITE_BREAK_CONDITION_CAN_BREAK = 1;
static const DWRITE_BREAK_CONDITION DWRITE_BREAK_CONDITION_MAY_NOT_BREAK = 2;
static const DWRITE_BREAK_CONDITION DWRITE_BREAK_CONDITION_MUST_BREAK = 3;
typedef UINT DWRITE_SCRIPT_SHAPES; //Alias
typedef struct DWRITE_SCRIPT_ANALYSIS {
UINT16 script;
DWRITE_SCRIPT_SHAPES shapes;
} DWRITE_SCRIPT_ANALYSIS;
typedef UINT DWRITE_TEXT_ALIGNMENT; //Alias
static const DWRITE_TEXT_ALIGNMENT DWRITE_TEXT_ALIGNMENT_LEADING = 0;
static const DWRITE_TEXT_ALIGNMENT DWRITE_TEXT_ALIGNMENT_TRAILING = 1;
static const DWRITE_TEXT_ALIGNMENT DWRITE_TEXT_ALIGNMENT_CENTER = 2;
typedef UINT DWRITE_PARAGRAPH_ALIGNMENT; //Alias
static const DWRITE_PARAGRAPH_ALIGNMENT DWRITE_PARAGRAPH_ALIGNMENT_NEAR = 0;
static const DWRITE_PARAGRAPH_ALIGNMENT DWRITE_PARAGRAPH_ALIGNMENT_FAR = 1;
static const DWRITE_PARAGRAPH_ALIGNMENT DWRITE_PARAGRAPH_ALIGNMENT_CENTER = 2;
typedef UINT DWRITE_WORD_WRAPPING; //Alias
static const DWRITE_WORD_WRAPPING DWRITE_WORD_WRAPPING_WRAP = 0;
static const DWRITE_WORD_WRAPPING DWRITE_WORD_WRAPPING_NO_WRAP = 1;
typedef UINT DWRITE_READING_DIRECTION; //Alias
static const DWRITE_READING_DIRECTION DWRITE_READING_DIRECTION_LEFT_TO_RIGHT = 0;
static const DWRITE_READING_DIRECTION DWRITE_READING_DIRECTION_RIGHT_TO_LEFT = 1;
typedef UINT DWRITE_FLOW_DIRECTION; //Alias
static const DWRITE_FLOW_DIRECTION DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM = 0;
typedef UINT DWRITE_TRIMMING_GRANULARITY; //Alias
static const DWRITE_TRIMMING_GRANULARITY DWRITE_TRIMMING_GRANULARITY_NONE = 0;
static const DWRITE_TRIMMING_GRANULARITY DWRITE_TRIMMING_GRANULARITY_CHARACTER = 1;
static const DWRITE_TRIMMING_GRANULARITY DWRITE_TRIMMING_GRANULARITY_WORD = 2;
typedef struct DWRITE_TRIMMING {
DWRITE_TRIMMING_GRANULARITY granularity;
UINT32 delimiter;
UINT32 delimiterCount;
} DWRITE_TRIMMING;
typedef UINT DWRITE_LINE_SPACING_METHOD; //Alias
static const DWRITE_LINE_SPACING_METHOD DWRITE_LINE_SPACING_METHOD_DEFAULT = 0;
static const DWRITE_LINE_SPACING_METHOD DWRITE_LINE_SPACING_METHOD_UNIFORM = 1;
typedef struct DWRITE_TEXT_RANGE {
UINT32 startPosition;
UINT32 length;
} DWRITE_TEXT_RANGE;
typedef struct DWRITE_LINE_METRICS {
UINT32 length;
UINT32 trailingWhitespaceLength;
UINT32 newlineLength;
FLOAT height;
FLOAT baseline;
BOOL isTrimmed;
} DWRITE_LINE_METRICS;
typedef struct DWRITE_TEXT_METRICS {
FLOAT left;
FLOAT top;
FLOAT width;
FLOAT widthIncludingTrailingWhitespace;
FLOAT height;
FLOAT layoutWidth;
FLOAT layoutHeight;
UINT32 maxBidiReorderingDepth;
UINT32 lineCount;
} DWRITE_TEXT_METRICS;
typedef struct DWRITE_HIT_TEST_METRICS {
UINT32 textPosition;
UINT32 length;
FLOAT left;
FLOAT top;
FLOAT width;
FLOAT height;
UINT32 bidiLevel;
BOOL isText;
BOOL isTrimmed;
} DWRITE_HIT_TEST_METRICS;
typedef UINT DWRITE_MEASURING_MODE; //Alias
static const DWRITE_MEASURING_MODE DWRITE_MEASURING_MODE_NATURAL = 0;
static const DWRITE_MEASURING_MODE DWRITE_MEASURING_MODE_GDI_CLASSIC = 1;
static const DWRITE_MEASURING_MODE DWRITE_MEASURING_MODE_GDI_NATURAL = 2;
typedef struct DWRITE_UNDERLINE {
FLOAT width;
FLOAT thickness;
FLOAT offset;
FLOAT runHeight;
DWRITE_READING_DIRECTION readingDirection;
DWRITE_FLOW_DIRECTION flowDirection;
WCHAR* localeName;
DWRITE_MEASURING_MODE measuringMode;
} DWRITE_UNDERLINE;
typedef struct DWRITE_STRIKETHROUGH {
FLOAT width;
FLOAT thickness;
FLOAT offset;
DWRITE_READING_DIRECTION readingDirection;
DWRITE_FLOW_DIRECTION flowDirection;
WCHAR* localeName;
DWRITE_MEASURING_MODE measuringMode;
} DWRITE_STRIKETHROUGH;
typedef UINT DWRITE_FONT_FEATURE_TAG; //Alias
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_ALTERNATIVE_FRACTIONS = 0x63726661;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS_FROM_CAPITALS = 0x63703263;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS_FROM_CAPITALS = 0x63733263;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES = 0x746c6163;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_CASE_SENSITIVE_FORMS = 0x65736163;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION = 0x706d6363;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_LIGATURES = 0x67696c63;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_CAPITAL_SPACING = 0x70737063;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_SWASH = 0x68777363;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_CURSIVE_POSITIONING = 0x73727563;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_DEFAULT = 0x746c6664;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_DISCRETIONARY_LIGATURES = 0x67696c64;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_EXPERT_FORMS = 0x74707865;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_FRACTIONS = 0x63617266;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_FULL_WIDTH = 0x64697766;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_HALF_FORMS = 0x666c6168;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_HALANT_FORMS = 0x6e6c6168;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_ALTERNATE_HALF_WIDTH = 0x746c6168;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_HISTORICAL_FORMS = 0x74736968;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_HORIZONTAL_KANA_ALTERNATES = 0x616e6b68;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_HISTORICAL_LIGATURES = 0x67696c68;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_HALF_WIDTH = 0x64697768;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_HOJO_KANJI_FORMS = 0x6f6a6f68;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_JIS04_FORMS = 0x3430706a;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_JIS78_FORMS = 0x3837706a;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_JIS83_FORMS = 0x3338706a;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_JIS90_FORMS = 0x3039706a;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_KERNING = 0x6e72656b;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STANDARD_LIGATURES = 0x6167696c;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_LINING_FIGURES = 0x6d756e6c;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_LOCALIZED_FORMS = 0x6c636f6c;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_MARK_POSITIONING = 0x6b72616d;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_MATHEMATICAL_GREEK = 0x6b72676d;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING = 0x6b6d6b6d;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_ALTERNATE_ANNOTATION_FORMS = 0x746c616e;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_NLC_KANJI_FORMS = 0x6b636c6e;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_OLD_STYLE_FIGURES = 0x6d756e6f;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_ORDINALS = 0x6e64726f;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_ALTERNATE_WIDTH = 0x746c6170;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS = 0x70616370;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_FIGURES = 0x6d756e70;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_WIDTHS = 0x64697770;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_QUARTER_WIDTHS = 0x64697771;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_REQUIRED_LIGATURES = 0x67696c72;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_RUBY_NOTATION_FORMS = 0x79627572;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_ALTERNATES = 0x746c6173;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_SCIENTIFIC_INFERIORS = 0x666e6973;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS = 0x70636d73;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_SIMPLIFIED_FORMS = 0x6c706d73;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_1 = 0x31307373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_2 = 0x32307373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_3 = 0x33307373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_4 = 0x34307373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_5 = 0x35307373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_6 = 0x36307373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7 = 0x37307373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_8 = 0x38307373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_9 = 0x39307373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_10 = 0x30317373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_11 = 0x31317373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_12 = 0x32317373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_13 = 0x33317373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_14 = 0x34317373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_15 = 0x35317373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_16 = 0x36317373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_17 = 0x37317373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_18 = 0x38317373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_19 = 0x39317373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_20 = 0x30327373;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_SUBSCRIPT = 0x73627573;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_SUPERSCRIPT = 0x73707573;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_SWASH = 0x68737773;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_TITLING = 0x6c746974;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_TRADITIONAL_NAME_FORMS = 0x6d616e74;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_TABULAR_FIGURES = 0x6d756e74;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_TRADITIONAL_FORMS = 0x64617274;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_THIRD_WIDTHS = 0x64697774;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_UNICASE = 0x63696e75;
static const DWRITE_FONT_FEATURE_TAG DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO = 0x6f72657a;
typedef struct DWRITE_FONT_FEATURE {
DWRITE_FONT_FEATURE_TAG nameTag;
UINT32 parameter;
} DWRITE_FONT_FEATURE;
typedef struct DWRITE_GLYPH_METRICS {
INT32 leftSideBearing;
UINT32 advanceWidth;
INT32 rightSideBearing;
INT32 topSideBearing;
UINT32 advanceHeight;
INT32 bottomSideBearing;
INT32 verticalOriginY;
} DWRITE_GLYPH_METRICS;
typedef struct DWRITE_TYPOGRAPHIC_FEATURES {
DWRITE_FONT_FEATURE* features;
UINT32 featureCount;
} DWRITE_TYPOGRAPHIC_FEATURES;
typedef struct DWRITE_GLYPH_RUN_DESCRIPTION {
WCHAR* localeName;
WCHAR* string;
UINT32 stringLength;
UINT16* clusterMap;
UINT32 textPosition;
} DWRITE_GLYPH_RUN_DESCRIPTION;
]]