1 module aurora.directx.dwrite.dwrite_1;
2 
3 version(Windows):
4 
5 public import aurora.directx.com;
6 public import aurora.directx.dwrite.dwrite_0;
7 
8 ///
9 /// Constants
10 ///
11 
12 ///
13 /// Functions
14 ///
15 
16 ///
17 /// Enumerations
18 ///
19 
20 public enum DWRITE_BASELINE : int {  
21 	DEFAULT, 
22 	ROMAN, 
23 	CENTRAL, 
24 	MATH, 
25 	HANGING, 
26 	IDEOGRAPHIC_BOTTOM, 
27 	IDEOGRAPHIC_TOP, 
28 	MINIMUM, 
29 	MAXIMUM,		
30 }
31 
32 public enum DWRITE_PANOSE_FAMILY : ubyte {  
33 	ANY           = 0, 
34 	NO_FIT        = 1, 
35 	TEXT_DISPLAY  = 2, 
36 	SCRIPT        = 3, 
37 	DECORATIVE    = 4, 
38 	SYMBOL        = 5, 
39 	PICTORIAL     = SYMBOL 
40 }
41 
42 public enum DWRITE_PANOSE_SERIF_STYLE : ubyte {  
43 	ANY                 = 0, 
44 	NO_FIT              = 1, 
45 	COVE                = 2, 
46 	OBTUSE_COVE         = 3, 
47 	SQUARE_COVE         = 4, 
48 	OBTUSE_SQUARE_COVE  = 5, 
49 	SQUARE              = 6, 
50 	THIN                = 7, 
51 	OVAL                = 8, 
52 	EXAGGERATED         = 9, 
53 	TRIANGLE            = 10, 
54 	NORMAL_SANS         = 11, 
55 	OBTUSE_SANS         = 12, 
56 	PERPENDICULAR_SANS  = 13, 
57 	FLARED              = 14, 
58 	ROUNDED             = 15, 
59 	SCRIPT              = 16, 
60 	PERP_SANS           = PERPENDICULAR_SANS, 
61 	BONE                = OVAL,	
62 }
63 
64 public enum DWRITE_PANOSE_WEIGHT : ubyte {  
65 	ANY          = 0, 
66 	NO_FIT       = 1, 
67 	VERY_LIGHT   = 2, 
68 	LIGHT        = 3, 
69 	THIN         = 4, 
70 	BOOK         = 5, 
71 	MEDIUM       = 6, 
72 	DEMI         = 7, 
73 	BOLD         = 8, 
74 	HEAVY        = 9, 
75 	BLACK        = 10, 
76 	EXTRA_BLACK  = 11, 
77 	NORD         = EXTRA_BLACK,	
78 }
79 
80 public enum DWRITE_PANOSE_SYMBOL_ASPECT_RATIO : ubyte {  
81 	ANY                 = 0, 
82 	NO_FIT              = 1, 
83 	NO_WIDTH            = 2, 
84 	EXCEPTIONALLY_WIDE  = 3, 
85 	SUPER_WIDE          = 4, 
86 	VERY_WIDE           = 5, 
87 	WIDE                = 6, 
88 	NORMAL              = 7, 
89 	NARROW              = 8, 
90 	VERY_NARROW         = 9,	
91 }
92 
93 public enum DWRITE_PANOSE_PROPORTION : ubyte {  
94 	ANY             = 0, 
95 	NO_FIT          = 1, 
96 	OLD_STYLE       = 2, 
97 	MODERN          = 3, 
98 	EVEN_WIDTH      = 4, 
99 	EXPANDED        = 5, 
100 	CONDENSED       = 6, 
101 	VERY_EXPANDED   = 7, 
102 	VERY_CONDENSED  = 8, 
103 	MONOSPACED      = 9,	
104 }
105 
106 public enum DWRITE_PANOSE_CONTRAST : ubyte {  
107 	ANY                = 0, 
108 	NO_FIT             = 1, 
109 	NONE               = 2, 
110 	VERY_LOW           = 3, 
111 	LOW                = 4, 
112 	MEDIUM_LOW         = 5, 
113 	MEDIUM             = 6, 
114 	MEDIUM_HIGH        = 7, 
115 	HIGH               = 8, 
116 	VERY_HIGH          = 9, 
117 	HORIZONTAL_LOW     = 10, 
118 	HORIZONTAL_MEDIUM  = 11, 
119 	HORIZONTAL_HIGH    = 12, 
120 	BROKEN             = 13,	
121 }
122 
123 public enum DWRITE_PANOSE_STROKE_VARIATION : ubyte {  
124 	ANY                   = 0, 
125 	NO_FIT                = 1, 
126 	NO_VARIATION          = 2, 
127 	GRADUAL_DIAGONAL      = 3, 
128 	GRADUAL_TRANSITIONAL  = 4, 
129 	GRADUAL_VERTICAL      = 5, 
130 	GRADUAL_HORIZONTAL    = 6, 
131 	RAPID_VERTICAL        = 7, 
132 	RAPID_HORIZONTAL      = 8, 
133 	INSTANT_VERTICAL      = 9, 
134 	INSTANT_HORIZONTAL    = 10,	
135 }
136 
137 public enum DWRITE_PANOSE_ARM_STYLE : ubyte {  
138 	ANY                            = 0, 
139 	NO_FIT                         = 1, 
140 	STRAIGHT_ARMS_HORIZONTAL       = 2, 
141 	STRAIGHT_ARMS_WEDGE            = 3, 
142 	STRAIGHT_ARMS_VERTICAL         = 4, 
143 	STRAIGHT_ARMS_SINGLE_SERIF     = 5, 
144 	STRAIGHT_ARMS_DOUBLE_SERIF     = 6, 
145 	NONSTRAIGHT_ARMS_HORIZONTAL    = 7, 
146 	NONSTRAIGHT_ARMS_WEDGE         = 8, 
147 	NONSTRAIGHT_ARMS_VERTICAL      = 9, 
148 	NONSTRAIGHT_ARMS_SINGLE_SERIF  = 10, 
149 	NONSTRAIGHT_ARMS_DOUBLE_SERIF  = 11, 
150 	STRAIGHT_ARMS_HORZ             = STRAIGHT_ARMS_HORIZONTAL, 
151 	STRAIGHT_ARMS_VERT             = STRAIGHT_ARMS_VERTICAL, 
152 	BENT_ARMS_HORZ                 = NONSTRAIGHT_ARMS_HORIZONTAL, 
153 	BENT_ARMS_WEDGE                = NONSTRAIGHT_ARMS_WEDGE, 
154 	BENT_ARMS_VERT                 = NONSTRAIGHT_ARMS_VERTICAL, 
155 	BENT_ARMS_SINGLE_SERIF         = NONSTRAIGHT_ARMS_SINGLE_SERIF, 
156 	BENT_ARMS_DOUBLE_SERIF         = NONSTRAIGHT_ARMS_DOUBLE_SERIF,	
157 }
158 
159 public enum DWRITE_PANOSE_LETTERFORM : ubyte {  
160 	ANY                 = 0, 
161 	NO_FIT              = 1, 
162 	NORMAL_CONTACT      = 2, 
163 	NORMAL_WEIGHTED     = 3, 
164 	NORMAL_BOXED        = 4, 
165 	NORMAL_FLATTENED    = 5, 
166 	NORMAL_ROUNDED      = 6, 
167 	NORMAL_OFF_CENTER   = 7, 
168 	NORMAL_SQUARE       = 8, 
169 	OBLIQUE_CONTACT     = 9, 
170 	OBLIQUE_WEIGHTED    = 10, 
171 	OBLIQUE_BOXED       = 11, 
172 	OBLIQUE_FLATTENED   = 12, 
173 	OBLIQUE_ROUNDED     = 13, 
174 	OBLIQUE_OFF_CENTER  = 14, 
175 	OBLIQUE_SQUARE      = 15,	
176 }
177 
178 public enum DWRITE_PANOSE_MIDLINE : ubyte {  
179 	ANY               = 0, 
180 	NO_FIT            = 1, 
181 	STANDARD_TRIMMED  = 2, 
182 	STANDARD_POINTED  = 3, 
183 	STANDARD_SERIFED  = 4, 
184 	HIGH_TRIMMED      = 5, 
185 	HIGH_POINTED      = 6, 
186 	HIGH_SERIFED      = 7, 
187 	CONSTANT_TRIMMED  = 8, 
188 	CONSTANT_POINTED  = 9, 
189 	CONSTANT_SERIFED  = 10, 
190 	LOW_TRIMMED       = 11, 
191 	LOW_POINTED       = 12, 
192 	LOW_SERIFED       = 13,	
193 }
194 
195 public enum DWRITE_PANOSE_XHEIGHT : ubyte {  
196 	ANY                = 0, 
197 	NO_FIT             = 1, 
198 	CONSTANT_SMALL     = 2, 
199 	CONSTANT_STANDARD  = 3, 
200 	CONSTANT_LARGE     = 4, 
201 	DUCKING_SMALL      = 5, 
202 	DUCKING_STANDARD   = 6, 
203 	DUCKING_LARGE      = 7, 
204 	CONSTANT_STD       = CONSTANT_STANDARD, 
205 	DUCKING_STD        = DUCKING_STANDARD,	
206 }
207 
208 enum DWRITE_PANOSE_TOOL_KIND : ubyte {  
209 	ANY                 = 0, 
210 	NO_FIT              = 1, 
211 	FLAT_NIB            = 2, 
212 	PRESSURE_POINT      = 3, 
213 	ENGRAVED            = 4, 
214 	BALL                = 5, 
215 	BRUSH               = 6, 
216 	ROUGH               = 7, 
217 	FELT_PEN_BRUSH_TIP  = 8, 
218 	WILD_BRUSH          = 9,	
219 }
220 
221 enum DWRITE_PANOSE_SPACING : ubyte {  
222 	ANY                  = 0, 
223 	NO_FIT               = 1, 
224 	PROPORTIONAL_SPACED  = 2, 
225 	MONOSPACE            = 3,	
226 }
227 
228 public enum DWRITE_PANOSE_ASPECT_RATIO : ubyte {  
229 	ANY             = 0, 
230 	NO_FIT          = 1, 
231 	VERY_CONDENSED  = 2, 
232 	CONDENSED       = 3, 
233 	NORMAL          = 4, 
234 	EXPANDED        = 5, 
235 	VERY_EXPANDED   = 6,	
236 }
237 
238 public enum DWRITE_PANOSE_SCRIPT_TOPOLOGY : ubyte {  
239 	ANY                       = 0, 
240 	NO_FIT                    = 1, 
241 	ROMAN_DISCONNECTED        = 2, 
242 	ROMAN_TRAILING            = 3, 
243 	ROMAN_CONNECTED           = 4, 
244 	CURSIVE_DISCONNECTED      = 5, 
245 	CURSIVE_TRAILING          = 6, 
246 	CURSIVE_CONNECTED         = 7, 
247 	BLACKLETTER_DISCONNECTED  = 8, 
248 	BLACKLETTER_TRAILING      = 9, 
249 	BLACKLETTER_CONNECTED     = 10,	
250 }
251 
252 public enum DWRITE_PANOSE_SCRIPT_FORM : ubyte {  
253 	ANY                           = 0, 
254 	NO_FIT                        = 1, 
255 	UPRIGHT_NO_WRAPPING           = 2, 
256 	UPRIGHT_SOME_WRAPPING         = 3, 
257 	UPRIGHT_MORE_WRAPPING         = 4, 
258 	UPRIGHT_EXTREME_WRAPPING      = 5, 
259 	OBLIQUE_NO_WRAPPING           = 6, 
260 	OBLIQUE_SOME_WRAPPING         = 7, 
261 	OBLIQUE_MORE_WRAPPING         = 8, 
262 	OBLIQUE_EXTREME_WRAPPING      = 9, 
263 	EXAGGERATED_NO_WRAPPING       = 10, 
264 	EXAGGERATED_SOME_WRAPPING     = 11, 
265 	EXAGGERATED_MORE_WRAPPING     = 12, 
266 	EXAGGERATED_EXTREME_WRAPPING  = 13,	
267 }
268 
269 public enum DWRITE_PANOSE_FINIALS : ubyte {  
270 	ANY                   = 0, 
271 	NO_FIT                = 1, 
272 	NONE_NO_LOOPS         = 2, 
273 	NONE_CLOSED_LOOPS     = 3, 
274 	NONE_OPEN_LOOPS       = 4, 
275 	SHARP_NO_LOOPS        = 5, 
276 	SHARP_CLOSED_LOOPS    = 6, 
277 	SHARP_OPEN_LOOPS      = 7, 
278 	TAPERED_NO_LOOPS      = 8, 
279 	TAPERED_CLOSED_LOOPS  = 9, 
280 	TAPERED_OPEN_LOOPS    = 10, 
281 	ROUND_NO_LOOPS        = 11, 
282 	ROUND_CLOSED_LOOPS    = 12, 
283 	ROUND_OPEN_LOOPS      = 13,	
284 }
285 
286 public enum DWRITE_PANOSE_XASCENT : ubyte {  
287 	ANY        = 0, 
288 	NO_FIT     = 1, 
289 	VERY_LOW   = 2, 
290 	LOW        = 3, 
291 	MEDIUM     = 4, 
292 	HIGH       = 5, 
293 	VERY_HIGH  = 6,	
294 }
295 
296 public enum DWRITE_PANOSE_DECORATIVE_CLASS : ubyte {  
297 	ANY                   = 0, 
298 	NO_FIT                = 1, 
299 	DERIVATIVE            = 2, 
300 	NONSTANDARD_TOPOLOGY  = 3, 
301 	NONSTANDARD_ELEMENTS  = 4, 
302 	NONSTANDARD_ASPECT    = 5, 
303 	INITIALS              = 6, 
304 	CARTOON               = 7, 
305 	PICTURE_STEMS         = 8, 
306 	ORNAMENTED            = 9, 
307 	TEXT_AND_BACKGROUND   = 10, 
308 	COLLAGE               = 11, 
309 	MONTAGE               = 12,	
310 }
311 
312 public enum DWRITE_PANOSE_ASPECT : ubyte {  
313 	ANY              = 0, 
314 	NO_FIT           = 1, 
315 	SUPER_CONDENSED  = 2, 
316 	VERY_CONDENSED   = 3, 
317 	CONDENSED        = 4, 
318 	NORMAL           = 5, 
319 	EXTENDED         = 6, 
320 	VERY_EXTENDED    = 7, 
321 	SUPER_EXTENDED   = 8, 
322 	MONOSPACED       = 9,	
323 }
324 
325 public enum DWRITE_PANOSE_FILL : ubyte {  
326 	ANY                  = 0, 
327 	NO_FIT               = 1, 
328 	STANDARD_SOLID_FILL  = 2, 
329 	NO_FILL              = 3, 
330 	PATTERNED_FILL       = 4, 
331 	COMPLEX_FILL         = 5, 
332 	SHAPED_FILL          = 6, 
333 	DRAWN_DISTRESSED     = 7,	
334 }
335 
336 public enum DWRITE_PANOSE_LINING : ubyte {  
337 	ANY       = 0, 
338 	NO_FIT    = 1, 
339 	NONE      = 2, 
340 	INLINE    = 3, 
341 	OUTLINE   = 4, 
342 	ENGRAVED  = 5, 
343 	SHADOW    = 6, 
344 	RELIEF    = 7, 
345 	BACKDROP  = 8,	
346 }
347 
348 public enum DWRITE_PANOSE_DECORATIVE_TOPOLOGY : ubyte {  
349 	ANY                       = 0, 
350 	NO_FIT                    = 1, 
351 	STANDARD                  = 2, 
352 	SQUARE                    = 3, 
353 	MULTIPLE_SEGMENT          = 4, 
354 	ART_DECO                  = 5, 
355 	UNEVEN_WEIGHTING          = 6, 
356 	DIVERSE_ARMS              = 7, 
357 	DIVERSE_FORMS             = 8, 
358 	LOMBARDIC_FORMS           = 9, 
359 	UPPER_CASE_IN_LOWER_CASE  = 10, 
360 	IMPLIED_TOPOLOGY          = 11, 
361 	HORSESHOE_E_AND_A         = 12, 
362 	CURSIVE                   = 13, 
363 	BLACKLETTER               = 14, 
364 	SWASH_VARIANCE            = 15,	
365 }
366 
367 public enum DWRITE_PANOSE_CHARACTER_RANGES : ubyte {  
368 	ANY                  = 0, 
369 	NO_FIT               = 1, 
370 	EXTENDED_COLLECTION  = 2, 
371 	LITERALS             = 3, 
372 	NO_LOWER_CASE        = 4, 
373 	SMALL_CAPS           = 5,	
374 }
375 
376 public enum DWRITE_PANOSE_SYMBOL_KIND : ubyte {  
377 	ANY                = 0, 
378 	NO_FIT             = 1, 
379 	MONTAGES           = 2, 
380 	PICTURES           = 3, 
381 	SHAPES             = 4, 
382 	SCIENTIFIC         = 5, 
383 	MUSIC              = 6, 
384 	EXPERT             = 7, 
385 	PATTERNS           = 8, 
386 	BOARDERS           = 9, 
387 	ICONS              = 10, 
388 	LOGOS              = 11, 
389 	INDUSTRY_SPECIFIC  = 12,	
390 }
391 
392 public enum DWRITE_GLYPH_ORIENTATION_ANGLE {  
393 	ANGLE_0_DEGREES, 
394 	ANGLE_90_DEGREES, 
395 	ANGLE_180_DEGREES, 
396 	ANGLE_270_DEGREES,		
397 }
398 
399 public enum DWRITE_OUTLINE_THRESHOLD : int {  
400 	ANTIALIASED, 
401 	ALIASED,	
402 }
403 
404 public enum DWRITE_TEXT_ANTIALIAS_MODE : int {  
405 	CLEARTYPE, 
406 	GRAYSCALE,	
407 }
408 
409 public enum DWRITE_VERTICAL_GLYPH_ORIENTATION : int {  
410 	DEFAULT, 
411 	STACKED,	
412 }
413 
414 ///
415 /// Structures
416 ///
417 
418 public struct DWRITE_CARET_METRICS {
419 	short slopeRise;
420 	short slopeRun;
421 	short offset;
422 }
423 
424 public union DWRITE_PANOSE {
425 	ubyte[10] values;
426 	DWRITE_PANOSE_FAMILY familyKind;
427 	union {
428 		struct text {
429 			ubyte familyKind;
430 			DWRITE_PANOSE_SERIF_STYLE serifStyle;
431 			DWRITE_PANOSE_WEIGHT weight;
432 			DWRITE_PANOSE_PROPORTION proportion;
433 			DWRITE_PANOSE_CONTRAST contrast;
434 			DWRITE_PANOSE_STROKE_VARIATION strokeVariation;
435 			DWRITE_PANOSE_ARM_STYLE armStyle;
436 			DWRITE_PANOSE_LETTERFORM letterform;
437 			DWRITE_PANOSE_MIDLINE midline;
438 			DWRITE_PANOSE_XHEIGHT xHeight;
439 		};
440 		struct script {
441 			ubyte familyKind;
442 			DWRITE_PANOSE_TOOL_KIND toolKind;
443 			DWRITE_PANOSE_WEIGHT weight;
444 			DWRITE_PANOSE_SPACING spacing;
445 			DWRITE_PANOSE_ASPECT_RATIO aspectRatio;
446 			DWRITE_PANOSE_CONTRAST contrast;
447 			DWRITE_PANOSE_SCRIPT_TOPOLOGY scriptTopology;
448 			DWRITE_PANOSE_SCRIPT_FORM scriptForm;
449 			DWRITE_PANOSE_FINIALS finials;
450 			DWRITE_PANOSE_XASCENT xAscent;
451 		};
452 		struct decorative {
453 			ubyte familyKind;
454 			DWRITE_PANOSE_DECORATIVE_CLASS decorativeClass;
455 			DWRITE_PANOSE_WEIGHT weight;
456 			DWRITE_PANOSE_ASPECT aspect;
457 			DWRITE_PANOSE_CONTRAST contrast;
458 			ubyte serifVariant;
459 			DWRITE_PANOSE_FILL fill;
460 			DWRITE_PANOSE_LINING lining;
461 			DWRITE_PANOSE_DECORATIVE_TOPOLOGY decorativeTopology;
462 			DWRITE_PANOSE_CHARACTER_RANGES characterRange;
463 		};
464 		struct symbol {
465 			ubyte familyKind;
466 			DWRITE_PANOSE_SYMBOL_KIND symbolKind;
467 			DWRITE_PANOSE_WEIGHT weight;
468 			DWRITE_PANOSE_SPACING spacing;
469 			DWRITE_PANOSE_SYMBOL_ASPECT_RATIO aspectRatioAndContrast;
470 			DWRITE_PANOSE_SYMBOL_ASPECT_RATIO aspectRatio94;
471 			DWRITE_PANOSE_SYMBOL_ASPECT_RATIO aspectRatio119;
472 			DWRITE_PANOSE_SYMBOL_ASPECT_RATIO aspectRatio157;
473 			DWRITE_PANOSE_SYMBOL_ASPECT_RATIO aspectRatio163;
474 			DWRITE_PANOSE_SYMBOL_ASPECT_RATIO aspectRatio211;
475 		}
476 	}
477 }
478 
479 public struct DWRITE_FONT_METRICS1 {
480 	int glyphBoxLeft;
481 	int glyphBoxTop;
482 	int glyphBoxRight;
483 	int glyphBoxBottom;
484 	int subscriptPositionX;
485 	int subscriptPositionY;
486 	int subscriptSizeX;
487 	int subscriptSizeY;
488 	int superscriptPositionX;
489 	int superscriptPositionY;
490 	int superscriptSizeX;
491 	int superscriptSizeY;
492 	BOOL hasTypographicMetrics;
493 }
494 
495 public struct DWRITE_JUSTIFICATION_OPPORTUNITY {
496 	float expansionMinimum;
497 	float expansionMaximum;
498 	float compressionMaximum;
499 	mixin(bitfields!(
500 		uint, "expansionPriority", 8,
501 		uint, "compressionPriority", 8,
502 		uint, "allowResidualExpansion", 1,
503 		uint, "allowResidualCompression", 1,
504 		uint, "applyToLeadingEdge", 1,
505 		uint, "applyToTrailingEdge", 1,
506 		uint, "reserved", 12));
507 }
508 
509 public struct DWRITE_SCRIPT_PROPERTIES {
510 	uint isoScriptCode;
511 	uint isoScriptNumber;
512 	uint clusterLookahead;
513 	uint justificationCharacter;
514 	mixin(bitfields!(
515 		uint, "restrictCaretToClusters", 1,
516 		uint, "usesWordDividers", 1,
517 		uint, "isDiscreteWriting", 1,
518 		uint, "isBlockWriting", 1,
519 		uint, "isDistributedWithinCluster", 1,
520 		uint, "isConnectedWriting", 1,
521 		uint, "isCursiveWriting", 1,
522 		uint, "reserved", 25));
523 }
524 
525 public struct DWRITE_UNICODE_RANGE {
526 	uint first;
527 	uint last;
528 }
529 
530 ///
531 /// Interfaces
532 ///
533 
534 mixin(uuid!(IDWriteBitmapRenderTarget1, "791e8298-3ef3-4230-9880-c9bdecc42064"));
535 public interface IDWriteBitmapRenderTarget1 : IDWriteBitmapRenderTarget
536 {
537 extern(Windows):
538 	DWRITE_TEXT_ANTIALIAS_MODE GetTextAntialiasMode();
539 	HRESULT SetTextAntialiasMode(DWRITE_TEXT_ANTIALIAS_MODE AntialiasMode);
540 }
541 
542 mixin(uuid!(IDWriteFont1, "acd16696-8c14-4f5d-877e-fe3fc1d32738"));
543 public interface IDWriteFont1 : IDWriteFont
544 {
545 extern(Windows):
546 	void GetMetrics(DWRITE_FONT_METRICS1* FontMetrics);
547 	void GetPanose(DWRITE_PANOSE* Panose);
548 	HRESULT GetUnicodeRanges(uint MaxRangeCount, DWRITE_UNICODE_RANGE* UnicodeRanges, uint* RangeCount);
549 	BOOL IsMonospacedFont();
550 }
551 
552 mixin(uuid!(IDWriteFontFace1, "a71efdb4-9fdb-4838-ad90-cfc3be8c3daf"));
553 public interface IDWriteFontFace1 : IDWriteFontFace
554 {
555 extern(Windows):
556 	void GetCaretMetrics(DWRITE_CARET_METRICS* CaretMetrics);
557 	HRESULT GetDesignGlyphAdvances(uint Count, const short* Indices, int* Advances, BOOL IsSideways = FALSE);
558 	HRESULT GetGdiCompatibleGlyphAdvances(float EMSize, float PixelsPerDIP, const DWRITE_MATRIX* Transform, BOOL UseGDINatural, BOOL IsSideways, uint Count, ushort Indices, const int* Advances);
559 	HRESULT GetGdiCompatibleMetrics(float EMSize, float PixelsPerDIP, const DWRITE_MATRIX* Transform, DWRITE_FONT_METRICS1* FontMetrics);
560 	HRESULT GetKerningPairAdjustments(uint Count, const ushort* Indices, int* AdvanceAdjustments);
561 	void GetMetrics(DWRITE_FONT_METRICS1* FontMetrics);
562 	HRESULT GetRecommendedRenderingMode(float EMSize, float DIPX, float DIPY, const DWRITE_MATRIX* Transform, BOOL IsSideways, DWRITE_OUTLINE_THRESHOLD OutlineThreshold, DWRITE_MEASURING_MODE MeasuringMode, DWRITE_RENDERING_MODE* RenderingMode);
563 	HRESULT GetUnicodeRanges(uint MaxRangeCount, DWRITE_UNICODE_RANGE* UnicodeRanges, uint* RangeCount);
564 	HRESULT GetVerticalGlyphVariants(uint Count, const ushort* NominalGlyphIndices, ushort VerticalGlyphIndices);
565 	BOOL HasKerningPairs();
566 	BOOL HasVerticalGlyphVariants();
567 	BOOL IsMonospacedFont();
568 }
569 
570 mixin(uuid!(IDWriteRenderingParams1, "94413cf4-a6fc-4248-8b50-6674348fcad3"));
571 public interface IDWriteRenderingParams1 : IDWriteRenderingParams
572 {
573 extern(Windows):
574 	float GetGrayscaleEnhancedContrast();
575 }
576 
577 mixin(uuid!(IDWriteTextAnalysisSink1, "B0D941A0-85E7-4D8B-9FD3-5CED9934482A"));
578 public interface IDWriteTextAnalysisSink1 : IDWriteTextAnalysisSink
579 {
580 extern(Windows):
581 	HRESULT SetGlyphOrientation(uint TextPosition, uint TextLength, DWRITE_GLYPH_ORIENTATION_ANGLE GlyphOrientationAngle, ubyte AdjustedBidiLevel, BOOL IsSideways, BOOL IsRightToLeft);
582 }
583 
584 mixin(uuid!(IDWriteTextAnalysisSource1, "639CFAD8-0FB4-4B21-A58A-067920120009"));
585 public interface IDWriteTextAnalysisSource1 : IDWriteTextAnalysisSource
586 {
587 extern(Windows):
588 	HRESULT GetVerticalGlyphOrientation(uint TextPosition, uint *TextLength, DWRITE_VERTICAL_GLYPH_ORIENTATION *GlyphOrientation, ubyte *BidiLevel);
589 }
590 
591 mixin(uuid!(IDWriteTextAnalyzer1, "80DAD800-E21F-4E83-96CE-BFCCE500DB7C"));
592 public interface IDWriteTextAnalyzer1 : IDWriteTextAnalyzer
593 {
594 extern(Windows):
595 	HRESULT AnalyzeVerticalGlyphOrientation(IDWriteTextAnalysisSource AnalysisSource, uint TextPosition, uint TextLength, IDWriteTextAnalysisSink AnalysisSink);
596 	HRESULT ApplyCharacterSpacing(float LeadingSpacing, float TrailingSpacing, float MinimumAdvanceWidth, uint TextLength, uint GlyphCount, const ushort *ClusterMap, const float *GlyphAdvances, const DWRITE_GLYPH_OFFSET *GlyphOffsets, const DWRITE_SHAPING_GLYPH_PROPERTIES *GlyphProperties, float *ModifiedGlyphAdvances, DWRITE_GLYPH_OFFSET *ModifiedGlyphOffsets);
597 	HRESULT GetBaseline(IDWriteFontFace FontFace, DWRITE_BASELINE Baseline, BOOL IsVertical, BOOL IsSimulationAllowed, DWRITE_SCRIPT_ANALYSIS ScriptAnalysis, const wchar *LocaleName, int *BaselineCoordinate, BOOL *Exists);
598 	HRESULT GetGlyphOrientationTransform(DWRITE_GLYPH_ORIENTATION_ANGLE GlyphOrientationAngle, BOOL IsSideways, DWRITE_MATRIX *Transform);
599 	HRESULT GetJustificationOpportunities(IDWriteFontFace FontFace, float FontEmSize, DWRITE_SCRIPT_ANALYSIS ScriptAnalysis, uint TextLength, uint GlyphCount, const wchar *TextString, const ushort *ClusterMap, const DWRITE_SHAPING_GLYPH_PROPERTIES *GlyphProperties, DWRITE_JUSTIFICATION_OPPORTUNITY *JustificationOpportunities);
600 	HRESULT GetJustifiedGlyphs(IDWriteFontFace FontFace, float FontEmSize, DWRITE_SCRIPT_ANALYSIS ScriptAnalysis, uint TextLength, uint GlyphCount, uint MaxGlyphCount, const ushort *ClusterMap, const ushort *GlyphIndices, const float *GlyphAdvances, const float *JustifiedGlyphAdvances, const DWRITE_GLYPH_OFFSET *JustifiedGlyphOffsets, const DWRITE_SHAPING_GLYPH_PROPERTIES *GlyphProperties, uint *ActualGlyphCount, ushort *ModifiedClusterMap, ushort *ModifiedGlyphIndices, float *ModifiedGlyphAdvances, DWRITE_GLYPH_OFFSET *ModifiedGlyphOffsets);
601 	HRESULT GetScriptProperties(DWRITE_SCRIPT_ANALYSIS ScriptAnalysis, DWRITE_SCRIPT_PROPERTIES *ScriptProperties);
602 	HRESULT GetTextComplexity(const wchar *TextString, uint TextLength, IDWriteFontFace FontFace, BOOL *IsTextSimple, uint *TextLengthRead, ushort *GlyphIndices);
603 	HRESULT JustifyGlyphAdvances(float LineWidth, uint GlyphCount, const DWRITE_JUSTIFICATION_OPPORTUNITY *JustificationOpportunities, const float *GlyphAdvances, const DWRITE_GLYPH_OFFSET *GlyphOffsets, float *JustifiedGlyphAdvances, DWRITE_GLYPH_OFFSET *JustifiedGlyphOffsets);
604 }
605 
606 mixin(uuid!(IDWriteTextLayout1, "9064D822-80A7-465C-A986-DF65F78B8FEB"));
607 public interface IDWriteTextLayout1 : IDWriteTextLayout
608 {
609 extern(Windows):
610 	HRESULT GetCharacterSpacing(uint CurrentPosition, float *LeadingSpacing, float *TrailingSpacing, float *MinimumAdvanceWidth, DWRITE_TEXT_RANGE *TextRange = null);
611 	HRESULT GetPairKerning(uint CurrentPosition, BOOL *IsPairKerningEnabled, DWRITE_TEXT_RANGE *TextRange = null);
612 	HRESULT SetCharacterSpacing(float LeadingSpacing, float TrailingSpacing, float MinimumAdvanceWidth, DWRITE_TEXT_RANGE TextRange);
613 	HRESULT SetPairKerning(BOOL IsPairKerningEnabled, DWRITE_TEXT_RANGE TextRange);
614 }
615 
616 mixin(uuid!(IDWriteFactory1, "30572f99-dac6-41db-a16e-0486307e606a"));
617 public interface IDWriteFactory1 : IDWriteFactory
618 {
619 extern(Windows):
620 	HRESULT CreateCustomRenderingParams(float Gamma, float EnhancedContrast, float EnhancedContrastGrayscale, float ClearTypeLevel, DWRITE_PIXEL_GEOMETRY PixelGeometry, DWRITE_RENDERING_MODE RenderingMode, IDWriteRenderingParams1 *RenderingParams);
621 	HRESULT GetEudcFontCollection(IDWriteFontCollection *FontCollection, BOOL CheckForUpdates = FALSE);
622 }