winapi_ui_automation/um/
dwrite_1.rs

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
7use shared::basetsd::{INT16, INT32, UINT16, UINT32, UINT8};
8use shared::minwindef::{BOOL, FLOAT};
9use um::dcommon::DWRITE_MEASURING_MODE;
10use 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};
19use um::winnt::{HRESULT, WCHAR};
20ENUM!{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}}
29ENUM!{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}}
50ENUM!{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}}
65ENUM!{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}}
77ENUM!{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}}
93ENUM!{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}}
106ENUM!{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}}
127ENUM!{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}}
145ENUM!{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}}
161ENUM!{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}}
173ENUM!{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}}
185ENUM!{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}}
191ENUM!{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}}
200ENUM!{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}}
213ENUM!{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}}
229ENUM!{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}}
245ENUM!{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}}
254ENUM!{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}}
269ENUM!{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}}
281ENUM!{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}}
291ENUM!{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}}
302ENUM!{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}}
320ENUM!{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}}
328ENUM!{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}}
343ENUM!{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}}
355ENUM!{enum DWRITE_OUTLINE_THRESHOLD {
356    DWRITE_OUTLINE_THRESHOLD_ANTIALIASED = 0x0, // 0
357    DWRITE_OUTLINE_THRESHOLD_ALIASED = 0x1, // 1
358}}
359ENUM!{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}}
370ENUM!{enum DWRITE_VERTICAL_GLYPH_ORIENTATION {
371    DWRITE_VERTICAL_GLYPH_ORIENTATION_DEFAULT = 0x0, // 0
372    DWRITE_VERTICAL_GLYPH_ORIENTATION_STACKED = 0x1, // 1
373}}
374ENUM!{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}}
380STRUCT!{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}}
405STRUCT!{struct DWRITE_CARET_METRICS {
406    slopeRise: INT16,
407    slopeRun: INT16,
408    offset: INT16,
409}}
410STRUCT!{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}}
422STRUCT!{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}}
434STRUCT!{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}}
446STRUCT!{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}}
458UNION!{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}}
467STRUCT!{struct DWRITE_UNICODE_RANGE {
468    first: UINT32,
469    last: UINT32,
470}}
471STRUCT!{struct DWRITE_SCRIPT_PROPERTIES {
472    isoScriptCode: UINT32,
473    isoScriptNumber: UINT32,
474    clusterLookahead: UINT32,
475    justificationCharacter: UINT32,
476    bitfield0: UINT32,
477}}
478BITFIELD!{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]}
488STRUCT!{struct DWRITE_JUSTIFICATION_OPPORTUNITY {
489    expansionMinimum: FLOAT,
490    expansionMaximum: FLOAT,
491    compressionMaximum: FLOAT,
492    bitfield0: UINT32,
493}}
494BITFIELD!{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]}
503RIDL!{#[uuid(0x30572f99, 0xdac6, 0x41db, 0xa1, 0x6e, 0x04, 0x86, 0x30, 0x7e, 0x60, 0x6a)]
504interface 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}}
519RIDL!{#[uuid(0xa71efdb4, 0x9fdb, 0x4838, 0xad, 0x90, 0xcf, 0xc3, 0xbe, 0x8c, 0x3d, 0xaf)]
520interface 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}}
578RIDL!{#[uuid(0xacd16696, 0x8c14, 0x4f5d, 0x87, 0x7e, 0xfe, 0x3f, 0xc1, 0xd3, 0x27, 0x38)]
579interface 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}}
593RIDL!{#[uuid(0x94413cf4, 0xa6fc, 0x4248, 0x8b, 0x50, 0x66, 0x74, 0x34, 0x8f, 0xca, 0xd3)]
594interface IDWriteRenderingParams1(IDWriteRenderingParams1Vtbl):
595    IDWriteRenderingParams(IDWriteRenderingParamsVtbl) {
596    fn GetGrayscaleEnhancedContrast() -> FLOAT,
597}}
598RIDL!{#[uuid(0x80dad800, 0xe21f, 0x4e83, 0x96, 0xce, 0xbf, 0xcc, 0xe5, 0x00, 0xdb, 0x7c)]
599interface 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}}
687RIDL!{#[uuid(0x639cfad8, 0x0fb4, 0x4b21, 0xa5, 0x8a, 0x06, 0x79, 0x20, 0x12, 0x00, 0x09)]
688interface 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}}
697RIDL!{#[uuid(0xb0d941a0, 0x85e7, 0x4d8b, 0x9f, 0xd3, 0x5c, 0xed, 0x99, 0x34, 0x48, 0x2a)]
698interface 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}}
709RIDL!{#[uuid(0x9064d822, 0x80a7, 0x465c, 0xa9, 0x86, 0xdf, 0x65, 0xf7, 0x8b, 0x8f, 0xeb)]
710interface 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}}
735ENUM!{enum DWRITE_TEXT_ANTIALIAS_MODE {
736    DWRITE_TEXT_ANTIALIAS_MODE_CLEARTYPE = 0x0, // 0
737    DWRITE_TEXT_ANTIALIAS_MODE_GRAYSCALE = 0x1, // 1
738}}
739RIDL!{#[uuid(0x791e8298, 0x3ef3, 0x4230, 0x98, 0x80, 0xc9, 0xbd, 0xec, 0xc4, 0x20, 0x64)]
740interface IDWriteBitmapRenderTarget1(IDWriteBitmapRenderTarget1Vtbl):
741    IDWriteBitmapRenderTarget(IDWriteBitmapRenderTargetVtbl) {
742    fn GetTextAntialiasMode() -> DWRITE_TEXT_ANTIALIAS_MODE,
743    fn SetTextAntialiasMode(
744        antialiasMode: DWRITE_TEXT_ANTIALIAS_MODE,
745    ) -> HRESULT,
746}}