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