1 module aurora.directx.dwrite.dwrite_3; 2 3 public import aurora.directx.com; 4 public import aurora.directx.dwrite.dwrite_2; 5 6 public: 7 8 /// 9 /// Constants 10 /// 11 12 alias DWRITE_MAKE_OPENTYPE_TAG DWRITE_MAKE_FONT_AXIS_TAG; 13 14 enum DWRITE_E_REMOTEFONT = 0x8898500DL; 15 enum DWRITE_E_DOWNLOADCANCELLED = 0x8898500EL; 16 enum DWRITE_E_DOWNLOADFAILED = 0x8898500FL; 17 enum DWRITE_E_TOOMANYDOWNLOADS = 0x88985010L; 18 19 /// 20 /// Functions 21 /// 22 23 /// 24 /// Enumerations 25 /// 26 27 enum DWRITE_FONT_PROPERTY_ID : int 28 { 29 NONE, 30 WEIGHT_STRETCH_STYLE_FAMILY_NAME, 31 TYPOGRAPHIC_FAMILY_NAME, 32 WEIGHT_STRETCH_STYLE_FACE_NAME, 33 FULL_NAME, 34 WIN32_FAMILY_NAME, 35 POSTSCRIPT_NAME, 36 DESIGN_SCRIPT_LANGUAGE_TAG, 37 SUPPORTED_SCRIPT_LANGUAGE_TAG, 38 SEMANTIC_TAG, 39 WEIGHT, 40 STRETCH, 41 STYLE, 42 TYPOGRAPHIC_FACE_NAME, 43 TOTAL = STYLE + 1, 44 TOTAL_RS3 = TYPOGRAPHIC_FACE_NAME + 1, 45 46 // Obsolete aliases kept to avoid breaking existing code. 47 PREFERRED_FAMILY_NAME = TYPOGRAPHIC_FAMILY_NAME, 48 FAMILY_NAME = WEIGHT_STRETCH_STYLE_FAMILY_NAME, 49 FACE_NAME = WEIGHT_STRETCH_STYLE_FACE_NAME, 50 } 51 52 enum DWRITE_LOCALITY : int 53 { 54 REMOTE, 55 PARTIAL, 56 LOCAL, 57 } 58 59 enum DWRITE_RENDERING_MODE1 : int 60 { 61 DEFAULT = DWRITE_RENDERING_MODE.DEFAULT, 62 ALIASED = DWRITE_RENDERING_MODE.ALIASED, 63 GDI_CLASSIC = DWRITE_RENDERING_MODE.GDI_CLASSIC, 64 GDI_NATURAL = DWRITE_RENDERING_MODE.GDI_NATURAL, 65 NATURAL = DWRITE_RENDERING_MODE.NATURAL, 66 NATURAL_SYMMETRIC = DWRITE_RENDERING_MODE.NATURAL_SYMMETRIC, 67 OUTLINE = DWRITE_RENDERING_MODE.OUTLINE, 68 NATURAL_SYMMETRIC_DOWNSAMPLED, 69 } 70 71 enum DWRITE_FONT_LINE_GAP_USAGE : int 72 { 73 DEFAULT, 74 DISABLED, 75 ENABLED 76 } 77 78 enum DWRITE_CONTAINER_TYPE : int 79 { 80 UNKNOWN, 81 WOFF, 82 WOFF2 83 } 84 85 enum DWRITE_FONT_AXIS_TAG : uint 86 { 87 WEIGHT = DWRITE_MAKE_FONT_AXIS_TAG('w','g','h','t'), 88 WIDTH = DWRITE_MAKE_FONT_AXIS_TAG('w','d','t','h'), 89 SLANT = DWRITE_MAKE_FONT_AXIS_TAG('s','l','n','t'), 90 OPTICAL_SIZE = DWRITE_MAKE_FONT_AXIS_TAG('o','p','s','z'), 91 ITALIC = DWRITE_MAKE_FONT_AXIS_TAG('i','t','a','l'), 92 } 93 94 enum DWRITE_FONT_FAMILY_MODEL : int 95 { 96 TYPOGRAPHIC, 97 WEIGHT_STRETCH_STYLE, 98 } 99 100 enum DWRITE_AUTOMATIC_FONT_AXES : int 101 { 102 NONE = 0x0000, 103 OPTICAL_SIZE = 0x0001, 104 } 105 106 enum DWRITE_FONT_AXIS_ATTRIBUTES : int 107 { 108 NONE = 0x0000, 109 VARIABLE = 0x0001, 110 HIDDEN = 0x0002, 111 } 112 113 enum DWRITE_GLYPH_IMAGE_FORMATS : int 114 { 115 NONE = 0x00000000, 116 TRUETYPE = 0x00000001, 117 CFF = 0x00000002, 118 COLR = 0x00000004, 119 SVG = 0x00000008, 120 PNG = 0x00000010, 121 JPEG = 0x00000020, 122 TIFF = 0x00000040, 123 PREMULTIPLIED_B8G8R8A8 = 0x00000080 124 } 125 126 /// 127 /// Structures 128 /// 129 130 struct DWRITE_FONT_PROPERTY 131 { 132 DWRITE_FONT_PROPERTY_ID propertyId; 133 const wchar* propertyValue; 134 const wchar* localeName; 135 } 136 137 struct DWRITE_LINE_SPACING 138 { 139 DWRITE_LINE_SPACING_METHOD method; 140 float height; 141 float baseline; 142 float leadingBefore; 143 DWRITE_FONT_LINE_GAP_USAGE fontLineGapUsage; 144 } 145 146 struct DWRITE_LINE_METRICS1 147 { 148 uint length; 149 uint trailingWhitespaceLength; 150 uint newlineLength; 151 float height; 152 float baseline; 153 bool isTrimmed; 154 float leadingBefore; 155 float leadingAfter; 156 } 157 158 struct DWRITE_COLOR_GLYPH_RUN1 159 { 160 DWRITE_GLYPH_RUN glyphRun; 161 DWRITE_GLYPH_RUN_DESCRIPTION *glyphRunDescription; 162 float baselineOriginX; 163 float baselineOriginY; 164 DWRITE_COLOR_F runColor; 165 uint paletteIndex; 166 DWRITE_GLYPH_IMAGE_FORMATS glyphImageFormat; 167 DWRITE_MEASURING_MODE measuringMode; 168 } 169 170 struct DWRITE_GLYPH_IMAGE_DATA 171 { 172 const void *imageData; 173 uint imageDataSize; 174 uint uniqueDataId; 175 uint pixelsPerEm; 176 D2D1_SIZE_U pixelSize; 177 D2D1_POINT_2L horizontalLeftOrigin; 178 D2D1_POINT_2L horizontalRightOrigin; 179 D2D1_POINT_2L verticalTopOrigin; 180 D2D1_POINT_2L verticalBottomOrigin; 181 } 182 183 struct DWRITE_FILE_FRAGMENT 184 { 185 ulong fileOffset; 186 ulong fragmentSize; 187 } 188 189 struct DWRITE_FONT_AXIS_VALUE 190 { 191 DWRITE_FONT_AXIS_TAG axisTag; 192 float value; 193 } 194 195 struct DWRITE_FONT_AXIS_RANGE 196 { 197 DWRITE_FONT_AXIS_TAG axisTag; 198 float minValue; 199 float maxValue; 200 } 201 202 /// 203 /// Interfaces 204 /// 205 206 mixin(uuid!(IDWriteRenderingParams3, "B7924BAA-391B-412A-8C5C-E44CC2D867DC")); 207 public interface IDWriteRenderingParams3 : IDWriteRenderingParams2 208 { 209 extern(Windows): 210 DWRITE_RENDERING_MODE1 GetRenderingMode1(); 211 } 212 213 mixin(uuid!(IDWriteFactory3, "9A1B41C3-D3BB-466A-87FC-FE67556A3B65")); 214 public interface IDWriteFactory3 : IDWriteFactory2 215 { 216 extern(Windows): 217 HRESULT CreateCustomRenderingParams(float gamma, float enhancedContrast, float grayscaleEnhancedContrast, float clearTypeLevel, DWRITE_PIXEL_GEOMETRY pixelGeometry, DWRITE_RENDERING_MODE1 renderingMode, DWRITE_GRID_FIT_MODE gridFitMode, IDWriteRenderingParams3 *renderingParams); 218 HRESULT CreateFontCollectionFromFontSet(IDWriteFontSet fontset, IDWriteFontCollection1 *fontCollection); 219 HRESULT CreateFontFaceReference(const wchar* filePath, const FILETIME* lastWriteTime, uint faceIndex, DWRITE_FONT_SIMULATIONS fontSimulations, IDWriteFontFaceReference *fontFaceReference); 220 HRESULT CreateFontFaceReference(IDWriteFontFile fontFile, uint faceIndex, DWRITE_FONT_SIMULATIONS fontSimulations, IDWriteFontFaceReference *fontFaceReference); 221 HRESULT CreateFontSetBuilder(IDWriteFontSetBuilder *fontSetBuilder); 222 HRESULT CreateGlyphRunAnalysis(const DWRITE_GLYPH_RUN *glyphRun, const DWRITE_MATRIX *transform, DWRITE_RENDERING_MODE1 renderingMode, DWRITE_MEASURING_MODE measuringMode, DWRITE_GRID_FIT_MODE gridFitMode, DWRITE_TEXT_ANTIALIAS_MODE antialiasMode, float baselineOriginX, float baselineOriginY, IDWriteGlyphRunAnalysis *glyphRunAnalysis); 223 HRESULT GetSystemFontCollection(bool includeDownloadableFonts, IDWriteFontCollection1 *fontCollection, bool includeDownloadableFonts = false); 224 HRESULT GetFontDownloadQueue(IDWriteFontDownloadQueue *fontDownloadQueue); 225 HRESULT GetSystemFontSet(IDWriteFontSet *fontSet); 226 } 227 228 mixin(uuid!(IDWriteFontSet, "53585141-D9F8-4095-8321-D73CF6BD116B")); 229 public interface IDWriteFontSet : IUnknown 230 { 231 extern(Windows): 232 uint GetFontCount(); 233 HRESULT GetFontFaceReference(uint listIndex, IDWriteFontFaceReference *fontFaceReference); 234 HRESULT FindFontFace(IDWriteFontFace fontFace, uint *listIndex, bool *exists); 235 HRESULT FindFontFaceReference(IDWriteFontFaceReference fontFaceReference, uint *listIndex, bool *exists); 236 HRESULT GetPropertyValues(uint listIndex, DWRITE_FONT_PROPERTY_ID propertyId, bool *exists, IDWriteLocalizedStrings *values); 237 HRESULT GetPropertyValues(DWRITE_FONT_PROPERTY_ID propertyId, const wchar *preferredLocaleNames, IDWriteStringList *values); 238 HRESULT GetPropertyValues(DWRITE_FONT_PROPERTY_ID propertyId, IDWriteStringList *values); 239 HRESULT GetPropertyOccurrenceCount(const DWRITE_FONT_PROPERTY *property, uint *propertyOccurrenceCount); 240 HRESULT GetMatchingFonts(const wchar *familyName, DWRITE_FONT_WEIGHT fontWeight, DWRITE_FONT_STRETCH fontStretch, DWRITE_FONT_STYLE fontStyle, IDWriteFontSet *filteredSet); 241 } 242 243 mixin(uuid!(IDWriteFontSetBuilder, "2F642AFE-9C68-4F40-B8BE-457401AFCB3D")); 244 public interface IDWriteFontSetBuilder : IUnknown 245 { 246 extern(Windows): 247 HRESULT AddFontFaceReference(IDWriteFontFaceReference fontFaceReference); 248 HRESULT AddFontFaceReference(IDWriteFontFaceReference fontFaceReference, const DWRITE_FONT_PROPERTY *properties, uint propertyCount); 249 HRESULT AddFontSet(IDWriteFontSet fontSet); 250 HRESULT CreateFontSet(IDWriteFontSet *fontSet); 251 } 252 253 mixin(uuid!(IDWriteFontCollection1, "53585141-D9F8-4095-8321-D73CF6BD116C")); 254 public interface IDWriteFontCollection1 : IDWriteFontCollection 255 { 256 extern(Windows): 257 HRESULT GetFontSet(IDWriteFontSet *fontSet); 258 HRESULT GetFontFamily(uint index, IDWriteFontFamily1* fontFamily); 259 } 260 261 mixin(uuid!(IDWriteFontFamily1, "DA20D8EF-812A-4C43-9802-62EC4ABD7ADF")); 262 public interface IDWriteFontFamily1 : IDWriteFontFamily 263 { 264 extern(Windows): 265 HRESULT GetFont(uint listIndex, IDWriteFont3 *font); 266 DWRITE_LOCALITY GetFontLocality(uint listIndex); 267 HRESULT GetFontFaceReference(uint listIndex, IDWriteFontFaceReference *fontFaceReference); 268 } 269 270 mixin(uuid!(IDWriteFontList1, "DA20D8EF-812A-4C43-9802-62EC4ABD7ADE")); 271 public interface IDWriteFontList1 : IDWriteFontList 272 { 273 extern(Windows): 274 HRESULT GetFont(uint listIndex, IDWriteFont3 *font); 275 DWRITE_LOCALITY GetFontLocality(uint listIndex); 276 HRESULT GetFontFaceReference(uint listIndex, IDWriteFontFaceReference *fontFaceReference); 277 } 278 279 mixin(uuid!(IDWriteFontFaceReference, "5E7FA7CA-DDE3-424C-89F0-9FCD6FED58CD")); 280 public interface IDWriteFontFaceReference : IUnknown 281 { 282 extern(Windows): 283 HRESULT CreateFontFace(IDWriteFontFace3 *fontFace); 284 HRESULT CreateFontFaceWithSimulations(DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags, IDWriteFontFace3 *fontFace); 285 HRESULT EnqueueCharacterDownloadRequest(const wchar *characters, uint characterCount); 286 HRESULT EnqueueFileFragmentDownloadRequest(ulong fileOffset, ulong fragmentSize); 287 HRESULT EnqueueFontDownloadRequest(); 288 HRESULT EnqueueGlyphDownloadRequest(const ushort *glyphIndices, uint glyphCount); 289 ulong GetFileSize(); 290 HRESULT GetFileTime(FILETIME *lastWriteTime); 291 uint GetFontFaceIndex(); 292 HRESULT GetFontFile(IDWriteFontFile *fontFile); 293 ulong GetLocalFileSize(); 294 DWRITE_LOCALITY GetLocality(); 295 DWRITE_FONT_SIMULATIONS GetSimulations(); 296 } 297 298 mixin(uuid!(IDWriteFont3, "DA20D8EF-812A-4C43-9802-62EC4ABD7ADE")); 299 public interface IDWriteFont3 : IDWriteFont2 300 { 301 extern(Windows): 302 HRESULT CreateFontFace(IDWriteFontFace3 *fontFace); 303 bool Equals(IDWriteFont font); 304 HRESULT GetFontFaceReference(IDWriteFontFaceReference *fontFaceReference); 305 DWRITE_LOCALITY GetLocality(); 306 } 307 308 mixin(uuid!(IDWriteFontFace3, "D37D7598-09BE-4222-A236-2081341CC1F2")); 309 public interface IDWriteFontFace3 : IDWriteFontFace2 310 { 311 extern(Windows): 312 HRESULT AreCharactersLocal(const wchar* characters, uint characterCount, bool enqueueIfNotLocal, bool *isLocal); 313 HRESULT AreGlyphsLocal(const ushort* glyphIndices, uint glyphCount, bool enqueueIfNotLocal, bool *isLocal); 314 HRESULT GetFontFaceReference(IDWriteFontFaceReference *fontFaceReference); 315 void GetPanose(DWRITE_PANOSE *panose); 316 DWRITE_FONT_WEIGHT GetWeight(); 317 DWRITE_FONT_STRETCH GetStretch(); 318 DWRITE_FONT_STYLE GetStyle(); 319 HRESULT GetFamilyNames(IDWriteLocalizedStrings *names); 320 HRESULT GetFaceNames(IDWriteLocalizedStrings *names); 321 HRESULT GetInformationalStrings(DWRITE_INFORMATIONAL_STRING_ID informationalStringID, IDWriteLocalizedStrings *informationalStrings, bool *exists); 322 bool HasCharacter(uint unicodeValue); 323 HRESULT GetRecommendedRenderingMode(float fontEmSize, float dpiX, float dpiY, const DWRITE_MATRIX *transform, bool isSideways, DWRITE_OUTLINE_THRESHOLD outlineThreshold, DWRITE_MEASURING_MODE measuringMode, IDWriteRenderingParams *renderingParams, DWRITE_RENDERING_MODE1 *renderingMode, DWRITE_GRID_FIT_MODE *gridFitMode); 324 bool IsCharacterLocal(uint unicodeValue); 325 bool IsGlyphLocal(ushort glyphId); 326 } 327 328 mixin(uuid!(IDWriteStringList, "CFEE3140-1157-47CA-8B85-31BFCF3F2D0E")); 329 public interface IDWriteStringList : IUnknown 330 { 331 extern(Windows): 332 uint GetCount(); 333 HRESULT GetLocaleName(uint listIndex, wchar *localeName, uint size); 334 HRESULT GetLocaleNameLength(uint listIndex, uint *length); 335 HRESULT GetString(uint listIndex, wchar *stringBuffer, uint stringBufferSize); 336 HRESULT GetStringLength(uint listIndex, uint *length); 337 } 338 339 mixin(uuid!(IDWriteFontDownloadListener, "B06FE5B9-43EC-4393-881B-DBE4DC72FDA7")); 340 public interface IDWriteFontDownloadListener : IUnknown 341 { 342 extern(Windows): 343 void DownloadCompleted(IDWriteFontDownloadQueue downloadQueue, IUnknown context, HRESULT downloadResult); 344 } 345 346 mixin(uuid!(IDWriteFontDownloadQueue, "B71E6052-5AEA-4FA3-832E-F60D431F7E91")); 347 public interface IDWriteFontDownloadQueue : IUnknown 348 { 349 extern(Windows): 350 HRESULT AddListener(IDWriteFontDownloadListener listener, uint *token); 351 HRESULT BeginDownload(IUnknown context = null); 352 HRESULT CancelDownload(); 353 ulong GetGenerationCount(); 354 bool IsEmpty(); 355 HRESULT RemoveListener(uint token); 356 } 357 358 mixin(uuid!(IDWriteGdiInterop1, "4556BE70-3ABD-4F70-90BE-421780A6F515")); 359 public interface IDWriteGdiInterop1 : IDWriteGdiInterop 360 { 361 extern(Windows): 362 HRESULT CreateFontFromLOGFONT(LOGFONTW logFont, IDWriteFontCollection fontCollection, IDWriteFont *font); 363 HRESULT GetMatchingFontsByLOGFONT(LOGFONT logFont, IDWriteFontSet fontSet, IDWriteFontSet *filteredSet); 364 HRESULT GetFontSignature(IDWriteFont font, FONTSIGNATURE *fontSignature); 365 HRESULT GetFontSignature(IDWriteFontFace fontFace, FONTSIGNATURE *fontSignature); 366 } 367 368 mixin(uuid!(IDWriteTextFormat2, "F67E0EDD-9E3D-4ECC-8C32-4183253DFE70")); 369 public interface IDWriteTextFormat2 : IDWriteTextFormat1 370 { 371 extern(Windows): 372 HRESULT GetLineSpacing(DWRITE_LINE_SPACING *lineSpacingMethod); 373 HRESULT SetLineSpacing(const DWRITE_LINE_SPACING *lineSpacingOptions); 374 } 375 376 mixin(uuid!(IDWriteTextLayout3, "07DDCD52-020E-4DE8-AC33-6C953D83F92D")); 377 public interface IDWriteTextLayout3 : IDWriteTextLayout2 378 { 379 extern(Windows): 380 HRESULT GetLineMetrics(DWRITE_LINE_METRICS1 *lineMetrics, uint maxLineCount, uint *actualLineCount); 381 HRESULT GetLineSpacing(DWRITE_LINE_SPACING *lineSpacingOptions); 382 HRESULT InvalidateLayout(); 383 HRESULT SetLineSpacing(const DWRITE_LINE_SPACING *lineSpacingOptions); 384 } 385 386 mixin(uuid!(IDWriteColorGlyphRunEnumerator1, "7C5F86DA-C7A1-4F05-B8E1-55A179FE5A35")); 387 public interface IDWriteColorGlyphRunEnumerator1 : IDWriteColorGlyphRunEnumerator 388 { 389 extern(Windows): 390 HRESULT GetCurrentRun(DWRITE_COLOR_GLYPH_RUN1 colorGlyphRun); 391 } 392 393 mixin(uuid!(IDWriteFontFace4, "27F2A904-4EB8-441D-9678-0563F53E3E2F")); 394 public interface IDWriteFontFace4 : IDWriteFontFace3 395 { 396 extern(Windows): 397 HRESULT GetGlyphImageData(ushort glyphId, uint pixelsPerEm, DWRITE_GLYPH_IMAGE_FORMATS glyphImageFormat, DWRITE_GLYPH_IMAGE_DATA *glyphData, void **glyphDataContext); 398 DWRITE_GLYPH_IMAGE_FORMATS GetGlyphImageFormats(); 399 HRESULT GetGlyphImageFormats(ushort glyphId, uint pixelsPerEmFirst, uint pixelsPerEmLast, DWRITE_GLYPH_IMAGE_FORMATS *glyphImageFormats); 400 void ReleaseGlyphImageData(void *glyphDataContext); 401 } 402 403 mixin(uuid!(IDWriteFactory4, "4B0B5BD3-0797-4549-8AC5-FE915CC53856")); 404 public interface IDWriteFactory4 : IDWriteFactory3 405 { 406 extern(Windows): 407 HRESULT ComputeGlyphOrigins(DWRITE_GLYPH_RUN glyphRun, DWRITE_MEASURING_MODE measuringMode, D2D1_POINT_2F baselineOrigin, DWRITE_MATRIX worldAndDpiTransform, D2D1_POINT_2F *glyphOrigins); 408 HRESULT ComputeGlyphOrigins(DWRITE_GLYPH_RUN glyphRun, D2D1_POINT_2F baselineOrigin, D2D1_POINT_2F *glyphOrigins); 409 HRESULT TranslateColorGlyphRun(D2D1_POINT_2F baselineOrigin, DWRITE_GLYPH_RUN glyphRun, DWRITE_GLYPH_RUN_DESCRIPTION glyphRunDescription, DWRITE_GLYPH_IMAGE_FORMATS desiredGlyphImageFormats, DWRITE_MEASURING_MODE measuringMode, DWRITE_MATRIX worldAndDpiTransform, uint colorPaletteIndex, IDWriteColorGlyphRunEnumerator1 *colorLayers); 410 } 411 412 mixin(uuid!(IDWriteFontSetBuilder1, "3FF7715F-3CDC-4DC6-9B72-EC5621DCCAFD")); 413 public interface IDWriteFontSetBuilder1 : IDWriteFontSetBuilder 414 { 415 extern(Windows): 416 HRESULT AddFontFile(IDWriteFontFile fontFile); 417 } 418 419 mixin(uuid!(IDWriteAsyncResult, "CE25F8FD-863B-4D13-9651-C1F88DC73FE2")); 420 public interface IDWriteAsyncResult : IUnknown 421 { 422 extern(Windows): 423 HRESULT GetResult(); 424 HANDLE GetWaitHandle(); 425 } 426 427 mixin(uuid!(IDWriteRemoteFontFileStream, "4DB3757A-2C72-4ED9-B2B6-1ABABE1AFF9C")); 428 public interface IDWriteRemoteFontFileStream : IDWriteFontFileStream 429 { 430 extern(Windows): 431 HRESULT BeginDownload(UUID downloadOperationID, DWRITE_FILE_FRAGMENT fileFragments, uint fragmentCount, IDWriteAsyncResult* asyncResult); 432 HRESULT GetFileFragmentLocality(ulong fileOffset, ulong fragmentSize, bool *isLocal, ulong *partialSize); 433 HRESULT GetLocalFileSize(ulong *localFileSize); 434 DWRITE_LOCALITY GetLocality(); 435 } 436 437 mixin(uuid!(IDWriteRemoteFontFileLoader, "68648C83-6EDE-46C0-AB46-20083A887FDE")); 438 public interface IDWriteRemoteFontFileLoader : IDWriteFontFileLoader 439 { 440 extern(Windows): 441 HRESULT CreateFontFileReferenceFromUrl(IDWriteFactory factory, const wchar* baseUrl, const wchar* fontFileUrl, IDWriteFontFile *fontFile); 442 HRESULT CreateRemoteStreamFromKey(const void *fontFileReferenceKey, uint fontFileReferenceKeySize, IDWriteRemoteFontFileStream *fontFileStream); 443 HRESULT GetLocalityFromKey(const void *fontFileReferenceKey, uint fontFileReferenceKeySize, DWRITE_LOCALITY *locality); 444 } 445 446 mixin(uuid!(IDWriteInMemoryFontFileLoader, "DC102F47-A12D-4B1C-822D-9E117E33043F")); 447 public interface IDWriteInMemoryFontFileLoader : IDWriteFontFileLoader 448 { 449 extern(Windows): 450 HRESULT CreateInMemoryFontFileReference(IDWriteFactory factory, const void *fontData, uint fontDataSize, IUnknown ownerObject, IDWriteFontFile *fontFile); 451 uint GetFileCount(); 452 } 453 454 mixin(uuid!(IDWriteFactory5, "958DB99A-BE2A-4F09-AF7D-65189803D1D3")); 455 public interface IDWriteFactory5 : IDWriteFactory4 456 { 457 extern(Windows): 458 DWRITE_CONTAINER_TYPE AnalyzeContainerType(void *fileData, uint fileDataSize); 459 HRESULT CreateFontSetBuilder(IDWriteFontSetBuilder1 *fontSetBuilder); 460 HRESULT CreateHttpFontFileLoader(const wchar *referrerUrl, const wchar *extraHeaders, IDWriteRemoteFontFileLoader *newLoader); 461 HRESULT CreateInMemoryFontFileLoader(IDWriteInMemoryFontFileLoader *newLoader); 462 HRESULT UnpackFontFile(DWRITE_CONTAINER_TYPE containerType, void *fileData, uint fileDataSize, IDWriteFontFileStream *unpackedFontStream); 463 } 464 465 mixin(uuid!(IDWriteFactory6, "F3744D80-21F7-42EB-B35D-995BC72FC223")); 466 interface IDWriteFactory6 : IDWriteFactory5 467 { 468 extern(Windows): 469 HRESULT CreateFontFaceReference(IDWriteFontFile fontFile, uint faceIndex, DWRITE_FONT_SIMULATIONS fontSimulations, const DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount, IDWriteFontFaceReference1* fontFaceReference); 470 HRESULT CreateFontResource(IDWriteFontFile fontFile, uint faceIndex, IDWriteFontResource* fontResource); 471 HRESULT GetSystemFontSet(bool includeDownloadableFonts, IDWriteFontSet1* fontSet); 472 HRESULT GetSystemFontCollection( bool includeDownloadableFonts, DWRITE_FONT_FAMILY_MODEL fontFamilyModel, IDWriteFontCollection2* fontCollection); 473 HRESULT CreateFontCollectionFromFontSet(IDWriteFontSet* fontSet, DWRITE_FONT_FAMILY_MODEL fontFamilyModel, IDWriteFontCollection2* fontCollection); 474 HRESULT CreateFontSetBuilder(IDWriteFontSetBuilder2* fontSetBuilder); 475 HRESULT CreateTextFormat(const wchar* fontFamilyName, IDWriteFontCollection fontCollection, const DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount, float fontSize, const wchar* localeName, IDWriteTextFormat3* textFormat); 476 } 477 478 mixin(uuid!(IDWriteFontFace5, "98EFF3A5-B667-479A-B145-E2FA5B9FDC29")); 479 interface IDWriteFontFace5 : IDWriteFontFace4 480 { 481 extern(Windows): 482 uint GetFontAxisValueCount(); 483 HRESULT GetFontAxisValues(DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount); 484 bool HasVariations(); 485 HRESULT GetFontResource(IDWriteFontResource* fontResource); 486 bool Equals(IDWriteFontFace* fontFace); 487 } 488 489 mixin(uuid!(IDWriteFontResource, "1F803A76-6871-48E8-987F-B975551C50F2")); 490 interface IDWriteFontResource : IUnknown 491 { 492 extern(Windows): 493 HRESULT GetFontFile(IDWriteFontFile* fontFile); 494 uint GetFontFaceIndex(); 495 uint GetFontAxisCount(); 496 HRESULT GetDefaultFontAxisValues(DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount); 497 HRESULT GetFontAxisRanges(DWRITE_FONT_AXIS_RANGE* fontAxisRanges, uint fontAxisRangeCount); 498 DWRITE_FONT_AXIS_ATTRIBUTES GetFontAxisAttributes(uint axisIndex); 499 HRESULT GetAxisNames(uint axisIndex, IDWriteLocalizedStrings* names); 500 uint GetAxisValueNameCount(uint axisIndex); 501 HRESULT GetAxisValueNames(uint axisIndex, uint axisValueIndex, DWRITE_FONT_AXIS_RANGE* fontAxisRange, IDWriteLocalizedStrings* names); 502 bool HasVariations(); 503 HRESULT CreateFontFace( DWRITE_FONT_SIMULATIONS fontSimulations, const DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount, IDWriteFontFace5* fontFace); 504 HRESULT CreateFontFaceReference(DWRITE_FONT_SIMULATIONS fontSimulations, const DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount, IDWriteFontFaceReference1* fontFaceReference ); 505 } 506 507 mixin(uuid!(IDWriteFontFaceReference1, "C081FE77-2FD1-41AC-A5A3-34983C4BA61A")); 508 interface IDWriteFontFaceReference1 : IDWriteFontFaceReference 509 { 510 extern(Windows): 511 HRESULT CreateFontFace(IDWriteFontFace5* fontFace); 512 uint GetFontAxisValueCount(); 513 HRESULT GetFontAxisValues(DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount); 514 } 515 516 mixin(uuid!(IDWriteFontSetBuilder2, "EE5BA612-B131-463C-8F4F-3189B9401E45")); 517 interface IDWriteFontSetBuilder2 : IDWriteFontSetBuilder1 518 { 519 extern(Windows): 520 HRESULT AddFont(IDWriteFontFile fontFile, uint fontFaceIndex, DWRITE_FONT_SIMULATIONS fontSimulations, const DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount, const DWRITE_FONT_AXIS_RANGE* fontAxisRanges, uint fontAxisRangeCount, const DWRITE_FONT_PROPERTY* properties, uint propertyCount); 521 HRESULT AddFontFile(const wchar* filePath); 522 } 523 524 525 mixin(uuid!(IDWriteFontSet1, "7E9FDA85-6C92-4053-BC47-7AE3530DB4D3")); 526 interface IDWriteFontSet1 : IDWriteFontSet 527 { 528 extern(Windows): 529 HRESULT GetMatchingFonts(const DWRITE_FONT_PROPERTY* fontProperty, const DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount, IDWriteFontSet1* matchingFonts); 530 HRESULT GetFirstFontResources(IDWriteFontSet1* filteredFontSet); 531 HRESULT GetFilteredFonts(const DWRITE_FONT_PROPERTY* properties, uint propertyCount, bool selectAnyProperty, IDWriteFontSet1* filteredFontSet); 532 HRESULT GetFilteredFonts(const DWRITE_FONT_AXIS_RANGE* fontAxisRanges, uint fontAxisRangeCount, bool selectAnyRange, IDWriteFontSet1* filteredFontSet); 533 HRESULT GetFilteredFonts(const uint* indices, uint indexCount, IDWriteFontSet1* filteredFontSet); 534 HRESULT GetFilteredFontIndices(const DWRITE_FONT_PROPERTY* properties, uint propertyCount, bool selectAnyProperty, uint* indices, uint maxIndexCount, uint* actualIndexCount); 535 HRESULT GetFilteredFontIndices(const DWRITE_FONT_AXIS_RANGE* fontAxisRanges, uint fontAxisRangeCount, bool selectAnyRange, uint* indices, uint maxIndexCount, uint* actualIndexCount); 536 HRESULT GetFontAxisRanges(DWRITE_FONT_AXIS_RANGE* fontAxisRanges, uint maxFontAxisRangeCount, uint* actualFontAxisRangeCount); 537 HRESULT GetFontAxisRanges(uint listIndex, DWRITE_FONT_AXIS_RANGE* fontAxisRanges, uint maxFontAxisRangeCount, uint* actualFontAxisRangeCount); 538 HRESULT GetFontFaceReference(uint listIndex, IDWriteFontFaceReference1* fontFaceReference); 539 HRESULT CreateFontResource(uint listIndex, IDWriteFontResource* fontResource ); 540 HRESULT CreateFontFace(uint listIndex, IDWriteFontFace5* fontFace); 541 DWRITE_LOCALITY GetFontLocality(uint listIndex); 542 } 543 544 mixin(uuid!(IDWriteFontList2, "C0763A34-77AF-445A-B735-08C37B0A5BF5")); 545 interface IDWriteFontList2 : IDWriteFontList1 546 { 547 extern(Windows): 548 HRESULT GetFontSet(IDWriteFontSet1* fontSet); 549 } 550 551 mixin(uuid!(IDWriteFontFamily2, "3ED49E77-A398-4261-B9CF-C126C2131EF3")); 552 interface IDWriteFontFamily2 : IDWriteFontFamily1 553 { 554 extern(Windows): 555 HRESULT GetMatchingFonts(const DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount, IDWriteFontList2* matchingFonts); 556 HRESULT GetFontSet(IDWriteFontSet1* fontSet); 557 } 558 559 mixin(uuid!(IDWriteFontCollection2, "514039C6-4617-4064-BF8B-92EA83E506E0")); 560 interface IDWriteFontCollection2 : IDWriteFontCollection1 561 { 562 extern(Windows): 563 HRESULT GetFontFamily(uint index, IDWriteFontFamily2* fontFamily); 564 HRESULT GetMatchingFonts(const wchar* familyName, const DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount, IDWriteFontList2* fontList); 565 DWRITE_FONT_FAMILY_MODEL GetFontFamilyModel(); 566 HRESULT GetFontSet(IDWriteFontSet1* fontSet); 567 } 568 569 mixin(uuid!(IDWriteTextLayout4, "05A9BF42-223F-4441-B5FB-8263685F55E9")); 570 interface IDWriteTextLayout4 : IDWriteTextLayout3 571 { 572 extern(Windows): 573 HRESULT SetFontAxisValues(const DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount, DWRITE_TEXT_RANGE textRange); 574 uint GetFontAxisValueCount(uint currentPosition); 575 HRESULT GetFontAxisValues(uint currentPosition, DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount, DWRITE_TEXT_RANGE* textRange = null); 576 HRESULT SetAutomaticFontAxes(DWRITE_AUTOMATIC_FONT_AXES automaticFontAxes); 577 } 578 579 mixin(uuid!(IDWriteTextFormat3, "6D3B5641-E550-430D-A85B-B7BF48A93427")); 580 interface IDWriteTextFormat3 : IDWriteTextFormat2 581 { 582 extern(Windows): 583 HRESULT SetFontAxisValues(const DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount); 584 uint GetFontAxisValueCount(); 585 HRESULT GetFontAxisValues(DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount); 586 DWRITE_AUTOMATIC_FONT_AXES GetAutomaticFontAxes(); 587 HRESULT SetAutomaticFontAxes(DWRITE_AUTOMATIC_FONT_AXES automaticFontAxes); 588 } 589 590 mixin(uuid!(IDWriteFontFallback1, "2397599D-DD0D-4681-BD6A-F4F31EAADE77")); 591 interface IDWriteFontFallback1 : IDWriteFontFallback 592 { 593 extern(Windows): 594 HRESULT MapCharacters(IDWriteTextAnalysisSource analysisSource, uint textPosition, uint textLength, IDWriteFontCollection baseFontCollection, const wchar* baseFamilyName, const DWRITE_FONT_AXIS_VALUE* fontAxisValues, uint fontAxisValueCount, uint* mappedLength, float* scale, IDWriteFontFace5* mappedFontFace); 595 } 596 597 //Windows 1803 598 599 mixin(uuid!(IDWriteFontSet2, "DC7EAD19-E54C-43AF-B2DA-4E2B79BA3F7F")); 600 interface IDWriteFontSet2 : IDWriteFontSet1 601 { 602 extern(Windows): 603 HANDLE GetExpirationEvent(); 604 } 605 606 mixin(uuid!(IDWriteFontCollection3, "A4D055A6-F9E3-4E25-93B7-9E309F3AF8E9")); 607 interface IDWriteFontCollection3 : IDWriteFontCollection2 608 { 609 extern(Windows): 610 HANDLE GetExpirationEvent(); 611 } 612 613 mixin(uuid!(IDWriteFactory7, "35D0E0B3-9076-4D2E-A016-A91B568A06B4")); 614 interface IDWriteFactory7 : IDWriteFactory6 615 { 616 extern(Windows): 617 HRESULT GetSystemFontSet(bool includeDownloadableFonts, IDWriteFontSet2* fontSet); 618 HRESULT GetSystemFontCollection(bool includeDownloadableFonts, DWRITE_FONT_FAMILY_MODEL fontFamilyModel, IDWriteFontCollection3* fontCollection); 619 } 620 621 //Windows 1809 622 623 enum DWRITE_FONT_SOURCE_TYPE 624 { 625 DWRITE_FONT_SOURCE_TYPE_UNKNOWN, 626 DWRITE_FONT_SOURCE_TYPE_PER_MACHINE, 627 DWRITE_FONT_SOURCE_TYPE_PER_USER, 628 DWRITE_FONT_SOURCE_TYPE_APPX_PACKAGE, 629 DWRITE_FONT_SOURCE_TYPE_REMOTE_FONT_PROVIDER 630 }; 631 632 mixin(uuid!(IDWriteFontSet3, "7C073EF2-A7F4-4045-8C32-8AB8AE640F90")); 633 interface IDWriteFontSet3 : IDWriteFontSet2 634 { 635 extern(Windows): 636 DWRITE_FONT_SOURCE_TYPE GetFontSourceType(uint fontIndex); 637 uint GetFontSourceNameLength(uint listIndex); 638 HRESULT GetFontSourceName(uint listIndex, wchar* stringBuffer, uint stringBufferSize); 639 }