|  | /* | 
|  | * Copyright 2012 Nikolay Sivov for CodeWeavers | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | import "unknwn.idl"; | 
|  | import "dcommon.idl"; | 
|  |  | 
|  | interface IDWriteFactory; | 
|  | interface IDWriteFontCollection; | 
|  | interface IDWriteFontFamily; | 
|  | interface IDWriteFontFace; | 
|  | interface IDWriteInlineObject; | 
|  |  | 
|  | interface ID2D1SimplifiedGeometrySink; | 
|  | typedef ID2D1SimplifiedGeometrySink IDWriteGeometrySink; | 
|  |  | 
|  | cpp_quote("#ifndef _WINDEF_") | 
|  | /* already defined in windef.h but needed for WIDL */ | 
|  | typedef void *HMONITOR; | 
|  | cpp_quote("#endif /* _WINDEF_ */") | 
|  |  | 
|  | cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") | 
|  | cpp_quote("#undef GetGlyphIndices") | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | typedef enum DWRITE_FACTORY_TYPE | 
|  | { | 
|  | DWRITE_FACTORY_TYPE_SHARED, | 
|  | DWRITE_FACTORY_TYPE_ISOLATED | 
|  | } DWRITE_FACTORY_TYPE; | 
|  |  | 
|  | typedef enum DWRITE_FONT_FILE_TYPE | 
|  | { | 
|  | DWRITE_FONT_FILE_TYPE_UNKNOWN, | 
|  | DWRITE_FONT_FILE_TYPE_CFF, | 
|  | DWRITE_FONT_FILE_TYPE_TRUETYPE, | 
|  | DWRITE_FONT_FILE_TYPE_OPENTYPE_COLLECTION, | 
|  | DWRITE_FONT_FILE_TYPE_TYPE1_PFM, | 
|  | DWRITE_FONT_FILE_TYPE_TYPE1_PFB, | 
|  | DWRITE_FONT_FILE_TYPE_VECTOR, | 
|  | DWRITE_FONT_FILE_TYPE_BITMAP, | 
|  | DWRITE_FONT_FILE_TYPE_TRUETYPE_COLLECTION = DWRITE_FONT_FILE_TYPE_OPENTYPE_COLLECTION | 
|  | } DWRITE_FONT_FILE_TYPE; | 
|  |  | 
|  | typedef enum DWRITE_FONT_FACE_TYPE | 
|  | { | 
|  | DWRITE_FONT_FACE_TYPE_CFF, | 
|  | DWRITE_FONT_FACE_TYPE_TRUETYPE, | 
|  | DWRITE_FONT_FACE_TYPE_OPENTYPE_COLLECTION, | 
|  | DWRITE_FONT_FACE_TYPE_TYPE1, | 
|  | DWRITE_FONT_FACE_TYPE_VECTOR, | 
|  | DWRITE_FONT_FACE_TYPE_BITMAP, | 
|  | DWRITE_FONT_FACE_TYPE_UNKNOWN, | 
|  | DWRITE_FONT_FACE_TYPE_RAW_CFF, | 
|  | DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION = DWRITE_FONT_FACE_TYPE_OPENTYPE_COLLECTION | 
|  | } DWRITE_FONT_FACE_TYPE; | 
|  |  | 
|  | typedef enum DWRITE_FONT_WEIGHT | 
|  | { | 
|  | DWRITE_FONT_WEIGHT_THIN = 100, | 
|  | DWRITE_FONT_WEIGHT_EXTRA_LIGHT = 200, | 
|  | DWRITE_FONT_WEIGHT_ULTRA_LIGHT = 200, | 
|  | DWRITE_FONT_WEIGHT_LIGHT = 300, | 
|  | DWRITE_FONT_WEIGHT_SEMI_LIGHT = 350, | 
|  | DWRITE_FONT_WEIGHT_NORMAL = 400, | 
|  | DWRITE_FONT_WEIGHT_REGULAR = 400, | 
|  | DWRITE_FONT_WEIGHT_MEDIUM = 500, | 
|  | DWRITE_FONT_WEIGHT_DEMI_BOLD = 600, | 
|  | DWRITE_FONT_WEIGHT_SEMI_BOLD = 600, | 
|  | DWRITE_FONT_WEIGHT_BOLD = 700, | 
|  | DWRITE_FONT_WEIGHT_EXTRA_BOLD = 800, | 
|  | DWRITE_FONT_WEIGHT_ULTRA_BOLD = 800, | 
|  | DWRITE_FONT_WEIGHT_BLACK = 900, | 
|  | DWRITE_FONT_WEIGHT_HEAVY = 900, | 
|  | DWRITE_FONT_WEIGHT_EXTRA_BLACK = 950, | 
|  | DWRITE_FONT_WEIGHT_ULTRA_BLACK = 950 | 
|  | } DWRITE_FONT_WEIGHT; | 
|  |  | 
|  | typedef enum DWRITE_FONT_STRETCH | 
|  | { | 
|  | DWRITE_FONT_STRETCH_UNDEFINED = 0, | 
|  | DWRITE_FONT_STRETCH_ULTRA_CONDENSED = 1, | 
|  | DWRITE_FONT_STRETCH_EXTRA_CONDENSED = 2, | 
|  | DWRITE_FONT_STRETCH_CONDENSED = 3, | 
|  | DWRITE_FONT_STRETCH_SEMI_CONDENSED = 4, | 
|  | DWRITE_FONT_STRETCH_NORMAL = 5, | 
|  | DWRITE_FONT_STRETCH_MEDIUM = 5, | 
|  | DWRITE_FONT_STRETCH_SEMI_EXPANDED = 6, | 
|  | DWRITE_FONT_STRETCH_EXPANDED = 7, | 
|  | DWRITE_FONT_STRETCH_EXTRA_EXPANDED = 8, | 
|  | DWRITE_FONT_STRETCH_ULTRA_EXPANDED = 9 | 
|  | } DWRITE_FONT_STRETCH; | 
|  |  | 
|  | typedef enum DWRITE_FONT_STYLE | 
|  | { | 
|  | DWRITE_FONT_STYLE_NORMAL, | 
|  | DWRITE_FONT_STYLE_OBLIQUE, | 
|  | DWRITE_FONT_STYLE_ITALIC | 
|  | } DWRITE_FONT_STYLE; | 
|  |  | 
|  | typedef enum DWRITE_INFORMATIONAL_STRING_ID | 
|  | { | 
|  | DWRITE_INFORMATIONAL_STRING_NONE, | 
|  | DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE, | 
|  | DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS, | 
|  | DWRITE_INFORMATIONAL_STRING_TRADEMARK, | 
|  | DWRITE_INFORMATIONAL_STRING_MANUFACTURER, | 
|  | DWRITE_INFORMATIONAL_STRING_DESIGNER, | 
|  | DWRITE_INFORMATIONAL_STRING_DESIGNER_URL, | 
|  | DWRITE_INFORMATIONAL_STRING_DESCRIPTION, | 
|  | DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL, | 
|  | DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION, | 
|  | DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL, | 
|  | DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES, | 
|  | DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES, | 
|  | DWRITE_INFORMATIONAL_STRING_TYPOGRAPHIC_FAMILY_NAMES, | 
|  | DWRITE_INFORMATIONAL_STRING_TYPOGRAPHIC_SUBFAMILY_NAMES, | 
|  | DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT, | 
|  | DWRITE_INFORMATIONAL_STRING_FULL_NAME, | 
|  | DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME, | 
|  | DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_CID_NAME, | 
|  | DWRITE_INFORMATIONAL_STRING_WEIGHT_STRETCH_STYLE_FAMILY_NAME, | 
|  | DWRITE_INFORMATIONAL_STRING_DESIGN_SCRIPT_LANGUAGE_TAG, | 
|  | DWRITE_INFORMATIONAL_STRING_SUPPORTED_SCRIPT_LANGUAGE_TAG, | 
|  | DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES = DWRITE_INFORMATIONAL_STRING_TYPOGRAPHIC_FAMILY_NAMES, | 
|  | DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES = DWRITE_INFORMATIONAL_STRING_TYPOGRAPHIC_SUBFAMILY_NAMES, | 
|  | DWRITE_INFORMATIONAL_STRING_WWS_FAMILY_NAME = DWRITE_INFORMATIONAL_STRING_WEIGHT_STRETCH_STYLE_FAMILY_NAME, | 
|  | } DWRITE_INFORMATIONAL_STRING_ID; | 
|  |  | 
|  | typedef enum DWRITE_FONT_SIMULATIONS | 
|  | { | 
|  | DWRITE_FONT_SIMULATIONS_NONE, | 
|  | DWRITE_FONT_SIMULATIONS_BOLD, | 
|  | DWRITE_FONT_SIMULATIONS_OBLIQUE | 
|  | } DWRITE_FONT_SIMULATIONS; | 
|  | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DWRITE_FONT_SIMULATIONS);") | 
|  |  | 
|  | typedef enum DWRITE_PIXEL_GEOMETRY | 
|  | { | 
|  | DWRITE_PIXEL_GEOMETRY_FLAT, | 
|  | DWRITE_PIXEL_GEOMETRY_RGB, | 
|  | DWRITE_PIXEL_GEOMETRY_BGR | 
|  | } DWRITE_PIXEL_GEOMETRY; | 
|  |  | 
|  | typedef enum DWRITE_RENDERING_MODE | 
|  | { | 
|  | DWRITE_RENDERING_MODE_DEFAULT, | 
|  | DWRITE_RENDERING_MODE_ALIASED, | 
|  | DWRITE_RENDERING_MODE_GDI_CLASSIC, | 
|  | DWRITE_RENDERING_MODE_GDI_NATURAL, | 
|  | DWRITE_RENDERING_MODE_NATURAL, | 
|  | DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC, | 
|  | DWRITE_RENDERING_MODE_OUTLINE, | 
|  | DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC = DWRITE_RENDERING_MODE_GDI_CLASSIC, | 
|  | DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL = DWRITE_RENDERING_MODE_GDI_NATURAL, | 
|  | DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL = DWRITE_RENDERING_MODE_NATURAL, | 
|  | DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC = DWRITE_RENDERING_MODE_NATURAL_SYMMETRIC | 
|  | } DWRITE_RENDERING_MODE; | 
|  |  | 
|  | typedef enum DWRITE_TEXT_ALIGNMENT | 
|  | { | 
|  | DWRITE_TEXT_ALIGNMENT_LEADING, | 
|  | DWRITE_TEXT_ALIGNMENT_TRAILING, | 
|  | DWRITE_TEXT_ALIGNMENT_CENTER, | 
|  | DWRITE_TEXT_ALIGNMENT_JUSTIFIED | 
|  | } DWRITE_TEXT_ALIGNMENT; | 
|  |  | 
|  | typedef enum DWRITE_PARAGRAPH_ALIGNMENT | 
|  | { | 
|  | DWRITE_PARAGRAPH_ALIGNMENT_NEAR, | 
|  | DWRITE_PARAGRAPH_ALIGNMENT_FAR, | 
|  | DWRITE_PARAGRAPH_ALIGNMENT_CENTER | 
|  | } DWRITE_PARAGRAPH_ALIGNMENT; | 
|  |  | 
|  | typedef enum DWRITE_WORD_WRAPPING | 
|  | { | 
|  | DWRITE_WORD_WRAPPING_WRAP, | 
|  | DWRITE_WORD_WRAPPING_NO_WRAP, | 
|  | DWRITE_WORD_WRAPPING_EMERGENCY_BREAK, | 
|  | DWRITE_WORD_WRAPPING_WHOLE_WORD, | 
|  | DWRITE_WORD_WRAPPING_CHARACTER | 
|  | } DWRITE_WORD_WRAPPING; | 
|  |  | 
|  | typedef enum DWRITE_READING_DIRECTION | 
|  | { | 
|  | DWRITE_READING_DIRECTION_LEFT_TO_RIGHT, | 
|  | DWRITE_READING_DIRECTION_RIGHT_TO_LEFT, | 
|  | DWRITE_READING_DIRECTION_TOP_TO_BOTTOM, | 
|  | DWRITE_READING_DIRECTION_BOTTOM_TO_TOP | 
|  | } DWRITE_READING_DIRECTION; | 
|  |  | 
|  | typedef enum DWRITE_FLOW_DIRECTION | 
|  | { | 
|  | DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM, | 
|  | DWRITE_FLOW_DIRECTION_BOTTOM_TO_TOP, | 
|  | DWRITE_FLOW_DIRECTION_LEFT_TO_RIGHT, | 
|  | DWRITE_FLOW_DIRECTION_RIGHT_TO_LEFT | 
|  | } DWRITE_FLOW_DIRECTION; | 
|  |  | 
|  | typedef enum DWRITE_TRIMMING_GRANULARITY | 
|  | { | 
|  | DWRITE_TRIMMING_GRANULARITY_NONE, | 
|  | DWRITE_TRIMMING_GRANULARITY_CHARACTER, | 
|  | DWRITE_TRIMMING_GRANULARITY_WORD | 
|  | } DWRITE_TRIMMING_GRANULARITY; | 
|  |  | 
|  | typedef enum DWRITE_BREAK_CONDITION | 
|  | { | 
|  | DWRITE_BREAK_CONDITION_NEUTRAL, | 
|  | DWRITE_BREAK_CONDITION_CAN_BREAK, | 
|  | DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, | 
|  | DWRITE_BREAK_CONDITION_MUST_BREAK | 
|  | } DWRITE_BREAK_CONDITION; | 
|  |  | 
|  | typedef enum DWRITE_LINE_SPACING_METHOD | 
|  | { | 
|  | DWRITE_LINE_SPACING_METHOD_DEFAULT, | 
|  | DWRITE_LINE_SPACING_METHOD_UNIFORM, | 
|  | DWRITE_LINE_SPACING_METHOD_PROPORTIONAL | 
|  | } DWRITE_LINE_SPACING_METHOD; | 
|  |  | 
|  | cpp_quote("#define DWRITE_MAKE_OPENTYPE_TAG(a,b,c,d) ( \\") | 
|  | cpp_quote("    ((UINT32)(UINT8)(d) << 24) | \\") | 
|  | cpp_quote("    ((UINT32)(UINT8)(c) << 16) | \\") | 
|  | cpp_quote("    ((UINT32)(UINT8)(b) <<  8) | \\") | 
|  | cpp_quote("     (UINT32)(UINT8)(a))") | 
|  |  | 
|  | typedef enum DWRITE_FONT_FEATURE_TAG | 
|  | { | 
|  | DWRITE_FONT_FEATURE_TAG_ALTERNATIVE_FRACTIONS           = 0x63726661, /* 'afrc' */ | 
|  | DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS_FROM_CAPITALS   = 0x63703263, /* 'c2pc' */ | 
|  | DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS_FROM_CAPITALS    = 0x63733263, /* 'c2sc' */ | 
|  | DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES           = 0x746c6163, /* 'calt' */ | 
|  | DWRITE_FONT_FEATURE_TAG_CASE_SENSITIVE_FORMS            = 0x65736163, /* 'case' */ | 
|  | DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION = 0x706d6363, /* 'ccmp' */ | 
|  | DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_LIGATURES            = 0x67696c63, /* 'clig' */ | 
|  | DWRITE_FONT_FEATURE_TAG_CAPITAL_SPACING                 = 0x70737063, /* 'cpsp' */ | 
|  | DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_SWASH                = 0x68777363, /* 'cswh' */ | 
|  | DWRITE_FONT_FEATURE_TAG_CURSIVE_POSITIONING             = 0x73727563, /* 'curs' */ | 
|  | DWRITE_FONT_FEATURE_TAG_DEFAULT                         = 0x746c6664, /* 'dflt' */ | 
|  | DWRITE_FONT_FEATURE_TAG_DISCRETIONARY_LIGATURES         = 0x67696c64, /* 'dlig' */ | 
|  | DWRITE_FONT_FEATURE_TAG_EXPERT_FORMS                    = 0x74707865, /* 'expt' */ | 
|  | DWRITE_FONT_FEATURE_TAG_FRACTIONS                       = 0x63617266, /* 'frac' */ | 
|  | DWRITE_FONT_FEATURE_TAG_FULL_WIDTH                      = 0x64697766, /* 'fwid' */ | 
|  | DWRITE_FONT_FEATURE_TAG_HALF_FORMS                      = 0x666c6168, /* 'half' */ | 
|  | DWRITE_FONT_FEATURE_TAG_HALANT_FORMS                    = 0x6e6c6168, /* 'haln' */ | 
|  | DWRITE_FONT_FEATURE_TAG_ALTERNATE_HALF_WIDTH            = 0x746c6168, /* 'halt' */ | 
|  | DWRITE_FONT_FEATURE_TAG_HISTORICAL_FORMS                = 0x74736968, /* 'hist' */ | 
|  | DWRITE_FONT_FEATURE_TAG_HORIZONTAL_KANA_ALTERNATES      = 0x616e6b68, /* 'hkna' */ | 
|  | DWRITE_FONT_FEATURE_TAG_HISTORICAL_LIGATURES            = 0x67696c68, /* 'hlig' */ | 
|  | DWRITE_FONT_FEATURE_TAG_HALF_WIDTH                      = 0x64697768, /* 'hwid' */ | 
|  | DWRITE_FONT_FEATURE_TAG_HOJO_KANJI_FORMS                = 0x6f6a6f68, /* 'hojo' */ | 
|  | DWRITE_FONT_FEATURE_TAG_JIS04_FORMS                     = 0x3430706a, /* 'jp04' */ | 
|  | DWRITE_FONT_FEATURE_TAG_JIS78_FORMS                     = 0x3837706a, /* 'jp78' */ | 
|  | DWRITE_FONT_FEATURE_TAG_JIS83_FORMS                     = 0x3338706a, /* 'jp83' */ | 
|  | DWRITE_FONT_FEATURE_TAG_JIS90_FORMS                     = 0x3039706a, /* 'jp90' */ | 
|  | DWRITE_FONT_FEATURE_TAG_KERNING                         = 0x6e72656b, /* 'kern' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STANDARD_LIGATURES              = 0x6167696c, /* 'liga' */ | 
|  | DWRITE_FONT_FEATURE_TAG_LINING_FIGURES                  = 0x6d756e6c, /* 'lnum' */ | 
|  | DWRITE_FONT_FEATURE_TAG_LOCALIZED_FORMS                 = 0x6c636f6c, /* 'locl' */ | 
|  | DWRITE_FONT_FEATURE_TAG_MARK_POSITIONING                = 0x6b72616d, /* 'mark' */ | 
|  | DWRITE_FONT_FEATURE_TAG_MATHEMATICAL_GREEK              = 0x6b72676d, /* 'mgrk' */ | 
|  | DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING        = 0x6b6d6b6d, /* 'mkmk' */ | 
|  | DWRITE_FONT_FEATURE_TAG_ALTERNATE_ANNOTATION_FORMS      = 0x746c616e, /* 'nalt' */ | 
|  | DWRITE_FONT_FEATURE_TAG_NLC_KANJI_FORMS                 = 0x6b636c6e, /* 'nlck' */ | 
|  | DWRITE_FONT_FEATURE_TAG_OLD_STYLE_FIGURES               = 0x6d756e6f, /* 'onum' */ | 
|  | DWRITE_FONT_FEATURE_TAG_ORDINALS                        = 0x6e64726f, /* 'ordn' */ | 
|  | DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_ALTERNATE_WIDTH    = 0x746c6170, /* 'palt' */ | 
|  | DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS                 = 0x70616370, /* 'pcap' */ | 
|  | DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_FIGURES            = 0x6d756e70, /* 'pnum' */ | 
|  | DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_WIDTHS             = 0x64697770, /* 'pwid' */ | 
|  | DWRITE_FONT_FEATURE_TAG_QUARTER_WIDTHS                  = 0x64697771, /* 'qwid' */ | 
|  | DWRITE_FONT_FEATURE_TAG_REQUIRED_LIGATURES              = 0x67696c72, /* 'rlig' */ | 
|  | DWRITE_FONT_FEATURE_TAG_RUBY_NOTATION_FORMS             = 0x79627572, /* 'ruby' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_ALTERNATES            = 0x746c6173, /* 'salt' */ | 
|  | DWRITE_FONT_FEATURE_TAG_SCIENTIFIC_INFERIORS            = 0x666e6973, /* 'sinf' */ | 
|  | DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS                  = 0x70636d73, /* 'smcp' */ | 
|  | DWRITE_FONT_FEATURE_TAG_SIMPLIFIED_FORMS                = 0x6c706d73, /* 'smpl' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_1                 = 0x31307373, /* 'ss01' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_2                 = 0x32307373, /* 'ss02' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_3                 = 0x33307373, /* 'ss03' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_4                 = 0x34307373, /* 'ss04' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_5                 = 0x35307373, /* 'ss05' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_6                 = 0x36307373, /* 'ss06' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7                 = 0x37307373, /* 'ss07' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_8                 = 0x38307373, /* 'ss08' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_9                 = 0x39307373, /* 'ss09' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_10                = 0x30317373, /* 'ss10' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_11                = 0x31317373, /* 'ss11' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_12                = 0x32317373, /* 'ss12' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_13                = 0x33317373, /* 'ss13' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_14                = 0x34317373, /* 'ss14' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_15                = 0x35317373, /* 'ss15' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_16                = 0x36317373, /* 'ss16' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_17                = 0x37317373, /* 'ss17' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_18                = 0x38317373, /* 'ss18' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_19                = 0x39317373, /* 'ss19' */ | 
|  | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_20                = 0x30327373, /* 'ss20' */ | 
|  | DWRITE_FONT_FEATURE_TAG_SUBSCRIPT                       = 0x73627573, /* 'subs' */ | 
|  | DWRITE_FONT_FEATURE_TAG_SUPERSCRIPT                     = 0x73707573, /* 'sups' */ | 
|  | DWRITE_FONT_FEATURE_TAG_SWASH                           = 0x68737773, /* 'swsh' */ | 
|  | DWRITE_FONT_FEATURE_TAG_TITLING                         = 0x6c746974, /* 'titl' */ | 
|  | DWRITE_FONT_FEATURE_TAG_TRADITIONAL_NAME_FORMS          = 0x6d616e74, /* 'tnam' */ | 
|  | DWRITE_FONT_FEATURE_TAG_TABULAR_FIGURES                 = 0x6d756e74, /* 'tnum' */ | 
|  | DWRITE_FONT_FEATURE_TAG_TRADITIONAL_FORMS               = 0x64617274, /* 'trad' */ | 
|  | DWRITE_FONT_FEATURE_TAG_THIRD_WIDTHS                    = 0x64697774, /* 'twid' */ | 
|  | DWRITE_FONT_FEATURE_TAG_UNICASE                         = 0x63696e75, /* 'unic' */ | 
|  | DWRITE_FONT_FEATURE_TAG_VERTICAL_WRITING                = 0x74726576, /* 'vert' */ | 
|  | DWRITE_FONT_FEATURE_TAG_VERTICAL_ALTERNATES_AND_ROTATION= 0x32747276, /* 'vrt2' */ | 
|  | DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO                    = 0x6f72657a, /* 'zero' */ | 
|  | } DWRITE_FONT_FEATURE_TAG; | 
|  |  | 
|  | typedef enum DWRITE_SCRIPT_SHAPES | 
|  | { | 
|  | DWRITE_SCRIPT_SHAPES_DEFAULT = 0, | 
|  | DWRITE_SCRIPT_SHAPES_NO_VISUAL = 1 | 
|  | } DWRITE_SCRIPT_SHAPES; | 
|  | cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DWRITE_SCRIPT_SHAPES);") | 
|  |  | 
|  | typedef enum DWRITE_NUMBER_SUBSTITUTION_METHOD | 
|  | { | 
|  | DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE, | 
|  | DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL, | 
|  | DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE, | 
|  | DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL, | 
|  | DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL | 
|  | } DWRITE_NUMBER_SUBSTITUTION_METHOD; | 
|  |  | 
|  | cpp_quote("#define DWRITE_ALPHA_MAX 255") | 
|  |  | 
|  | typedef enum DWRITE_TEXTURE_TYPE | 
|  | { | 
|  | DWRITE_TEXTURE_ALIASED_1x1, | 
|  | DWRITE_TEXTURE_CLEARTYPE_3x1 | 
|  | } DWRITE_TEXTURE_TYPE; | 
|  |  | 
|  | 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 struct DWRITE_GLYPH_METRICS | 
|  | { | 
|  | INT32 leftSideBearing; | 
|  | UINT32 advanceWidth; | 
|  | INT32 rightSideBearing; | 
|  | INT32 topSideBearing; | 
|  | UINT32 advanceHeight; | 
|  | INT32 bottomSideBearing; | 
|  | INT32 verticalOriginY; | 
|  | } DWRITE_GLYPH_METRICS; | 
|  |  | 
|  | typedef struct DWRITE_GLYPH_OFFSET | 
|  | { | 
|  | FLOAT advanceOffset; | 
|  | FLOAT ascenderOffset; | 
|  | } DWRITE_GLYPH_OFFSET; | 
|  |  | 
|  | typedef struct DWRITE_MATRIX | 
|  | { | 
|  | FLOAT m11; | 
|  | FLOAT m12; | 
|  | FLOAT m21; | 
|  | FLOAT m22; | 
|  | FLOAT dx; | 
|  | FLOAT dy; | 
|  | } DWRITE_MATRIX; | 
|  |  | 
|  | typedef struct DWRITE_TRIMMING | 
|  | { | 
|  | DWRITE_TRIMMING_GRANULARITY granularity; | 
|  | UINT32 delimiter; | 
|  | UINT32 delimiterCount; | 
|  | } DWRITE_TRIMMING; | 
|  |  | 
|  | cpp_quote("#ifndef __d2d1_h__") | 
|  | typedef struct DWRITE_GLYPH_RUN DWRITE_GLYPH_RUN; | 
|  | cpp_quote("#endif /* __d2d1_h__ */") | 
|  |  | 
|  | struct DWRITE_GLYPH_RUN | 
|  | { | 
|  | IDWriteFontFace* fontFace; | 
|  | FLOAT fontEmSize; | 
|  | UINT32 glyphCount; | 
|  | UINT16 const* glyphIndices; | 
|  | FLOAT const* glyphAdvances; | 
|  | DWRITE_GLYPH_OFFSET const* glyphOffsets; | 
|  | BOOL isSideways; | 
|  | UINT32 bidiLevel; | 
|  | }; | 
|  |  | 
|  | cpp_quote("#ifndef __d2d1_1_h__") | 
|  | typedef struct DWRITE_GLYPH_RUN_DESCRIPTION DWRITE_GLYPH_RUN_DESCRIPTION; | 
|  | cpp_quote("#endif /* __d2d1_1_h__ */") | 
|  |  | 
|  | struct DWRITE_GLYPH_RUN_DESCRIPTION | 
|  | { | 
|  | WCHAR const* localeName; | 
|  | WCHAR const* string; | 
|  | UINT32 stringLength; | 
|  | UINT16 const* clusterMap; | 
|  | UINT32 textPosition; | 
|  | }; | 
|  |  | 
|  | typedef struct DWRITE_UNDERLINE | 
|  | { | 
|  | FLOAT width; | 
|  | FLOAT thickness; | 
|  | FLOAT offset; | 
|  | FLOAT runHeight; | 
|  | DWRITE_READING_DIRECTION readingDirection; | 
|  | DWRITE_FLOW_DIRECTION flowDirection; | 
|  | WCHAR const* 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 const* localeName; | 
|  | DWRITE_MEASURING_MODE measuringMode; | 
|  | } DWRITE_STRIKETHROUGH; | 
|  |  | 
|  | 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 struct DWRITE_FONT_FEATURE | 
|  | { | 
|  | DWRITE_FONT_FEATURE_TAG nameTag; | 
|  | UINT32 parameter; | 
|  | } DWRITE_FONT_FEATURE; | 
|  |  | 
|  | 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_CLUSTER_METRICS | 
|  | { | 
|  | FLOAT width; | 
|  | UINT16 length; | 
|  | UINT16 canWrapLineAfter : 1; | 
|  | UINT16 isWhitespace : 1; | 
|  | UINT16 isNewline : 1; | 
|  | UINT16 isSoftHyphen : 1; | 
|  | UINT16 isRightToLeft : 1; | 
|  | UINT16 padding : 11; | 
|  | } DWRITE_CLUSTER_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 struct DWRITE_SCRIPT_ANALYSIS | 
|  | { | 
|  | UINT16 script; | 
|  | DWRITE_SCRIPT_SHAPES shapes; | 
|  | } DWRITE_SCRIPT_ANALYSIS; | 
|  |  | 
|  | typedef struct DWRITE_LINE_BREAKPOINT | 
|  | { | 
|  | UINT8 breakConditionBefore : 2; | 
|  | UINT8 breakConditionAfter : 2; | 
|  | UINT8 isWhitespace : 1; | 
|  | UINT8 isSoftHyphen : 1; | 
|  | UINT8 padding : 2; | 
|  | } DWRITE_LINE_BREAKPOINT; | 
|  |  | 
|  | typedef struct DWRITE_TYPOGRAPHIC_FEATURES | 
|  | { | 
|  | DWRITE_FONT_FEATURE* features; | 
|  | UINT32 featureCount; | 
|  | } DWRITE_TYPOGRAPHIC_FEATURES; | 
|  |  | 
|  | typedef struct DWRITE_SHAPING_TEXT_PROPERTIES | 
|  | { | 
|  | UINT16 isShapedAlone : 1; | 
|  | UINT16 reserved1 : 1; | 
|  | UINT16 canBreakShapingAfter : 1; | 
|  | UINT16 reserved : 13; | 
|  | } DWRITE_SHAPING_TEXT_PROPERTIES; | 
|  |  | 
|  | typedef struct DWRITE_SHAPING_GLYPH_PROPERTIES | 
|  | { | 
|  | UINT16 justification : 4; | 
|  | UINT16 isClusterStart : 1; | 
|  | UINT16 isDiacritic : 1; | 
|  | UINT16 isZeroWidthSpace : 1; | 
|  | UINT16 reserved : 9; | 
|  | } DWRITE_SHAPING_GLYPH_PROPERTIES; | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(6d4865fe-0ab8-4d91-8f62-5dd6be34a3e0) | 
|  | ] | 
|  | interface IDWriteFontFileStream : IUnknown | 
|  | { | 
|  | HRESULT ReadFileFragment( | 
|  | void const **fragment_start, | 
|  | UINT64 offset, | 
|  | UINT64 fragment_size, | 
|  | void **fragment_context); | 
|  |  | 
|  | void ReleaseFileFragment(void *fragment_context); | 
|  | HRESULT GetFileSize(UINT64 *size); | 
|  | HRESULT GetLastWriteTime(UINT64 *last_writetime); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(727cad4e-d6af-4c9e-8a08-d695b11caa49) | 
|  | ] | 
|  | interface IDWriteFontFileLoader : IUnknown | 
|  | { | 
|  | HRESULT CreateStreamFromKey( | 
|  | void const *key, | 
|  | UINT32 key_size, | 
|  | IDWriteFontFileStream **stream); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(b2d9f3ec-c9fe-4a11-a2ec-d86208f7c0a2) | 
|  | ] | 
|  | interface IDWriteLocalFontFileLoader : IDWriteFontFileLoader | 
|  | { | 
|  | HRESULT GetFilePathLengthFromKey(void const *key, UINT32 key_size, UINT32 *length); | 
|  | HRESULT GetFilePathFromKey(void const *key, UINT32 key_size, WCHAR *path, UINT32 length); | 
|  | HRESULT GetLastWriteTimeFromKey(void const *key, UINT32 key_size, FILETIME *writetime); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(739d886a-cef5-47dc-8769-1a8b41bebbb0) | 
|  | ] | 
|  | interface IDWriteFontFile : IUnknown | 
|  | { | 
|  | HRESULT GetReferenceKey( | 
|  | void const **key, | 
|  | UINT32 *key_size); | 
|  |  | 
|  | HRESULT GetLoader(IDWriteFontFileLoader **loader); | 
|  |  | 
|  | HRESULT Analyze( | 
|  | BOOL *is_supported_fonttype, | 
|  | DWRITE_FONT_FILE_TYPE *file_type, | 
|  | DWRITE_FONT_FACE_TYPE *face_type, | 
|  | UINT32 *faces_num); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(72755049-5ff7-435d-8348-4be97cfa6c7c) | 
|  | ] | 
|  | interface IDWriteFontFileEnumerator : IUnknown | 
|  | { | 
|  | HRESULT MoveNext(BOOL *has_current_file); | 
|  | HRESULT GetCurrentFontFile(IDWriteFontFile **font_file); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(cca920e4-52f0-492b-bfa8-29c72ee0a468) | 
|  | ] | 
|  | interface IDWriteFontCollectionLoader : IUnknown | 
|  | { | 
|  | HRESULT CreateEnumeratorFromKey( | 
|  | IDWriteFactory* factory, | 
|  | void const* key, | 
|  | UINT32 key_size, | 
|  | IDWriteFontFileEnumerator **enumerator); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(08256209-099a-4b34-b86d-c22b110e7771) | 
|  | ] | 
|  | interface IDWriteLocalizedStrings : IUnknown | 
|  | { | 
|  | UINT32 GetCount(); | 
|  |  | 
|  | HRESULT FindLocaleName( | 
|  | WCHAR const *locale_name, | 
|  | UINT32 *index, | 
|  | BOOL *exists); | 
|  |  | 
|  | HRESULT GetLocaleNameLength(UINT32 index, UINT32 *length); | 
|  | HRESULT GetLocaleName(UINT32 index, WCHAR *locale_name, UINT32 size); | 
|  | HRESULT GetStringLength(UINT32 index, UINT32 *length); | 
|  | HRESULT GetString(UINT32 index, WCHAR *buffer, UINT32 size); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(2f0da53a-2add-47cd-82ee-d9ec34688e75) | 
|  | ] | 
|  | interface IDWriteRenderingParams : IUnknown | 
|  | { | 
|  | FLOAT GetGamma(); | 
|  | FLOAT GetEnhancedContrast(); | 
|  | FLOAT GetClearTypeLevel(); | 
|  | DWRITE_PIXEL_GEOMETRY GetPixelGeometry(); | 
|  | DWRITE_RENDERING_MODE GetRenderingMode(); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(5f49804d-7024-4d43-bfa9-d25984f53849) | 
|  | ] | 
|  | interface IDWriteFontFace : IUnknown | 
|  | { | 
|  | DWRITE_FONT_FACE_TYPE GetType(); | 
|  | HRESULT GetFiles(UINT32 *number_of_files, IDWriteFontFile **fontfiles); | 
|  | UINT32 GetIndex(); | 
|  | DWRITE_FONT_SIMULATIONS GetSimulations(); | 
|  | BOOL IsSymbolFont(); | 
|  | void GetMetrics(DWRITE_FONT_METRICS *metrics); | 
|  | UINT16 GetGlyphCount(); | 
|  |  | 
|  | HRESULT GetDesignGlyphMetrics( | 
|  | UINT16 const *glyph_indices, | 
|  | UINT32 glyph_count, | 
|  | DWRITE_GLYPH_METRICS *metrics, | 
|  | [defaultvalue(FALSE)] BOOL is_sideways); | 
|  |  | 
|  | HRESULT GetGlyphIndices( | 
|  | UINT32 const *codepoints, | 
|  | UINT32 count, | 
|  | UINT16 *glyph_indices); | 
|  |  | 
|  | HRESULT TryGetFontTable( | 
|  | UINT32 table_tag, | 
|  | const void **table_data, | 
|  | UINT32 *table_size, | 
|  | void **context, | 
|  | BOOL *exists); | 
|  |  | 
|  | void ReleaseFontTable(void *table_context); | 
|  |  | 
|  | HRESULT GetGlyphRunOutline( | 
|  | FLOAT emSize, | 
|  | UINT16 const *glyph_indices, | 
|  | FLOAT const* glyph_advances, | 
|  | DWRITE_GLYPH_OFFSET const *glyph_offsets, | 
|  | UINT32 glyph_count, | 
|  | BOOL is_sideways, | 
|  | BOOL is_rtl, | 
|  | IDWriteGeometrySink *geometrysink); | 
|  |  | 
|  | HRESULT GetRecommendedRenderingMode( | 
|  | FLOAT emSize, | 
|  | FLOAT pixels_per_dip, | 
|  | DWRITE_MEASURING_MODE mode, | 
|  | IDWriteRenderingParams* params, | 
|  | DWRITE_RENDERING_MODE* rendering_mode); | 
|  |  | 
|  | HRESULT GetGdiCompatibleMetrics( | 
|  | FLOAT emSize, | 
|  | FLOAT pixels_per_dip, | 
|  | DWRITE_MATRIX const *transform, | 
|  | DWRITE_FONT_METRICS *metrics); | 
|  |  | 
|  | HRESULT GetGdiCompatibleGlyphMetrics( | 
|  | FLOAT emSize, | 
|  | FLOAT pixels_per_dip, | 
|  | DWRITE_MATRIX const *transform, | 
|  | BOOL use_gdi_natural, | 
|  | UINT16 const *glyph_indices, | 
|  | UINT32 glyph_count, | 
|  | DWRITE_GLYPH_METRICS *metrics, | 
|  | [defaultvalue(FALSE)] BOOL is_sideways); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(acd16696-8c14-4f5d-877e-fe3fc1d32737) | 
|  | ] | 
|  | interface IDWriteFont : IUnknown | 
|  | { | 
|  | HRESULT GetFontFamily(IDWriteFontFamily **family); | 
|  | DWRITE_FONT_WEIGHT GetWeight(); | 
|  | DWRITE_FONT_STRETCH GetStretch(); | 
|  | DWRITE_FONT_STYLE GetStyle(); | 
|  | BOOL IsSymbolFont(); | 
|  |  | 
|  | HRESULT GetFaceNames(IDWriteLocalizedStrings **names); | 
|  | HRESULT GetInformationalStrings( | 
|  | DWRITE_INFORMATIONAL_STRING_ID stringid, | 
|  | IDWriteLocalizedStrings **strings, | 
|  | BOOL *exists); | 
|  |  | 
|  | DWRITE_FONT_SIMULATIONS GetSimulations(); | 
|  | void GetMetrics(DWRITE_FONT_METRICS *metrics); | 
|  | HRESULT HasCharacter(UINT32 value, BOOL *exists); | 
|  | HRESULT CreateFontFace(IDWriteFontFace **face); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(1a0d8438-1d97-4ec1-aef9-a2fb86ed6acb) | 
|  | ] | 
|  | interface IDWriteFontList : IUnknown | 
|  | { | 
|  | HRESULT GetFontCollection(IDWriteFontCollection **collection); | 
|  | UINT32 GetFontCount(); | 
|  | HRESULT GetFont(UINT32 index, IDWriteFont **font); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(da20d8ef-812a-4c43-9802-62ec4abd7add) | 
|  | ] | 
|  | interface IDWriteFontFamily : IDWriteFontList | 
|  | { | 
|  | HRESULT GetFamilyNames(IDWriteLocalizedStrings **names); | 
|  |  | 
|  | HRESULT GetFirstMatchingFont( | 
|  | DWRITE_FONT_WEIGHT weight, | 
|  | DWRITE_FONT_STRETCH stretch, | 
|  | DWRITE_FONT_STYLE style, | 
|  | IDWriteFont **font); | 
|  |  | 
|  | HRESULT GetMatchingFonts( | 
|  | DWRITE_FONT_WEIGHT weight, | 
|  | DWRITE_FONT_STRETCH stretch, | 
|  | DWRITE_FONT_STYLE style, | 
|  | IDWriteFontList **fonts); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(a84cee02-3eea-4eee-a827-87c1a02a0fcc) | 
|  | ] | 
|  | interface IDWriteFontCollection : IUnknown | 
|  | { | 
|  | UINT32 GetFontFamilyCount(); | 
|  | HRESULT GetFontFamily(UINT32 index, IDWriteFontFamily **family); | 
|  | HRESULT FindFamilyName(WCHAR const *name, UINT32 *index, BOOL *exists); | 
|  | HRESULT GetFontFromFontFace(IDWriteFontFace *face, IDWriteFont **font); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(eaf3a2da-ecf4-4d24-b644-b34f6842024b) | 
|  | ] | 
|  | interface IDWritePixelSnapping : IUnknown | 
|  | { | 
|  | HRESULT IsPixelSnappingDisabled( | 
|  | void *client_drawingcontext, | 
|  | BOOL *disabled); | 
|  |  | 
|  | HRESULT GetCurrentTransform( | 
|  | void *client_drawingcontext, | 
|  | DWRITE_MATRIX *transform); | 
|  |  | 
|  | HRESULT GetPixelsPerDip( | 
|  | void *client_drawingcontext, | 
|  | FLOAT *pixels_per_dip); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(ef8a8135-5cc6-45fe-8825-c5a0724eb819) | 
|  | ] | 
|  | interface IDWriteTextRenderer : IDWritePixelSnapping | 
|  | { | 
|  | HRESULT DrawGlyphRun( | 
|  | void* client_drawingcontext, | 
|  | FLOAT baselineOriginX, | 
|  | FLOAT baselineOriginY, | 
|  | DWRITE_MEASURING_MODE mode, | 
|  | DWRITE_GLYPH_RUN const *glyph_run, | 
|  | DWRITE_GLYPH_RUN_DESCRIPTION const *run_descr, | 
|  | IUnknown *drawing_effect); | 
|  |  | 
|  | HRESULT DrawUnderline( | 
|  | void *client_drawingcontext, | 
|  | FLOAT baselineOriginX, | 
|  | FLOAT baselineOriginY, | 
|  | DWRITE_UNDERLINE const* underline, | 
|  | IUnknown *drawing_effect); | 
|  |  | 
|  | HRESULT DrawStrikethrough( | 
|  | void *client_drawingcontext, | 
|  | FLOAT baselineOriginX, | 
|  | FLOAT baselineOriginY, | 
|  | DWRITE_STRIKETHROUGH const* strikethrough, | 
|  | IUnknown *drawing_effect); | 
|  |  | 
|  | HRESULT DrawInlineObject( | 
|  | void *client_drawingcontext, | 
|  | FLOAT originX, | 
|  | FLOAT originY, | 
|  | IDWriteInlineObject *object, | 
|  | BOOL is_sideways, | 
|  | BOOL is_rtl, | 
|  | IUnknown *drawing_effect); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(8339fde3-106f-47ab-8373-1c6295eb10b3) | 
|  | ] | 
|  | interface IDWriteInlineObject : IUnknown | 
|  | { | 
|  | HRESULT Draw( | 
|  | void* client_drawingontext, | 
|  | IDWriteTextRenderer* renderer, | 
|  | FLOAT originX, | 
|  | FLOAT originY, | 
|  | BOOL is_sideways, | 
|  | BOOL is_rtl, | 
|  | IUnknown *drawing_effect); | 
|  |  | 
|  | HRESULT GetMetrics(DWRITE_INLINE_OBJECT_METRICS *metrics); | 
|  | HRESULT GetOverhangMetrics(DWRITE_OVERHANG_METRICS *overhangs); | 
|  | HRESULT GetBreakConditions( | 
|  | DWRITE_BREAK_CONDITION* condition_before, | 
|  | DWRITE_BREAK_CONDITION* condition_after); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(9c906818-31d7-4fd3-a151-7c5e225db55a) | 
|  | ] | 
|  | interface IDWriteTextFormat : IUnknown | 
|  | { | 
|  | HRESULT SetTextAlignment(DWRITE_TEXT_ALIGNMENT alignment); | 
|  | HRESULT SetParagraphAlignment(DWRITE_PARAGRAPH_ALIGNMENT alignment); | 
|  | HRESULT SetWordWrapping(DWRITE_WORD_WRAPPING wrapping); | 
|  | HRESULT SetReadingDirection(DWRITE_READING_DIRECTION direction); | 
|  | HRESULT SetFlowDirection(DWRITE_FLOW_DIRECTION direction); | 
|  | HRESULT SetIncrementalTabStop(FLOAT tabstop); | 
|  | HRESULT SetTrimming(DWRITE_TRIMMING const *trimming, IDWriteInlineObject *trimming_sign); | 
|  | HRESULT SetLineSpacing(DWRITE_LINE_SPACING_METHOD spacing, FLOAT line_spacing, FLOAT baseline); | 
|  | DWRITE_TEXT_ALIGNMENT GetTextAlignment(); | 
|  | DWRITE_PARAGRAPH_ALIGNMENT GetParagraphAlignment(); | 
|  | DWRITE_WORD_WRAPPING GetWordWrapping(); | 
|  | DWRITE_READING_DIRECTION GetReadingDirection(); | 
|  | DWRITE_FLOW_DIRECTION GetFlowDirection(); | 
|  | FLOAT GetIncrementalTabStop(); | 
|  | HRESULT GetTrimming(DWRITE_TRIMMING *options, IDWriteInlineObject **trimming_sign); | 
|  |  | 
|  | HRESULT GetLineSpacing( | 
|  | DWRITE_LINE_SPACING_METHOD *method, | 
|  | FLOAT *spacing, | 
|  | FLOAT *baseline); | 
|  |  | 
|  | HRESULT GetFontCollection(IDWriteFontCollection **collection); | 
|  | UINT32 GetFontFamilyNameLength(); | 
|  | HRESULT GetFontFamilyName(WCHAR *name, UINT32 size); | 
|  | DWRITE_FONT_WEIGHT GetFontWeight(); | 
|  | DWRITE_FONT_STYLE GetFontStyle(); | 
|  | DWRITE_FONT_STRETCH GetFontStretch(); | 
|  | FLOAT GetFontSize(); | 
|  | UINT32 GetLocaleNameLength(); | 
|  | HRESULT GetLocaleName(WCHAR *name, UINT32 size); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(55f1112b-1dc2-4b3c-9541-f46894ed85b6) | 
|  | ] | 
|  | interface IDWriteTypography : IUnknown | 
|  | { | 
|  | HRESULT AddFontFeature(DWRITE_FONT_FEATURE feature); | 
|  | UINT32 GetFontFeatureCount(); | 
|  | HRESULT GetFontFeature(UINT32 index, DWRITE_FONT_FEATURE *feature); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(5e5a32a3-8dff-4773-9ff6-0696eab77267) | 
|  | ] | 
|  | interface IDWriteBitmapRenderTarget : IUnknown | 
|  | { | 
|  | HRESULT DrawGlyphRun( | 
|  | FLOAT baselineOriginX, | 
|  | FLOAT baselineOriginY, | 
|  | DWRITE_MEASURING_MODE measuring_mode, | 
|  | DWRITE_GLYPH_RUN const* glyph_run, | 
|  | IDWriteRenderingParams* params, | 
|  | COLORREF textColor, | 
|  | [defaultvalue(NULL)] RECT *blackbox_rect); | 
|  |  | 
|  | HDC GetMemoryDC(); | 
|  | FLOAT GetPixelsPerDip(); | 
|  | HRESULT SetPixelsPerDip(FLOAT pixels_per_dip); | 
|  | HRESULT GetCurrentTransform(DWRITE_MATRIX *transform); | 
|  | HRESULT SetCurrentTransform(DWRITE_MATRIX const *transform); | 
|  | HRESULT GetSize(SIZE *size); | 
|  | HRESULT Resize(UINT32 width, UINT32 height); | 
|  | } | 
|  |  | 
|  | cpp_quote("#ifndef _WINGDI_") | 
|  | /* already defined in wingdi.h but needed for WIDL */ | 
|  | #define LF_FACESIZE     32 | 
|  |  | 
|  | typedef struct tagLOGFONTW | 
|  | { | 
|  | LONG   lfHeight; | 
|  | LONG   lfWidth; | 
|  | LONG   lfEscapement; | 
|  | LONG   lfOrientation; | 
|  | LONG   lfWeight; | 
|  | BYTE   lfItalic; | 
|  | BYTE   lfUnderline; | 
|  | BYTE   lfStrikeOut; | 
|  | BYTE   lfCharSet; | 
|  | BYTE   lfOutPrecision; | 
|  | BYTE   lfClipPrecision; | 
|  | BYTE   lfQuality; | 
|  | BYTE   lfPitchAndFamily; | 
|  | WCHAR  lfFaceName[LF_FACESIZE]; | 
|  | } LOGFONTW, *PLOGFONTW, *LPLOGFONTW; | 
|  | cpp_quote("#endif /* _WINGDI_ */") | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(1edd9491-9853-4299-898f-6432983b6f3a) | 
|  | ] | 
|  | interface IDWriteGdiInterop : IUnknown | 
|  | { | 
|  | HRESULT CreateFontFromLOGFONT(LOGFONTW const *logfont, IDWriteFont **font); | 
|  | HRESULT ConvertFontToLOGFONT( | 
|  | IDWriteFont* font, | 
|  | LOGFONTW* logfont, | 
|  | BOOL *is_systemfont); | 
|  |  | 
|  | HRESULT ConvertFontFaceToLOGFONT(IDWriteFontFace* font, LOGFONTW* logfont); | 
|  | HRESULT CreateFontFaceFromHdc(HDC hdc, IDWriteFontFace **fontface); | 
|  | HRESULT CreateBitmapRenderTarget(HDC hdc, UINT32 width, UINT32 height, IDWriteBitmapRenderTarget **target); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(53737037-6d14-410b-9bfe-0b182bb70961) | 
|  | ] | 
|  | interface IDWriteTextLayout : IDWriteTextFormat | 
|  | { | 
|  | HRESULT SetMaxWidth(FLOAT maxWidth); | 
|  | HRESULT SetMaxHeight(FLOAT maxHeight); | 
|  | HRESULT SetFontCollection(IDWriteFontCollection* collection, DWRITE_TEXT_RANGE range); | 
|  | HRESULT SetFontFamilyName(WCHAR const *name, DWRITE_TEXT_RANGE range); | 
|  | HRESULT SetFontWeight(DWRITE_FONT_WEIGHT weight, DWRITE_TEXT_RANGE range); | 
|  | HRESULT SetFontStyle(DWRITE_FONT_STYLE style, DWRITE_TEXT_RANGE range); | 
|  | HRESULT SetFontStretch(DWRITE_FONT_STRETCH stretch, DWRITE_TEXT_RANGE range); | 
|  | HRESULT SetFontSize(FLOAT size, DWRITE_TEXT_RANGE range); | 
|  | HRESULT SetUnderline(BOOL underline, DWRITE_TEXT_RANGE range); | 
|  | HRESULT SetStrikethrough(BOOL strikethrough, DWRITE_TEXT_RANGE range); | 
|  | HRESULT SetDrawingEffect(IUnknown* effect, DWRITE_TEXT_RANGE range); | 
|  | HRESULT SetInlineObject(IDWriteInlineObject *object, DWRITE_TEXT_RANGE range); | 
|  | HRESULT SetTypography(IDWriteTypography* typography, DWRITE_TEXT_RANGE range); | 
|  | HRESULT SetLocaleName(WCHAR const* locale, DWRITE_TEXT_RANGE range); | 
|  |  | 
|  | FLOAT GetMaxWidth(); | 
|  | FLOAT GetMaxHeight(); | 
|  | HRESULT GetFontCollection( | 
|  | UINT32 pos, | 
|  | IDWriteFontCollection** collection, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetFontFamilyNameLength( | 
|  | UINT32 pos, | 
|  | UINT32* len, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetFontFamilyName( | 
|  | UINT32 position, | 
|  | WCHAR* name, | 
|  | UINT32 name_size, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetFontWeight( | 
|  | UINT32 position, | 
|  | DWRITE_FONT_WEIGHT *weight, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetFontStyle( | 
|  | UINT32 currentPosition, | 
|  | DWRITE_FONT_STYLE *style, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetFontStretch( | 
|  | UINT32 position, | 
|  | DWRITE_FONT_STRETCH *stretch, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetFontSize( | 
|  | UINT32 position, | 
|  | FLOAT *size, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetUnderline( | 
|  | UINT32 position, | 
|  | BOOL *has_underline, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetStrikethrough( | 
|  | UINT32 position, | 
|  | BOOL *has_strikethrough, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetDrawingEffect( | 
|  | UINT32 position, | 
|  | IUnknown **effect, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetInlineObject( | 
|  | UINT32 position, | 
|  | IDWriteInlineObject **object, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetTypography( | 
|  | UINT32 position, | 
|  | IDWriteTypography** typography, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetLocaleNameLength( | 
|  | UINT32 position, | 
|  | UINT32* length, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT GetLocaleName( | 
|  | UINT32 position, | 
|  | WCHAR* name, | 
|  | UINT32 name_size, | 
|  | [defaultvalue(NULL)] DWRITE_TEXT_RANGE *range); | 
|  |  | 
|  | HRESULT Draw( | 
|  | void *context, | 
|  | IDWriteTextRenderer* renderer, | 
|  | FLOAT originX, | 
|  | FLOAT originY); | 
|  |  | 
|  | HRESULT GetLineMetrics( | 
|  | DWRITE_LINE_METRICS *metrics, | 
|  | UINT32 max_count, | 
|  | UINT32 *actual_count); | 
|  |  | 
|  | HRESULT GetMetrics(DWRITE_TEXT_METRICS *metrics); | 
|  | HRESULT GetOverhangMetrics(DWRITE_OVERHANG_METRICS *overhangs); | 
|  | HRESULT GetClusterMetrics( | 
|  | DWRITE_CLUSTER_METRICS *metrics, | 
|  | UINT32 max_count, | 
|  | UINT32* act_count); | 
|  |  | 
|  | HRESULT DetermineMinWidth(FLOAT* min_width); | 
|  | HRESULT HitTestPoint( | 
|  | FLOAT pointX, | 
|  | FLOAT pointY, | 
|  | BOOL* is_trailinghit, | 
|  | BOOL* is_inside, | 
|  | DWRITE_HIT_TEST_METRICS *metrics); | 
|  |  | 
|  | HRESULT HitTestTextPosition( | 
|  | UINT32 textPosition, | 
|  | BOOL is_trailinghit, | 
|  | FLOAT* pointX, | 
|  | FLOAT* pointY, | 
|  | DWRITE_HIT_TEST_METRICS *metrics); | 
|  |  | 
|  | HRESULT HitTestTextRange( | 
|  | UINT32 textPosition, | 
|  | UINT32 textLength, | 
|  | FLOAT originX, | 
|  | FLOAT originY, | 
|  | DWRITE_HIT_TEST_METRICS *metrics, | 
|  | UINT32 max_metricscount, | 
|  | UINT32* actual_metricscount); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(14885cc9-bab0-4f90-b6ed-5c366a2cd03d) | 
|  | ] | 
|  | interface IDWriteNumberSubstitution : IUnknown | 
|  | { | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(688e1a58-5094-47c8-adc8-fbcea60ae92b) | 
|  | ] | 
|  | interface IDWriteTextAnalysisSource : IUnknown | 
|  | { | 
|  | HRESULT GetTextAtPosition( | 
|  | UINT32 position, | 
|  | WCHAR const** text, | 
|  | UINT32* text_len); | 
|  |  | 
|  | HRESULT GetTextBeforePosition( | 
|  | UINT32 position, | 
|  | WCHAR const** text, | 
|  | UINT32* text_len); | 
|  |  | 
|  | DWRITE_READING_DIRECTION GetParagraphReadingDirection(); | 
|  | HRESULT GetLocaleName( | 
|  | UINT32 position, | 
|  | UINT32* text_len, | 
|  | WCHAR const** locale); | 
|  |  | 
|  | HRESULT GetNumberSubstitution( | 
|  | UINT32 position, | 
|  | UINT32* text_len, | 
|  | IDWriteNumberSubstitution **substitution); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(5810cd44-0ca0-4701-b3fa-bec5182ae4f6) | 
|  | ] | 
|  | interface IDWriteTextAnalysisSink : IUnknown | 
|  | { | 
|  | HRESULT SetScriptAnalysis( | 
|  | UINT32 position, | 
|  | UINT32 length, | 
|  | DWRITE_SCRIPT_ANALYSIS const* scriptanalysis); | 
|  |  | 
|  | HRESULT SetLineBreakpoints( | 
|  | UINT32 position, | 
|  | UINT32 length, | 
|  | DWRITE_LINE_BREAKPOINT const* breakpoints); | 
|  |  | 
|  | HRESULT SetBidiLevel( | 
|  | UINT32 position, | 
|  | UINT32 length, | 
|  | UINT8 explicitLevel, | 
|  | UINT8 resolvedLevel); | 
|  |  | 
|  | HRESULT SetNumberSubstitution( | 
|  | UINT32 position, | 
|  | UINT32 length, | 
|  | IDWriteNumberSubstitution* substitution); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(b7e6163e-7f46-43b4-84b3-e4e6249c365d) | 
|  | ] | 
|  | interface IDWriteTextAnalyzer : IUnknown | 
|  | { | 
|  | HRESULT AnalyzeScript( | 
|  | IDWriteTextAnalysisSource* source, | 
|  | UINT32 position, | 
|  | UINT32 length, | 
|  | IDWriteTextAnalysisSink* sink); | 
|  |  | 
|  | HRESULT AnalyzeBidi( | 
|  | IDWriteTextAnalysisSource* source, | 
|  | UINT32 position, | 
|  | UINT32 length, | 
|  | IDWriteTextAnalysisSink* sink); | 
|  |  | 
|  | HRESULT AnalyzeNumberSubstitution( | 
|  | IDWriteTextAnalysisSource* source, | 
|  | UINT32 position, | 
|  | UINT32 length, | 
|  | IDWriteTextAnalysisSink* sink); | 
|  |  | 
|  | HRESULT AnalyzeLineBreakpoints( | 
|  | IDWriteTextAnalysisSource* source, | 
|  | UINT32 position, | 
|  | UINT32 length, | 
|  | IDWriteTextAnalysisSink* sink); | 
|  |  | 
|  | HRESULT GetGlyphs( | 
|  | WCHAR const* text, | 
|  | UINT32 length, | 
|  | IDWriteFontFace* font_face, | 
|  | BOOL is_sideways, | 
|  | BOOL is_rtl, | 
|  | DWRITE_SCRIPT_ANALYSIS const* analysis, | 
|  | WCHAR const* locale, | 
|  | IDWriteNumberSubstitution* substitution, | 
|  | DWRITE_TYPOGRAPHIC_FEATURES const** features, | 
|  | UINT32 const* feature_range_len, | 
|  | UINT32 feature_ranges, | 
|  | UINT32 max_glyph_count, | 
|  | UINT16* clustermap, | 
|  | DWRITE_SHAPING_TEXT_PROPERTIES* text_props, | 
|  | UINT16* glyph_indices, | 
|  | DWRITE_SHAPING_GLYPH_PROPERTIES* glyph_props, | 
|  | UINT32* actual_glyph_count); | 
|  |  | 
|  | HRESULT GetGlyphPlacements( | 
|  | WCHAR const* text, | 
|  | UINT16 const* clustermap, | 
|  | DWRITE_SHAPING_TEXT_PROPERTIES* props, | 
|  | UINT32 text_len, | 
|  | UINT16 const* glyph_indices, | 
|  | DWRITE_SHAPING_GLYPH_PROPERTIES const* glyph_props, | 
|  | UINT32 glyph_count, | 
|  | IDWriteFontFace * font_face, | 
|  | FLOAT fontEmSize, | 
|  | BOOL is_sideways, | 
|  | BOOL is_rtl, | 
|  | DWRITE_SCRIPT_ANALYSIS const* analysis, | 
|  | WCHAR const* locale, | 
|  | DWRITE_TYPOGRAPHIC_FEATURES const** features, | 
|  | UINT32 const* feature_range_len, | 
|  | UINT32 feature_ranges, | 
|  | FLOAT* glyph_advances, | 
|  | DWRITE_GLYPH_OFFSET* glyph_offsets); | 
|  |  | 
|  | HRESULT GetGdiCompatibleGlyphPlacements( | 
|  | WCHAR const* text, | 
|  | UINT16 const* clustermap, | 
|  | DWRITE_SHAPING_TEXT_PROPERTIES* props, | 
|  | UINT32 text_len, | 
|  | UINT16 const* glyph_indices, | 
|  | DWRITE_SHAPING_GLYPH_PROPERTIES const* glyph_props, | 
|  | UINT32 glyph_count, | 
|  | IDWriteFontFace * font_face, | 
|  | FLOAT fontEmSize, | 
|  | FLOAT pixels_per_dip, | 
|  | DWRITE_MATRIX const* transform, | 
|  | BOOL use_gdi_natural, | 
|  | BOOL is_sideways, | 
|  | BOOL is_rtl, | 
|  | DWRITE_SCRIPT_ANALYSIS const* analysis, | 
|  | WCHAR const* locale, | 
|  | DWRITE_TYPOGRAPHIC_FEATURES const** features, | 
|  | UINT32 const* feature_range_lengths, | 
|  | UINT32 feature_ranges, | 
|  | FLOAT* glyph_advances, | 
|  | DWRITE_GLYPH_OFFSET* glyph_offsets); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(7d97dbf7-e085-42d4-81e3-6a883bded118) | 
|  | ] | 
|  | interface IDWriteGlyphRunAnalysis : IUnknown | 
|  | { | 
|  | HRESULT GetAlphaTextureBounds(DWRITE_TEXTURE_TYPE type, RECT* bounds); | 
|  | HRESULT CreateAlphaTexture(DWRITE_TEXTURE_TYPE type, RECT const* bounds, BYTE* alphaValues, UINT32 bufferSize); | 
|  | HRESULT GetAlphaBlendParams( | 
|  | IDWriteRenderingParams* renderingParams, | 
|  | FLOAT* blendGamma, | 
|  | FLOAT* blendEnhancedContrast, | 
|  | FLOAT* blendClearTypeLevel); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(b859ee5a-d838-4b5b-a2e8-1adc7d93db48) | 
|  | ] | 
|  | interface IDWriteFactory : IUnknown | 
|  | { | 
|  | HRESULT GetSystemFontCollection(IDWriteFontCollection **collection, | 
|  | [defaultvalue(FALSE)] BOOL check_for_updates); | 
|  |  | 
|  | HRESULT CreateCustomFontCollection( | 
|  | IDWriteFontCollectionLoader *loader, | 
|  | void const *key, | 
|  | UINT32 key_size, | 
|  | IDWriteFontCollection **collection); | 
|  |  | 
|  | HRESULT RegisterFontCollectionLoader(IDWriteFontCollectionLoader *loader); | 
|  |  | 
|  | HRESULT UnregisterFontCollectionLoader(IDWriteFontCollectionLoader *loader); | 
|  |  | 
|  | HRESULT CreateFontFileReference( | 
|  | WCHAR const *path, | 
|  | FILETIME const *writetime, | 
|  | IDWriteFontFile **font_file); | 
|  |  | 
|  | HRESULT CreateCustomFontFileReference( | 
|  | void const *reference_key, | 
|  | UINT32 key_size, | 
|  | IDWriteFontFileLoader *loader, | 
|  | IDWriteFontFile **font_file); | 
|  |  | 
|  | HRESULT CreateFontFace( | 
|  | DWRITE_FONT_FACE_TYPE facetype, | 
|  | UINT32 files_number, | 
|  | IDWriteFontFile* const* font_files, | 
|  | UINT32 index, | 
|  | DWRITE_FONT_SIMULATIONS sim_flags, | 
|  | IDWriteFontFace **font_face); | 
|  |  | 
|  | HRESULT CreateRenderingParams(IDWriteRenderingParams **params); | 
|  |  | 
|  | HRESULT CreateMonitorRenderingParams( | 
|  | HMONITOR monitor, | 
|  | IDWriteRenderingParams **params); | 
|  |  | 
|  | HRESULT CreateCustomRenderingParams( | 
|  | FLOAT gamma, | 
|  | FLOAT enhancedContrast, | 
|  | FLOAT cleartype_level, | 
|  | DWRITE_PIXEL_GEOMETRY geometry, | 
|  | DWRITE_RENDERING_MODE mode, | 
|  | IDWriteRenderingParams **params); | 
|  |  | 
|  | HRESULT RegisterFontFileLoader(IDWriteFontFileLoader *loader); | 
|  |  | 
|  | HRESULT UnregisterFontFileLoader(IDWriteFontFileLoader *loader); | 
|  |  | 
|  | HRESULT CreateTextFormat( | 
|  | WCHAR const* family_name, | 
|  | IDWriteFontCollection *collection, | 
|  | DWRITE_FONT_WEIGHT weight, | 
|  | DWRITE_FONT_STYLE style, | 
|  | DWRITE_FONT_STRETCH stretch, | 
|  | FLOAT size, | 
|  | WCHAR const *locale, | 
|  | IDWriteTextFormat **format); | 
|  |  | 
|  | HRESULT CreateTypography(IDWriteTypography **typography); | 
|  |  | 
|  | HRESULT GetGdiInterop(IDWriteGdiInterop **gdi_interop); | 
|  |  | 
|  | HRESULT CreateTextLayout( | 
|  | WCHAR const* string, | 
|  | UINT32 len, | 
|  | IDWriteTextFormat *format, | 
|  | FLOAT max_width, | 
|  | FLOAT max_height, | 
|  | IDWriteTextLayout **layout); | 
|  |  | 
|  | HRESULT CreateGdiCompatibleTextLayout( | 
|  | WCHAR const* string, | 
|  | UINT32 len, | 
|  | IDWriteTextFormat *format, | 
|  | FLOAT layout_width, | 
|  | FLOAT layout_height, | 
|  | FLOAT pixels_per_dip, | 
|  | DWRITE_MATRIX const* transform, | 
|  | BOOL use_gdi_natural, | 
|  | IDWriteTextLayout **layout); | 
|  |  | 
|  | HRESULT CreateEllipsisTrimmingSign( | 
|  | IDWriteTextFormat *format, | 
|  | IDWriteInlineObject **trimming_sign); | 
|  |  | 
|  | HRESULT CreateTextAnalyzer(IDWriteTextAnalyzer **analyzer); | 
|  |  | 
|  | HRESULT CreateNumberSubstitution( | 
|  | DWRITE_NUMBER_SUBSTITUTION_METHOD method, | 
|  | WCHAR const* locale, | 
|  | BOOL ignore_user_override, | 
|  | IDWriteNumberSubstitution **substitution); | 
|  |  | 
|  | HRESULT CreateGlyphRunAnalysis( | 
|  | DWRITE_GLYPH_RUN const *glyph_run, | 
|  | FLOAT pixels_per_dip, | 
|  | DWRITE_MATRIX const* transform, | 
|  | DWRITE_RENDERING_MODE rendering_mode, | 
|  | DWRITE_MEASURING_MODE measuring_mode, | 
|  | FLOAT baseline_x, | 
|  | FLOAT baseline_y, | 
|  | IDWriteGlyphRunAnalysis **analysis); | 
|  | } | 
|  |  | 
|  | cpp_quote("HRESULT WINAPI DWriteCreateFactory(DWRITE_FACTORY_TYPE,REFIID,IUnknown**);") | 
|  |  | 
|  | /* error codes */ | 
|  | cpp_quote("#define FACILITY_DWRITE 0x898") | 
|  | cpp_quote("#define DWRITE_ERR_BASE 0x5000") | 
|  | cpp_quote("#define MAKE_DWRITE_HR(severity, code) MAKE_HRESULT(severity, FACILITY_DWRITE, (DWRITE_ERR_BASE + code))") | 
|  | cpp_quote("#define MAKE_DWRITE_HR_ERR(code) MAKE_DWRITE_HR(SEVERITY_ERROR, code)") |