1 // Licensed under the Apache License, Version 2.0 2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 4 // All files in the project carrying such notice may not be copied, modified, or distributed 5 // except according to those terms. 6 //! Mappings for the content of dwrite_1.h 7 use shared::basetsd::{INT16, INT32, UINT16, UINT32, UINT8}; 8 use shared::minwindef::{BOOL, FLOAT}; 9 use um::dcommon::DWRITE_MEASURING_MODE; 10 use um::dwrite::{ 11 DWRITE_GLYPH_OFFSET, DWRITE_MATRIX, DWRITE_PIXEL_GEOMETRY, DWRITE_RENDERING_MODE, 12 DWRITE_SCRIPT_ANALYSIS, DWRITE_SHAPING_GLYPH_PROPERTIES, DWRITE_TEXT_RANGE, 13 IDWriteBitmapRenderTarget, IDWriteBitmapRenderTargetVtbl, IDWriteFactory, IDWriteFactoryVtbl, 14 IDWriteFont, IDWriteFontCollection, IDWriteFontFace, IDWriteFontFaceVtbl, IDWriteFontVtbl, 15 IDWriteRenderingParams, IDWriteRenderingParamsVtbl, IDWriteTextAnalysisSink, 16 IDWriteTextAnalysisSinkVtbl, IDWriteTextAnalysisSource, IDWriteTextAnalysisSourceVtbl, 17 IDWriteTextAnalyzer, IDWriteTextAnalyzerVtbl, IDWriteTextLayout, IDWriteTextLayoutVtbl, 18 }; 19 use um::winnt::{HRESULT, WCHAR}; 20 ENUM!{enum DWRITE_PANOSE_FAMILY { 21 DWRITE_PANOSE_FAMILY_ANY = 0x0, // 0 22 DWRITE_PANOSE_FAMILY_NO_FIT = 0x1, // 1 23 DWRITE_PANOSE_FAMILY_TEXT_DISPLAY = 0x2, // 2 24 DWRITE_PANOSE_FAMILY_SCRIPT = 0x3, // 3 25 DWRITE_PANOSE_FAMILY_DECORATIVE = 0x4, // 4 26 DWRITE_PANOSE_FAMILY_SYMBOL = 0x5, // 5 27 DWRITE_PANOSE_FAMILY_PICTORIAL = 0x5, // 5 28 }} 29 ENUM!{enum DWRITE_PANOSE_SERIF_STYLE { 30 DWRITE_PANOSE_SERIF_STYLE_ANY = 0x0, // 0 31 DWRITE_PANOSE_SERIF_STYLE_NO_FIT = 0x1, // 1 32 DWRITE_PANOSE_SERIF_STYLE_COVE = 0x2, // 2 33 DWRITE_PANOSE_SERIF_STYLE_OBTUSE_COVE = 0x3, // 3 34 DWRITE_PANOSE_SERIF_STYLE_SQUARE_COVE = 0x4, // 4 35 DWRITE_PANOSE_SERIF_STYLE_OBTUSE_SQUARE_COVE = 0x5, // 5 36 DWRITE_PANOSE_SERIF_STYLE_SQUARE = 0x6, // 6 37 DWRITE_PANOSE_SERIF_STYLE_THIN = 0x7, // 7 38 DWRITE_PANOSE_SERIF_STYLE_OVAL = 0x8, // 8 39 DWRITE_PANOSE_SERIF_STYLE_EXAGGERATED = 0x9, // 9 40 DWRITE_PANOSE_SERIF_STYLE_TRIANGLE = 0xA, // 10 41 DWRITE_PANOSE_SERIF_STYLE_NORMAL_SANS = 0xB, // 11 42 DWRITE_PANOSE_SERIF_STYLE_OBTUSE_SANS = 0xC, // 12 43 DWRITE_PANOSE_SERIF_STYLE_PERPENDICULAR_SANS = 0xD, // 13 44 DWRITE_PANOSE_SERIF_STYLE_FLARED = 0xE, // 14 45 DWRITE_PANOSE_SERIF_STYLE_ROUNDED = 0xF, // 15 46 DWRITE_PANOSE_SERIF_STYLE_SCRIPT = 0x10, // 16 47 DWRITE_PANOSE_SERIF_STYLE_PERP_SANS = 0xD, // 13 48 DWRITE_PANOSE_SERIF_STYLE_BONE = 0x8, // 8 49 }} 50 ENUM!{enum DWRITE_PANOSE_WEIGHT { 51 DWRITE_PANOSE_WEIGHT_ANY = 0x0, // 0 52 DWRITE_PANOSE_WEIGHT_NO_FIT = 0x1, // 1 53 DWRITE_PANOSE_WEIGHT_VERY_LIGHT = 0x2, // 2 54 DWRITE_PANOSE_WEIGHT_LIGHT = 0x3, // 3 55 DWRITE_PANOSE_WEIGHT_THIN = 0x4, // 4 56 DWRITE_PANOSE_WEIGHT_BOOK = 0x5, // 5 57 DWRITE_PANOSE_WEIGHT_MEDIUM = 0x6, // 6 58 DWRITE_PANOSE_WEIGHT_DEMI = 0x7, // 7 59 DWRITE_PANOSE_WEIGHT_BOLD = 0x8, // 8 60 DWRITE_PANOSE_WEIGHT_HEAVY = 0x9, // 9 61 DWRITE_PANOSE_WEIGHT_BLACK = 0xA, // 10 62 DWRITE_PANOSE_WEIGHT_EXTRA_BLACK = 0xB, // 11 63 DWRITE_PANOSE_WEIGHT_NORD = 0xB, // 11 64 }} 65 ENUM!{enum DWRITE_PANOSE_PROPORTION { 66 DWRITE_PANOSE_PROPORTION_ANY = 0x0, // 0 67 DWRITE_PANOSE_PROPORTION_NO_FIT = 0x1, // 1 68 DWRITE_PANOSE_PROPORTION_OLD_STYLE = 0x2, // 2 69 DWRITE_PANOSE_PROPORTION_MODERN = 0x3, // 3 70 DWRITE_PANOSE_PROPORTION_EVEN_WIDTH = 0x4, // 4 71 DWRITE_PANOSE_PROPORTION_EXPANDED = 0x5, // 5 72 DWRITE_PANOSE_PROPORTION_CONDENSED = 0x6, // 6 73 DWRITE_PANOSE_PROPORTION_VERY_EXPANDED = 0x7, // 7 74 DWRITE_PANOSE_PROPORTION_VERY_CONDENSED = 0x8, // 8 75 DWRITE_PANOSE_PROPORTION_MONOSPACED = 0x9, // 9 76 }} 77 ENUM!{enum DWRITE_PANOSE_CONTRAST { 78 DWRITE_PANOSE_CONTRAST_ANY = 0x0, // 0 79 DWRITE_PANOSE_CONTRAST_NO_FIT = 0x1, // 1 80 DWRITE_PANOSE_CONTRAST_NONE = 0x2, // 2 81 DWRITE_PANOSE_CONTRAST_VERY_LOW = 0x3, // 3 82 DWRITE_PANOSE_CONTRAST_LOW = 0x4, // 4 83 DWRITE_PANOSE_CONTRAST_MEDIUM_LOW = 0x5, // 5 84 DWRITE_PANOSE_CONTRAST_MEDIUM = 0x6, // 6 85 DWRITE_PANOSE_CONTRAST_MEDIUM_HIGH = 0x7, // 7 86 DWRITE_PANOSE_CONTRAST_HIGH = 0x8, // 8 87 DWRITE_PANOSE_CONTRAST_VERY_HIGH = 0x9, // 9 88 DWRITE_PANOSE_CONTRAST_HORIZONTAL_LOW = 0xA, // 10 89 DWRITE_PANOSE_CONTRAST_HORIZONTAL_MEDIUM = 0xB, // 11 90 DWRITE_PANOSE_CONTRAST_HORIZONTAL_HIGH = 0xC, // 12 91 DWRITE_PANOSE_CONTRAST_BROKEN = 0xD, // 13 92 }} 93 ENUM!{enum DWRITE_PANOSE_STROKE_VARIATION { 94 DWRITE_PANOSE_STROKE_VARIATION_ANY = 0x0, // 0 95 DWRITE_PANOSE_STROKE_VARIATION_NO_FIT = 0x1, // 1 96 DWRITE_PANOSE_STROKE_VARIATION_NO_VARIATION = 0x2, // 2 97 DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_DIAGONAL = 0x3, // 3 98 DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_TRANSITIONAL = 0x4, // 4 99 DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_VERTICAL = 0x5, // 5 100 DWRITE_PANOSE_STROKE_VARIATION_GRADUAL_HORIZONTAL = 0x6, // 6 101 DWRITE_PANOSE_STROKE_VARIATION_RAPID_VERTICAL = 0x7, // 7 102 DWRITE_PANOSE_STROKE_VARIATION_RAPID_HORIZONTAL = 0x8, // 8 103 DWRITE_PANOSE_STROKE_VARIATION_INSTANT_VERTICAL = 0x9, // 9 104 DWRITE_PANOSE_STROKE_VARIATION_INSTANT_HORIZONTAL = 0xA, // 10 105 }} 106 ENUM!{enum DWRITE_PANOSE_ARM_STYLE { 107 DWRITE_PANOSE_ARM_STYLE_ANY = 0x0, // 0 108 DWRITE_PANOSE_ARM_STYLE_NO_FIT = 0x1, // 1 109 DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORIZONTAL = 0x2, // 2 110 DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_WEDGE = 0x3, // 3 111 DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERTICAL = 0x4, // 4 112 DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_SINGLE_SERIF = 0x5, // 5 113 DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_DOUBLE_SERIF = 0x6, // 6 114 DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_HORIZONTAL = 0x7, // 7 115 DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_WEDGE = 0x8, // 8 116 DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_VERTICAL = 0x9, // 9 117 DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_SINGLE_SERIF = 0xA, // 10 118 DWRITE_PANOSE_ARM_STYLE_NONSTRAIGHT_ARMS_DOUBLE_SERIF = 0xB, // 11 119 DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_HORZ = 0x2, // 2 120 DWRITE_PANOSE_ARM_STYLE_STRAIGHT_ARMS_VERT = 0x4, // 4 121 DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_HORZ = 0x7, // 7 122 DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_WEDGE = 0x8, // 8 123 DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_VERT = 0x9, // 9 124 DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_SINGLE_SERIF = 0xA, // 10 125 DWRITE_PANOSE_ARM_STYLE_BENT_ARMS_DOUBLE_SERIF = 0xB, // 11 126 }} 127 ENUM!{enum DWRITE_PANOSE_LETTERFORM { 128 DWRITE_PANOSE_LETTERFORM_ANY = 0x0, // 0 129 DWRITE_PANOSE_LETTERFORM_NO_FIT = 0x1, // 1 130 DWRITE_PANOSE_LETTERFORM_NORMAL_CONTACT = 0x2, // 2 131 DWRITE_PANOSE_LETTERFORM_NORMAL_WEIGHTED = 0x3, // 3 132 DWRITE_PANOSE_LETTERFORM_NORMAL_BOXED = 0x4, // 4 133 DWRITE_PANOSE_LETTERFORM_NORMAL_FLATTENED = 0x5, // 5 134 DWRITE_PANOSE_LETTERFORM_NORMAL_ROUNDED = 0x6, // 6 135 DWRITE_PANOSE_LETTERFORM_NORMAL_OFF_CENTER = 0x7, // 7 136 DWRITE_PANOSE_LETTERFORM_NORMAL_SQUARE = 0x8, // 8 137 DWRITE_PANOSE_LETTERFORM_OBLIQUE_CONTACT = 0x9, // 9 138 DWRITE_PANOSE_LETTERFORM_OBLIQUE_WEIGHTED = 0xA, // 10 139 DWRITE_PANOSE_LETTERFORM_OBLIQUE_BOXED = 0xB, // 11 140 DWRITE_PANOSE_LETTERFORM_OBLIQUE_FLATTENED = 0xC, // 12 141 DWRITE_PANOSE_LETTERFORM_OBLIQUE_ROUNDED = 0xD, // 13 142 DWRITE_PANOSE_LETTERFORM_OBLIQUE_OFF_CENTER = 0xE, // 14 143 DWRITE_PANOSE_LETTERFORM_OBLIQUE_SQUARE = 0xF, // 15 144 }} 145 ENUM!{enum DWRITE_PANOSE_MIDLINE { 146 DWRITE_PANOSE_MIDLINE_ANY = 0x0, // 0 147 DWRITE_PANOSE_MIDLINE_NO_FIT = 0x1, // 1 148 DWRITE_PANOSE_MIDLINE_STANDARD_TRIMMED = 0x2, // 2 149 DWRITE_PANOSE_MIDLINE_STANDARD_POINTED = 0x3, // 3 150 DWRITE_PANOSE_MIDLINE_STANDARD_SERIFED = 0x4, // 4 151 DWRITE_PANOSE_MIDLINE_HIGH_TRIMMED = 0x5, // 5 152 DWRITE_PANOSE_MIDLINE_HIGH_POINTED = 0x6, // 6 153 DWRITE_PANOSE_MIDLINE_HIGH_SERIFED = 0x7, // 7 154 DWRITE_PANOSE_MIDLINE_CONSTANT_TRIMMED = 0x8, // 8 155 DWRITE_PANOSE_MIDLINE_CONSTANT_POINTED = 0x9, // 9 156 DWRITE_PANOSE_MIDLINE_CONSTANT_SERIFED = 0xA, // 10 157 DWRITE_PANOSE_MIDLINE_LOW_TRIMMED = 0xB, // 11 158 DWRITE_PANOSE_MIDLINE_LOW_POINTED = 0xC, // 12 159 DWRITE_PANOSE_MIDLINE_LOW_SERIFED = 0xD, // 13 160 }} 161 ENUM!{enum DWRITE_PANOSE_XHEIGHT { 162 DWRITE_PANOSE_XHEIGHT_ANY = 0x0, // 0 163 DWRITE_PANOSE_XHEIGHT_NO_FIT = 0x1, // 1 164 DWRITE_PANOSE_XHEIGHT_CONSTANT_SMALL = 0x2, // 2 165 DWRITE_PANOSE_XHEIGHT_CONSTANT_STANDARD = 0x3, // 3 166 DWRITE_PANOSE_XHEIGHT_CONSTANT_LARGE = 0x4, // 4 167 DWRITE_PANOSE_XHEIGHT_DUCKING_SMALL = 0x5, // 5 168 DWRITE_PANOSE_XHEIGHT_DUCKING_STANDARD = 0x6, // 6 169 DWRITE_PANOSE_XHEIGHT_DUCKING_LARGE = 0x7, // 7 170 DWRITE_PANOSE_XHEIGHT_CONSTANT_STD = 0x3, // 3 171 DWRITE_PANOSE_XHEIGHT_DUCKING_STD = 0x6, // 6 172 }} 173 ENUM!{enum DWRITE_PANOSE_TOOL_KIND { 174 DWRITE_PANOSE_TOOL_KIND_ANY = 0x0, // 0 175 DWRITE_PANOSE_TOOL_KIND_NO_FIT = 0x1, // 1 176 DWRITE_PANOSE_TOOL_KIND_FLAT_NIB = 0x2, // 2 177 DWRITE_PANOSE_TOOL_KIND_PRESSURE_POINT = 0x3, // 3 178 DWRITE_PANOSE_TOOL_KIND_ENGRAVED = 0x4, // 4 179 DWRITE_PANOSE_TOOL_KIND_BALL = 0x5, // 5 180 DWRITE_PANOSE_TOOL_KIND_BRUSH = 0x6, // 6 181 DWRITE_PANOSE_TOOL_KIND_ROUGH = 0x7, // 7 182 DWRITE_PANOSE_TOOL_KIND_FELT_PEN_BRUSH_TIP = 0x8, // 8 183 DWRITE_PANOSE_TOOL_KIND_WILD_BRUSH = 0x9, // 9 184 }} 185 ENUM!{enum DWRITE_PANOSE_SPACING { 186 DWRITE_PANOSE_SPACING_ANY = 0x0, // 0 187 DWRITE_PANOSE_SPACING_NO_FIT = 0x1, // 1 188 DWRITE_PANOSE_SPACING_PROPORTIONAL_SPACED = 0x2, // 2 189 DWRITE_PANOSE_SPACING_MONOSPACED = 0x3, // 3 190 }} 191 ENUM!{enum DWRITE_PANOSE_ASPECT_RATIO { 192 DWRITE_PANOSE_ASPECT_RATIO_ANY = 0x0, // 0 193 DWRITE_PANOSE_ASPECT_RATIO_NO_FIT = 0x1, // 1 194 DWRITE_PANOSE_ASPECT_RATIO_VERY_CONDENSED = 0x2, // 2 195 DWRITE_PANOSE_ASPECT_RATIO_CONDENSED = 0x3, // 3 196 DWRITE_PANOSE_ASPECT_RATIO_NORMAL = 0x4, // 4 197 DWRITE_PANOSE_ASPECT_RATIO_EXPANDED = 0x5, // 5 198 DWRITE_PANOSE_ASPECT_RATIO_VERY_EXPANDED = 0x6, // 6 199 }} 200 ENUM!{enum DWRITE_PANOSE_SCRIPT_TOPOLOGY { 201 DWRITE_PANOSE_SCRIPT_TOPOLOGY_ANY = 0x0, // 0 202 DWRITE_PANOSE_SCRIPT_TOPOLOGY_NO_FIT = 0x1, // 1 203 DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_DISCONNECTED = 0x2, // 2 204 DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_TRAILING = 0x3, // 3 205 DWRITE_PANOSE_SCRIPT_TOPOLOGY_ROMAN_CONNECTED = 0x4, // 4 206 DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_DISCONNECTED = 0x5, // 5 207 DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_TRAILING = 0x6, // 6 208 DWRITE_PANOSE_SCRIPT_TOPOLOGY_CURSIVE_CONNECTED = 0x7, // 7 209 DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_DISCONNECTED = 0x8, // 8 210 DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_TRAILING = 0x9, // 9 211 DWRITE_PANOSE_SCRIPT_TOPOLOGY_BLACKLETTER_CONNECTED = 0xA, // 10 212 }} 213 ENUM!{enum DWRITE_PANOSE_SCRIPT_FORM { 214 DWRITE_PANOSE_SCRIPT_FORM_ANY = 0x0, // 0 215 DWRITE_PANOSE_SCRIPT_FORM_NO_FIT = 0x1, // 1 216 DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_NO_WRAPPING = 0x2, // 2 217 DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_SOME_WRAPPING = 0x3, // 3 218 DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_MORE_WRAPPING = 0x4, // 4 219 DWRITE_PANOSE_SCRIPT_FORM_UPRIGHT_EXTREME_WRAPPING = 0x5, // 5 220 DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_NO_WRAPPING = 0x6, // 6 221 DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_SOME_WRAPPING = 0x7, // 7 222 DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_MORE_WRAPPING = 0x8, // 8 223 DWRITE_PANOSE_SCRIPT_FORM_OBLIQUE_EXTREME_WRAPPING = 0x9, // 9 224 DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_NO_WRAPPING = 0xA, // 10 225 DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_SOME_WRAPPING = 0xB, // 11 226 DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_MORE_WRAPPING = 0xC, // 12 227 DWRITE_PANOSE_SCRIPT_FORM_EXAGGERATED_EXTREME_WRAPPING = 0xD, // 13 228 }} 229 ENUM!{enum DWRITE_PANOSE_FINIALS { 230 DWRITE_PANOSE_FINIALS_ANY = 0x0, // 0 231 DWRITE_PANOSE_FINIALS_NO_FIT = 0x1, // 1 232 DWRITE_PANOSE_FINIALS_NONE_NO_LOOPS = 0x2, // 2 233 DWRITE_PANOSE_FINIALS_NONE_CLOSED_LOOPS = 0x3, // 3 234 DWRITE_PANOSE_FINIALS_NONE_OPEN_LOOPS = 0x4, // 4 235 DWRITE_PANOSE_FINIALS_SHARP_NO_LOOPS = 0x5, // 5 236 DWRITE_PANOSE_FINIALS_SHARP_CLOSED_LOOPS = 0x6, // 6 237 DWRITE_PANOSE_FINIALS_SHARP_OPEN_LOOPS = 0x7, // 7 238 DWRITE_PANOSE_FINIALS_TAPERED_NO_LOOPS = 0x8, // 8 239 DWRITE_PANOSE_FINIALS_TAPERED_CLOSED_LOOPS = 0x9, // 9 240 DWRITE_PANOSE_FINIALS_TAPERED_OPEN_LOOPS = 0xA, // 10 241 DWRITE_PANOSE_FINIALS_ROUND_NO_LOOPS = 0xB, // 11 242 DWRITE_PANOSE_FINIALS_ROUND_CLOSED_LOOPS = 0xC, // 12 243 DWRITE_PANOSE_FINIALS_ROUND_OPEN_LOOPS = 0xD, // 13 244 }} 245 ENUM!{enum DWRITE_PANOSE_XASCENT { 246 DWRITE_PANOSE_XASCENT_ANY = 0x0, // 0 247 DWRITE_PANOSE_XASCENT_NO_FIT = 0x1, // 1 248 DWRITE_PANOSE_XASCENT_VERY_LOW = 0x2, // 2 249 DWRITE_PANOSE_XASCENT_LOW = 0x3, // 3 250 DWRITE_PANOSE_XASCENT_MEDIUM = 0x4, // 4 251 DWRITE_PANOSE_XASCENT_HIGH = 0x5, // 5 252 DWRITE_PANOSE_XASCENT_VERY_HIGH = 0x6, // 6 253 }} 254 ENUM!{enum DWRITE_PANOSE_DECORATIVE_CLASS { 255 DWRITE_PANOSE_DECORATIVE_CLASS_ANY = 0x0, // 0 256 DWRITE_PANOSE_DECORATIVE_CLASS_NO_FIT = 0x1, // 1 257 DWRITE_PANOSE_DECORATIVE_CLASS_DERIVATIVE = 0x2, // 2 258 DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_TOPOLOGY = 0x3, // 3 259 DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_ELEMENTS = 0x4, // 4 260 DWRITE_PANOSE_DECORATIVE_CLASS_NONSTANDARD_ASPECT = 0x5, // 5 261 DWRITE_PANOSE_DECORATIVE_CLASS_INITIALS = 0x6, // 6 262 DWRITE_PANOSE_DECORATIVE_CLASS_CARTOON = 0x7, // 7 263 DWRITE_PANOSE_DECORATIVE_CLASS_PICTURE_STEMS = 0x8, // 8 264 DWRITE_PANOSE_DECORATIVE_CLASS_ORNAMENTED = 0x9, // 9 265 DWRITE_PANOSE_DECORATIVE_CLASS_TEXT_AND_BACKGROUND = 0xA, // 10 266 DWRITE_PANOSE_DECORATIVE_CLASS_COLLAGE = 0xB, // 11 267 DWRITE_PANOSE_DECORATIVE_CLASS_MONTAGE = 0xC, // 12 268 }} 269 ENUM!{enum DWRITE_PANOSE_ASPECT { 270 DWRITE_PANOSE_ASPECT_ANY = 0x0, // 0 271 DWRITE_PANOSE_ASPECT_NO_FIT = 0x1, // 1 272 DWRITE_PANOSE_ASPECT_SUPER_CONDENSED = 0x2, // 2 273 DWRITE_PANOSE_ASPECT_VERY_CONDENSED = 0x3, // 3 274 DWRITE_PANOSE_ASPECT_CONDENSED = 0x4, // 4 275 DWRITE_PANOSE_ASPECT_NORMAL = 0x5, // 5 276 DWRITE_PANOSE_ASPECT_EXTENDED = 0x6, // 6 277 DWRITE_PANOSE_ASPECT_VERY_EXTENDED = 0x7, // 7 278 DWRITE_PANOSE_ASPECT_SUPER_EXTENDED = 0x8, // 8 279 DWRITE_PANOSE_ASPECT_MONOSPACED = 0x9, // 9 280 }} 281 ENUM!{enum DWRITE_PANOSE_FILL { 282 DWRITE_PANOSE_FILL_ANY = 0x0, // 0 283 DWRITE_PANOSE_FILL_NO_FIT = 0x1, // 1 284 DWRITE_PANOSE_FILL_STANDARD_SOLID_FILL = 0x2, // 2 285 DWRITE_PANOSE_FILL_NO_FILL = 0x3, // 3 286 DWRITE_PANOSE_FILL_PATTERNED_FILL = 0x4, // 4 287 DWRITE_PANOSE_FILL_COMPLEX_FILL = 0x5, // 5 288 DWRITE_PANOSE_FILL_SHAPED_FILL = 0x6, // 6 289 DWRITE_PANOSE_FILL_DRAWN_DISTRESSED = 0x7, // 7 290 }} 291 ENUM!{enum DWRITE_PANOSE_LINING { 292 DWRITE_PANOSE_LINING_ANY = 0x0, // 0 293 DWRITE_PANOSE_LINING_NO_FIT = 0x1, // 1 294 DWRITE_PANOSE_LINING_NONE = 0x2, // 2 295 DWRITE_PANOSE_LINING_INLINE = 0x3, // 3 296 DWRITE_PANOSE_LINING_OUTLINE = 0x4, // 4 297 DWRITE_PANOSE_LINING_ENGRAVED = 0x5, // 5 298 DWRITE_PANOSE_LINING_SHADOW = 0x6, // 6 299 DWRITE_PANOSE_LINING_RELIEF = 0x7, // 7 300 DWRITE_PANOSE_LINING_BACKDROP = 0x8, // 8 301 }} 302 ENUM!{enum DWRITE_PANOSE_DECORATIVE_TOPOLOGY { 303 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_ANY = 0x0, // 0 304 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_NO_FIT = 0x1, // 1 305 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_STANDARD = 0x2, // 2 306 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_SQUARE = 0x3, // 3 307 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_MULTIPLE_SEGMENT = 0x4, // 4 308 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_ART_DECO = 0x5, // 5 309 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_UNEVEN_WEIGHTING = 0x6, // 6 310 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_DIVERSE_ARMS = 0x7, // 7 311 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_DIVERSE_FORMS = 0x8, // 8 312 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_LOMBARDIC_FORMS = 0x9, // 9 313 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_UPPER_CASE_IN_LOWER_CASE = 0xA, // 10 314 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_IMPLIED_TOPOLOGY = 0xB, // 11 315 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_HORSESHOE_E_AND_A = 0xC, // 12 316 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_CURSIVE = 0xD, // 13 317 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_BLACKLETTER = 0xE, // 14 318 DWRITE_PANOSE_DECORATIVE_TOPOLOGY_SWASH_VARIANCE = 0xF, // 15 319 }} 320 ENUM!{enum DWRITE_PANOSE_CHARACTER_RANGES { 321 DWRITE_PANOSE_CHARACTER_RANGES_ANY = 0x0, // 0 322 DWRITE_PANOSE_CHARACTER_RANGES_NO_FIT = 0x1, // 1 323 DWRITE_PANOSE_CHARACTER_RANGES_EXTENDED_COLLECTION = 0x2, // 2 324 DWRITE_PANOSE_CHARACTER_RANGES_LITERALS = 0x3, // 3 325 DWRITE_PANOSE_CHARACTER_RANGES_NO_LOWER_CASE = 0x4, // 4 326 DWRITE_PANOSE_CHARACTER_RANGES_SMALL_CAPS = 0x5, // 5 327 }} 328 ENUM!{enum DWRITE_PANOSE_SYMBOL_KIND { 329 DWRITE_PANOSE_SYMBOL_KIND_ANY = 0x0, // 0 330 DWRITE_PANOSE_SYMBOL_KIND_NO_FIT = 0x1, // 1 331 DWRITE_PANOSE_SYMBOL_KIND_MONTAGES = 0x2, // 2 332 DWRITE_PANOSE_SYMBOL_KIND_PICTURES = 0x3, // 3 333 DWRITE_PANOSE_SYMBOL_KIND_SHAPES = 0x4, // 4 334 DWRITE_PANOSE_SYMBOL_KIND_SCIENTIFIC = 0x5, // 5 335 DWRITE_PANOSE_SYMBOL_KIND_MUSIC = 0x6, // 6 336 DWRITE_PANOSE_SYMBOL_KIND_EXPERT = 0x7, // 7 337 DWRITE_PANOSE_SYMBOL_KIND_PATTERNS = 0x8, // 8 338 DWRITE_PANOSE_SYMBOL_KIND_BOARDERS = 0x9, // 9 339 DWRITE_PANOSE_SYMBOL_KIND_ICONS = 0xA, // 10 340 DWRITE_PANOSE_SYMBOL_KIND_LOGOS = 0xB, // 11 341 DWRITE_PANOSE_SYMBOL_KIND_INDUSTRY_SPECIFIC = 0xC, // 12 342 }} 343 ENUM!{enum DWRITE_PANOSE_SYMBOL_ASPECT_RATIO { 344 DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_ANY = 0x0, // 0 345 DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NO_FIT = 0x1, // 1 346 DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NO_WIDTH = 0x2, // 2 347 DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_EXCEPTIONALLY_WIDE = 0x3, // 3 348 DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_SUPER_WIDE = 0x4, // 4 349 DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_VERY_WIDE = 0x5, // 5 350 DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_WIDE = 0x6, // 6 351 DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NORMAL = 0x7, // 7 352 DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_NARROW = 0x8, // 8 353 DWRITE_PANOSE_SYMBOL_ASPECT_RATIO_VERY_NARROW = 0x9, // 9 354 }} 355 ENUM!{enum DWRITE_OUTLINE_THRESHOLD { 356 DWRITE_OUTLINE_THRESHOLD_ANTIALIASED = 0x0, // 0 357 DWRITE_OUTLINE_THRESHOLD_ALIASED = 0x1, // 1 358 }} 359 ENUM!{enum DWRITE_BASELINE { 360 DWRITE_BASELINE_DEFAULT = 0x0, // 0 361 DWRITE_BASELINE_ROMAN = 0x1, // 1 362 DWRITE_BASELINE_CENTRAL = 0x2, // 2 363 DWRITE_BASELINE_MATH = 0x3, // 3 364 DWRITE_BASELINE_HANGING = 0x4, // 4 365 DWRITE_BASELINE_IDEOGRAPHIC_BOTTOM = 0x5, // 5 366 DWRITE_BASELINE_IDEOGRAPHIC_TOP = 0x6, // 6 367 DWRITE_BASELINE_MINIMUM = 0x7, // 7 368 DWRITE_BASELINE_MAXIMUM = 0x8, // 8 369 }} 370 ENUM!{enum DWRITE_VERTICAL_GLYPH_ORIENTATION { 371 DWRITE_VERTICAL_GLYPH_ORIENTATION_DEFAULT = 0x0, // 0 372 DWRITE_VERTICAL_GLYPH_ORIENTATION_STACKED = 0x1, // 1 373 }} 374 ENUM!{enum DWRITE_GLYPH_ORIENTATION_ANGLE { 375 DWRITE_GLYPH_ORIENTATION_ANGLE_0_DEGREES = 0x0, // 0 376 DWRITE_GLYPH_ORIENTATION_ANGLE_90_DEGREES = 0x1, // 1 377 DWRITE_GLYPH_ORIENTATION_ANGLE_180_DEGREES = 0x2, // 2 378 DWRITE_GLYPH_ORIENTATION_ANGLE_270_DEGREES = 0x3, // 3 379 }} 380 STRUCT!{struct DWRITE_FONT_METRICS1 { 381 designUnitsPerEm: UINT16, 382 ascent: UINT16, 383 descent: UINT16, 384 lineGap: INT16, 385 capHeight: UINT16, 386 xHeight: UINT16, 387 underlinePosition: INT16, 388 underlineThickness: UINT16, 389 strikethroughPosition: INT16, 390 strikethroughThickness: UINT16, 391 glyphBoxLeft: INT16, 392 glyphBoxTop: INT16, 393 glyphBoxRight: INT16, 394 glyphBoxBottom: INT16, 395 subscriptPositionX: INT16, 396 subscriptPositionY: INT16, 397 subscriptSizeX: INT16, 398 subscriptSizeY: INT16, 399 superscriptPositionX: INT16, 400 superscriptPositionY: INT16, 401 superscriptSizeX: INT16, 402 superscriptSizeY: INT16, 403 hasTypographicMetrics: BOOL, 404 }} 405 STRUCT!{struct DWRITE_CARET_METRICS { 406 slopeRise: INT16, 407 slopeRun: INT16, 408 offset: INT16, 409 }} 410 STRUCT!{struct DWRITE_PANOSE_text { 411 familyKind: UINT8, 412 serifStyle: UINT8, 413 weight: UINT8, 414 proportion: UINT8, 415 contrast: UINT8, 416 strokeVariation: UINT8, 417 armStyle: UINT8, 418 letterform: UINT8, 419 midline: UINT8, 420 xHeight: UINT8, 421 }} 422 STRUCT!{struct DWRITE_PANOSE_script { 423 familyKind: UINT8, 424 toolKind: UINT8, 425 weight: UINT8, 426 spacing: UINT8, 427 aspectRatio: UINT8, 428 contrast: UINT8, 429 scriptTopology: UINT8, 430 scriptForm: UINT8, 431 finials: UINT8, 432 xAscent: UINT8, 433 }} 434 STRUCT!{struct DWRITE_PANOSE_decorative { 435 familyKind: UINT8, 436 decorativeClass: UINT8, 437 weight: UINT8, 438 aspect: UINT8, 439 contrast: UINT8, 440 serifVariant: UINT8, 441 fill: UINT8, 442 lining: UINT8, 443 decorativeTopology: UINT8, 444 characterRange: UINT8, 445 }} 446 STRUCT!{struct DWRITE_PANOSE_symbol { 447 familyKind: UINT8, 448 symbolKind: UINT8, 449 weight: UINT8, 450 spacing: UINT8, 451 aspectRatioAndContrast: UINT8, 452 aspectRatio94: UINT8, 453 aspectRatio119: UINT8, 454 aspectRatio157: UINT8, 455 aspectRatio163: UINT8, 456 aspectRatio211: UINT8, 457 }} 458 UNION!{union DWRITE_PANOSE { 459 [u8; 10], 460 values values_mut: [UINT8; 10], 461 familyKind familyKind_mut: UINT8, 462 text text_mut: DWRITE_PANOSE_text, 463 script script_mut: DWRITE_PANOSE_script, 464 decorative decorative_mut: DWRITE_PANOSE_decorative, 465 symbol symbol_mut: DWRITE_PANOSE_symbol, 466 }} 467 STRUCT!{struct DWRITE_UNICODE_RANGE { 468 first: UINT32, 469 last: UINT32, 470 }} 471 STRUCT!{struct DWRITE_SCRIPT_PROPERTIES { 472 isoScriptCode: UINT32, 473 isoScriptNumber: UINT32, 474 clusterLookahead: UINT32, 475 justificationCharacter: UINT32, 476 bitfield0: UINT32, 477 }} 478 BITFIELD!{DWRITE_SCRIPT_PROPERTIES bitfield0: UINT32 [ 479 restrictCaretToClusters set_restrictCaretToClusters[0..1], 480 usesWordDividers set_usesWordDividers[1..2], 481 isDiscreteWriting set_isDiscreteWriting[2..3], 482 isBlockWriting set_isBlockWriting[3..4], 483 isDistributedWithinCluster set_isDistributedWithinCluster[4..5], 484 isConnectedWriting set_isConnectedWriting[5..6], 485 isCursiveWriting set_isCursiveWriting[6..7], 486 reserved set_reserved[7..32], 487 ]} 488 STRUCT!{struct DWRITE_JUSTIFICATION_OPPORTUNITY { 489 expansionMinimum: FLOAT, 490 expansionMaximum: FLOAT, 491 compressionMaximum: FLOAT, 492 bitfield0: UINT32, 493 }} 494 BITFIELD!{DWRITE_JUSTIFICATION_OPPORTUNITY bitfield0: UINT32 [ 495 expansionPriority set_expansionPriority[0..8], 496 compressionPriority set_compressionPriority[8..16], 497 allowResidualExpansion set_allowResidualExpansion[16..17], 498 allowResidualCompression set_allowResidualCompression[17..18], 499 applyToLeadingEdge set_applyToLeadingEdge[18..19], 500 applyToTrailingEdge set_applyToTrailingEdge[19..20], 501 reserved set_reserved[20..32], 502 ]} 503 RIDL!{#[uuid(0x30572f99, 0xdac6, 0x41db, 0xa1, 0x6e, 0x04, 0x86, 0x30, 0x7e, 0x60, 0x6a)] 504 interface IDWriteFactory1(IDWriteFactory1Vtbl): IDWriteFactory(IDWriteFactoryVtbl) { 505 fn GetEudcFontCollection( 506 fontCollection: *mut *mut IDWriteFontCollection, 507 checkForUpdates: BOOL, 508 ) -> HRESULT, 509 fn CreateCustomRenderingParams( 510 gamma: FLOAT, 511 enhancedContrast: FLOAT, 512 enhancedContrastGrayscale: FLOAT, 513 clearTypeLevel: FLOAT, 514 pixelGeometry: DWRITE_PIXEL_GEOMETRY, 515 renderingMode: DWRITE_RENDERING_MODE, 516 renderingParams: *mut *mut IDWriteRenderingParams1, 517 ) -> HRESULT, 518 }} 519 RIDL!{#[uuid(0xa71efdb4, 0x9fdb, 0x4838, 0xad, 0x90, 0xcf, 0xc3, 0xbe, 0x8c, 0x3d, 0xaf)] 520 interface IDWriteFontFace1(IDWriteFontFace1Vtbl): IDWriteFontFace(IDWriteFontFaceVtbl) { 521 fn GetMetrics( 522 fontMetrics: *mut DWRITE_FONT_METRICS1, 523 ) -> (), 524 fn GetGdiCompatibleMetrics( 525 emSize: FLOAT, 526 pixelsPerDip: FLOAT, 527 transform: *const DWRITE_MATRIX, 528 fontMetrics: *mut DWRITE_FONT_METRICS1, 529 ) -> HRESULT, 530 fn GetCaretMetrics( 531 caretMetrics: *mut DWRITE_CARET_METRICS, 532 ) -> (), 533 fn GetUnicodeRanges( 534 maxRangeCount: UINT32, 535 unicodeRanges: *mut DWRITE_UNICODE_RANGE, 536 actualRangeCount: *mut UINT32, 537 ) -> HRESULT, 538 fn IsMonospacedFont() -> BOOL, 539 fn GetDesignGlyphAdvances( 540 glyphCount: UINT32, 541 glyphIndices: *const UINT16, 542 glyphAdvances: *mut INT32, 543 isSideways: BOOL, 544 ) -> HRESULT, 545 fn GetGdiCompatibleGlyphAdvances( 546 emSize: FLOAT, 547 pixelsPerDip: FLOAT, 548 transform: *const DWRITE_MATRIX, 549 useGdiNatural: BOOL, 550 isSideways: BOOL, 551 glyphCount: UINT32, 552 glyphIndices: *const UINT16, 553 glyphAdvances: *mut INT32, 554 ) -> HRESULT, 555 fn GetKerningPairAdjustments( 556 glyphCount: UINT32, 557 glyphIndices: *const UINT16, 558 glyphAdvanceAdjustments: *mut INT32, 559 ) -> HRESULT, 560 fn HasKerningPairs() -> BOOL, 561 fn GetRecommendedRenderingMode( 562 fontEmSize: FLOAT, 563 dpiX: FLOAT, 564 dpiY: FLOAT, 565 transform: *const DWRITE_MATRIX, 566 isSideways: BOOL, 567 outlineThreshold: DWRITE_OUTLINE_THRESHOLD, 568 measuringMode: DWRITE_MEASURING_MODE, 569 renderingMode: *mut DWRITE_RENDERING_MODE, 570 ) -> HRESULT, 571 fn GetVerticalGlyphVariants( 572 glyphCount: UINT32, 573 nominalGlyphIndices: *const UINT16, 574 verticalGlyphIndices: *mut UINT16, 575 ) -> HRESULT, 576 fn HasVerticalGlyphVariants() -> BOOL, 577 }} 578 RIDL!{#[uuid(0xacd16696, 0x8c14, 0x4f5d, 0x87, 0x7e, 0xfe, 0x3f, 0xc1, 0xd3, 0x27, 0x38)] 579 interface IDWriteFont1(IDWriteFont1Vtbl): IDWriteFont(IDWriteFontVtbl) { 580 fn GetMetrics( 581 fontMetrics: *mut DWRITE_FONT_METRICS1, 582 ) -> (), 583 fn GetPanose( 584 panose: *mut DWRITE_PANOSE, 585 ) -> (), 586 fn GetUnicodeRanges( 587 maxRangeCount: UINT32, 588 unicodeRanges: *mut DWRITE_UNICODE_RANGE, 589 actualRangeCount: *mut UINT32, 590 ) -> HRESULT, 591 fn IsMonospacedFont() -> BOOL, 592 }} 593 RIDL!{#[uuid(0x94413cf4, 0xa6fc, 0x4248, 0x8b, 0x50, 0x66, 0x74, 0x34, 0x8f, 0xca, 0xd3)] 594 interface IDWriteRenderingParams1(IDWriteRenderingParams1Vtbl): 595 IDWriteRenderingParams(IDWriteRenderingParamsVtbl) { 596 fn GetGrayscaleEnhancedContrast() -> FLOAT, 597 }} 598 RIDL!{#[uuid(0x80dad800, 0xe21f, 0x4e83, 0x96, 0xce, 0xbf, 0xcc, 0xe5, 0x00, 0xdb, 0x7c)] 599 interface IDWriteTextAnalyzer1(IDWriteTextAnalyzer1Vtbl): 600 IDWriteTextAnalyzer(IDWriteTextAnalyzerVtbl) { 601 fn ApplyCharacterSpacing( 602 leadingSpacing: FLOAT, 603 trailingSpacing: FLOAT, 604 minimumAdvanceWidth: FLOAT, 605 textLength: UINT32, 606 glyphCount: UINT32, 607 clusterMap: *const UINT16, 608 glyphAdvances: *const FLOAT, 609 glyphOffsets: *const DWRITE_GLYPH_OFFSET, 610 glyphProperties: *const DWRITE_SHAPING_GLYPH_PROPERTIES, 611 modifiedGlyphAdvances: *mut FLOAT, 612 modifiedGlyphOffsets: *mut DWRITE_GLYPH_OFFSET, 613 ) -> HRESULT, 614 fn GetBaseline( 615 fontFace: *mut IDWriteFontFace, 616 baseline: DWRITE_BASELINE, 617 isVertical: BOOL, 618 isSimulationAllowed: BOOL, 619 scriptAnalysis: DWRITE_SCRIPT_ANALYSIS, 620 localeName: *const WCHAR, 621 baselineCoordinate: *mut INT32, 622 exists: *mut BOOL, 623 ) -> HRESULT, 624 fn AnalyzeVerticalGlyphOrientation( 625 analysisSource: *mut IDWriteTextAnalysisSource1, 626 textPosition: UINT32, 627 textLength: UINT32, 628 analysisSink: *mut IDWriteTextAnalysisSink1, 629 ) -> HRESULT, 630 fn GetGlyphOrientationTransform( 631 glyphOrientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, 632 isSideways: BOOL, 633 transform: *mut DWRITE_MATRIX, 634 ) -> HRESULT, 635 fn GetScriptProperties( 636 scriptAnalysis: DWRITE_SCRIPT_ANALYSIS, 637 scriptProperties: *mut DWRITE_SCRIPT_PROPERTIES, 638 ) -> HRESULT, 639 fn GetTextComplexity( 640 textString: *const WCHAR, 641 textLength: UINT32, 642 fontFace: *mut IDWriteFontFace, 643 isTextSimple: *mut BOOL, 644 textLengthRead: *mut UINT32, 645 glyphIndices: *mut UINT16, 646 ) -> HRESULT, 647 fn GetJustificationOpportunities( 648 fontFace: *mut IDWriteFontFace, 649 fontEmSize: FLOAT, 650 scriptAnalysis: DWRITE_SCRIPT_ANALYSIS, 651 textLength: UINT32, 652 glyphCount: UINT32, 653 textString: *const WCHAR, 654 clusterMap: *const UINT16, 655 glyphProperties: *const DWRITE_SHAPING_GLYPH_PROPERTIES, 656 justificationOpportunities: *mut DWRITE_JUSTIFICATION_OPPORTUNITY, 657 ) -> HRESULT, 658 fn JustifyGlyphAdvances( 659 lineWidth: FLOAT, 660 glyphCount: UINT32, 661 justificationOpportunities: *const DWRITE_JUSTIFICATION_OPPORTUNITY, 662 glyphAdvances: *const FLOAT, 663 glyphOffsets: *const DWRITE_GLYPH_OFFSET, 664 justifiedGlyphAdvances: *mut FLOAT, 665 justifiedGlyphOffsets: *mut DWRITE_GLYPH_OFFSET, 666 ) -> HRESULT, 667 fn GetJustifiedGlyphs( 668 fontFace: *mut IDWriteFontFace, 669 fontEmSize: FLOAT, 670 scriptAnalysis: DWRITE_SCRIPT_ANALYSIS, 671 textLength: UINT32, 672 glyphCount: UINT32, 673 maxGlyphCount: UINT32, 674 clusterMap: *const UINT16, 675 glyphIndices: *const UINT16, 676 glyphAdvances: *const FLOAT, 677 justifiedGlyphAdvances: *const FLOAT, 678 justifiedGlyphOffsets: *const DWRITE_GLYPH_OFFSET, 679 glyphProperties: *const DWRITE_SHAPING_GLYPH_PROPERTIES, 680 actualGlyphCount: *mut UINT32, 681 modifiedClusterMap: *mut UINT16, 682 modifiedGlyphIndices: *mut UINT16, 683 modifiedGlyphAdvances: *mut FLOAT, 684 modifiedGlyphOffsets: *mut DWRITE_GLYPH_OFFSET, 685 ) -> HRESULT, 686 }} 687 RIDL!{#[uuid(0x639cfad8, 0x0fb4, 0x4b21, 0xa5, 0x8a, 0x06, 0x79, 0x20, 0x12, 0x00, 0x09)] 688 interface IDWriteTextAnalysisSource1(IDWriteTextAnalysisSource1Vtbl): 689 IDWriteTextAnalysisSource(IDWriteTextAnalysisSourceVtbl) { 690 fn GetVerticalGlyphOrientation( 691 textPosition: UINT32, 692 textLength: *mut UINT32, 693 glyphOrientation: *mut DWRITE_VERTICAL_GLYPH_ORIENTATION, 694 bidiLevel: *mut UINT8, 695 ) -> HRESULT, 696 }} 697 RIDL!{#[uuid(0xb0d941a0, 0x85e7, 0x4d8b, 0x9f, 0xd3, 0x5c, 0xed, 0x99, 0x34, 0x48, 0x2a)] 698 interface IDWriteTextAnalysisSink1(IDWriteTextAnalysisSink1Vtbl): 699 IDWriteTextAnalysisSink(IDWriteTextAnalysisSinkVtbl) { 700 fn SetGlyphOrientation( 701 textPosition: UINT32, 702 textLength: UINT32, 703 glyphOrientationAngle: DWRITE_GLYPH_ORIENTATION_ANGLE, 704 adjustedBidiLevel: UINT8, 705 isSideways: BOOL, 706 isRightToLeft: BOOL, 707 ) -> HRESULT, 708 }} 709 RIDL!{#[uuid(0x9064d822, 0x80a7, 0x465c, 0xa9, 0x86, 0xdf, 0x65, 0xf7, 0x8b, 0x8f, 0xeb)] 710 interface IDWriteTextLayout1(IDWriteTextLayout1Vtbl): 711 IDWriteTextLayout(IDWriteTextLayoutVtbl) { 712 fn SetPairKerning( 713 isPairKerningEnabled: BOOL, 714 textRange: DWRITE_TEXT_RANGE, 715 ) -> HRESULT, 716 fn GetPairKerning( 717 currentPosition: UINT32, 718 isPairKerningEnabled: *mut BOOL, 719 textRange: *mut DWRITE_TEXT_RANGE, 720 ) -> HRESULT, 721 fn SetCharacterSpacing( 722 leadingSpacing: FLOAT, 723 trailingSpacing: FLOAT, 724 minimumAdvanceWidth: FLOAT, 725 textRange: DWRITE_TEXT_RANGE, 726 ) -> HRESULT, 727 fn GetCharacterSpacing( 728 currentPosition: UINT32, 729 leadingSpacing: *mut FLOAT, 730 trailingSpacing: *mut FLOAT, 731 minimumAdvanceWidth: *mut FLOAT, 732 textRange: *mut DWRITE_TEXT_RANGE, 733 ) -> HRESULT, 734 }} 735 ENUM!{enum DWRITE_TEXT_ANTIALIAS_MODE { 736 DWRITE_TEXT_ANTIALIAS_MODE_CLEARTYPE = 0x0, // 0 737 DWRITE_TEXT_ANTIALIAS_MODE_GRAYSCALE = 0x1, // 1 738 }} 739 RIDL!{#[uuid(0x791e8298, 0x3ef3, 0x4230, 0x98, 0x80, 0xc9, 0xbd, 0xec, 0xc4, 0x20, 0x64)] 740 interface IDWriteBitmapRenderTarget1(IDWriteBitmapRenderTarget1Vtbl): 741 IDWriteBitmapRenderTarget(IDWriteBitmapRenderTargetVtbl) { 742 fn GetTextAntialiasMode() -> DWRITE_TEXT_ANTIALIAS_MODE, 743 fn SetTextAntialiasMode( 744 antialiasMode: DWRITE_TEXT_ANTIALIAS_MODE, 745 ) -> HRESULT, 746 }} 747