Dear list,

Please find attached a patch which updates the dwrite_3 header.
It's not the whole of it, just the necessary part which serves to
compile font support of the vstgui software.

More precisely it's about this code here:
https://github.com/steinbergmedia/vstgui/blob/develop/vstgui/lib/platform/win32/direct2d/d2dfont.cpp

Please mind that, although I'm moderately confident in the changes, it
is my first attempt at a contribution to the mingw-w64 project.
:)

Best. -JPC
>From f72ff5521fe1373730fddeabe7efc13d7bdcff06 Mon Sep 17 00:00:00 2001
From: Jean Pierre Cimalando <jp-...@inbox.ru>
Date: Sat, 5 Sep 2020 13:09:56 +0200
Subject: [PATCH] dwrite_3: update with some new classes

This adds the following interfaces.
These are desired in order to be able to build font support in vstgui.
- IDWriteRenderingParams3
- IDWriteFactory3
- IDWriteFontSet
- IDWriteFontSetBuilder
- IDWriteFontCollection1
- IDWriteStringList
- IDWriteFontDownloadListener
- IDWriteFontDownloadQueue
- IDWriteColorGlyphRunEnumerator1
- IDWriteFactory4
- IDWriteFontSetBuilder1
- IDWriteAsyncResult
- IDWriteRemoteFontFileStream
- IDWriteRemoteFontFileLoader
- IDWriteInMemoryFontFileLoader
- IDWriteFactory5

Signed-off-by: Jean Pierre Cimalando <jp-...@inbox.ru>
---
 mingw-w64-headers/include/dwrite_3.h | 1328 ++++++++++++++++++++++++++
 1 file changed, 1328 insertions(+)

diff --git a/mingw-w64-headers/include/dwrite_3.h 
b/mingw-w64-headers/include/dwrite_3.h
index 9c171731..b993b1a9 100644
--- a/mingw-w64-headers/include/dwrite_3.h
+++ b/mingw-w64-headers/include/dwrite_3.h
@@ -60,10 +60,470 @@ struct DWRITE_FONT_AXIS_RANGE {
     FLOAT maxValue;
 };
 
+enum DWRITE_FONT_PROPERTY_ID {
+    DWRITE_FONT_PROPERTY_ID_NONE,
+    DWRITE_FONT_PROPERTY_ID_WEIGHT_STRETCH_STYLE_FAMILY_NAME,
+    DWRITE_FONT_PROPERTY_ID_TYPOGRAPHIC_FAMILY_NAME,
+    DWRITE_FONT_PROPERTY_ID_WEIGHT_STRETCH_STYLE_FACE_NAME,
+    DWRITE_FONT_PROPERTY_ID_FULL_NAME,
+    DWRITE_FONT_PROPERTY_ID_WIN32_FAMILY_NAME,
+    DWRITE_FONT_PROPERTY_ID_POSTSCRIPT_NAME,
+    DWRITE_FONT_PROPERTY_ID_DESIGN_SCRIPT_LANGUAGE_TAG,
+    DWRITE_FONT_PROPERTY_ID_SUPPORTED_SCRIPT_LANGUAGE_TAG,
+    DWRITE_FONT_PROPERTY_ID_SEMANTIC_TAG,
+    DWRITE_FONT_PROPERTY_ID_WEIGHT,
+    DWRITE_FONT_PROPERTY_ID_STRETCH,
+    DWRITE_FONT_PROPERTY_ID_STYLE,
+    DWRITE_FONT_PROPERTY_ID_TYPOGRAPHIC_FACE_NAME,
+    DWRITE_FONT_PROPERTY_ID_TOTAL,
+    DWRITE_FONT_PROPERTY_ID_TOTAL_RS3,
+    DWRITE_FONT_PROPERTY_ID_PREFERRED_FAMILY_NAME,
+    DWRITE_FONT_PROPERTY_ID_FAMILY_NAME,
+    DWRITE_FONT_PROPERTY_ID_FACE_NAME
+};
+
+struct DWRITE_FONT_PROPERTY {
+    DWRITE_FONT_PROPERTY_ID propertyId;
+    WCHAR const *propertyValue;
+    WCHAR const *localeName;
+};
+
+enum DWRITE_CONTAINER_TYPE
+{
+    DWRITE_CONTAINER_TYPE_UNKNOWN,
+    DWRITE_CONTAINER_TYPE_WOFF,
+    DWRITE_CONTAINER_TYPE_WOFF2
+};
+
+enum DWRITE_LOCALITY {
+  DWRITE_LOCALITY_REMOTE,
+  DWRITE_LOCALITY_PARTIAL,
+  DWRITE_LOCALITY_LOCAL
+};
+
+interface IDWriteFontSet;
+interface IDWriteFontSetBuilder;
+interface IDWriteFontCollection1;
+interface IDWriteStringList;
+interface IDWriteFontDownloadQueue;
 interface IDWriteFontResource;
 interface IDWriteFontFaceReference1;
 interface IDWriteFontFaceReference;
 
+
+#undef  INTERFACE
+#define INTERFACE IDWriteRenderingParams3
+DECLARE_INTERFACE_(IDWriteRenderingParams3,IDWriteRenderingParams2)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteRenderingParams methods */
+    STDMETHOD_(FLOAT, GetGamma)(THIS) PURE;
+    STDMETHOD_(FLOAT, GetEnhancedContrast)(THIS) PURE;
+    STDMETHOD_(FLOAT, GetClearTypeLevel)(THIS) PURE;
+    STDMETHOD_(DWRITE_PIXEL_GEOMETRY, GetPixelGeometry)(THIS) PURE;
+    STDMETHOD_(DWRITE_RENDERING_MODE, GetRenderingMode)(THIS) PURE;
+
+    /* IDWriteRenderingParams1 methods */
+    STDMETHOD_(FLOAT, GetGrayscaleEnhancedContrast)(THIS) PURE;
+
+    /* IDWriteRenderingParams2 methods */
+    STDMETHOD_(DWRITE_GRID_FIT_MODE, GetGridFitMode)(THIS) PURE;
+#endif
+
+    /* IDWriteRenderingParams3 methods */
+    STDMETHOD_(DWRITE_RENDERING_MODE1, GetRenderingMode1)(THIS) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteRenderingParams3, 
0xb7924baa,0x391b,0x412a,0x8c,0x5c,0xe4,0x4c,0xc2,0xd8,0x67,0xdc)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFactory3
+DECLARE_INTERFACE_(IDWriteFactory3,IDWriteFactory2)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteFactory methods */
+    STDMETHOD(GetSystemFontCollection)(THIS_
+        IDWriteFontCollection **fontCollection,
+        WINBOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
+
+    STDMETHOD(CreateCustomFontCollection)(THIS_
+        IDWriteFontCollectionLoader *collectionLoader,
+        void const *collectionKey,
+        UINT32 collectionKeySize,
+        IDWriteFontCollection **fontCollection) PURE;
+
+    STDMETHOD(RegisterFontCollectionLoader)(THIS_
+        IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
+
+    STDMETHOD(UnregisterFontCollectionLoader)(THIS_
+        IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
+
+    STDMETHOD(CreateFontFileReference)(THIS_
+        WCHAR const *filePath,
+        FILETIME const *lastWriteTime,
+        IDWriteFontFile **fontFile) PURE;
+
+    STDMETHOD(CreateCustomFontFileReference)(THIS_
+        void const *fontFileReferenceKey,
+        UINT32 fontFileReferenceKeySize,
+        IDWriteFontFileLoader *fontFileLoader,
+        IDWriteFontFile **fontFile) PURE;
+
+    STDMETHOD(CreateFontFace)(THIS_
+        DWRITE_FONT_FACE_TYPE fontFaceType,
+        UINT32 numberOfFiles,
+        IDWriteFontFile *const *fontFiles,
+        UINT32 faceIndex,
+        DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags,
+        IDWriteFontFace **fontFace) PURE;
+
+    STDMETHOD(CreateRenderingParams)(THIS_
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(CreateMonitorRenderingParams)(THIS_
+        HMONITOR monitor,
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(RegisterFontFileLoader)(THIS_
+        IDWriteFontFileLoader *fontFileLoader) PURE;
+
+    STDMETHOD(UnregisterFontFileLoader)(THIS_
+        IDWriteFontFileLoader *fontFileLoader) PURE;
+
+    STDMETHOD(CreateTextFormat)(THIS_
+        WCHAR const *fontFamilyName,
+        IDWriteFontCollection *fontCollection,
+        DWRITE_FONT_WEIGHT fontWeight,
+        DWRITE_FONT_STYLE fontStyle,
+        DWRITE_FONT_STRETCH fontStretch,
+        FLOAT fontSize,
+        WCHAR const *localeName,
+        IDWriteTextFormat **textFormat) PURE;
+
+    STDMETHOD(CreateTypography)(THIS_
+        IDWriteTypography **typography) PURE;
+
+    STDMETHOD(GetGdiInterop)(THIS_
+        IDWriteGdiInterop **gdiInterop) PURE;
+
+    STDMETHOD(CreateTextLayout)(THIS_
+        WCHAR const *string,
+        UINT32 stringLength,
+        IDWriteTextFormat *textFormat,
+        FLOAT maxWidth,
+        FLOAT maxHeight,
+        IDWriteTextLayout **textLayout) PURE;
+
+    STDMETHOD(CreateGdiCompatibleTextLayout)(THIS_
+        WCHAR const *string,
+        UINT32 stringLength,
+        IDWriteTextFormat *textFormat,
+        FLOAT layoutWidth,
+        FLOAT layoutHeight,
+        FLOAT pixelsPerDip,
+        DWRITE_MATRIX const *transform,
+        WINBOOL useGdiNatural,
+        IDWriteTextLayout **textLayout) PURE;
+
+    STDMETHOD(CreateEllipsisTrimmingSign)(THIS_
+        IDWriteTextFormat *textFormat,
+        IDWriteInlineObject **trimmingSign) PURE;
+
+    STDMETHOD(CreateTextAnalyzer)(THIS_
+        IDWriteTextAnalyzer **textAnalyzer) PURE;
+
+    STDMETHOD(CreateNumberSubstitution)(THIS_
+        DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod,
+        WCHAR const *localeName,
+        WINBOOL ignoreUserOverride,
+        IDWriteNumberSubstitution **numberSubstitution) PURE;
+
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        FLOAT pixelsPerDip,
+        DWRITE_MATRIX const *transform,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_MEASURING_MODE measuringMode,
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
+
+    /* IDWriteFactory1 methods */
+    STDMETHOD(GetEudcFontCollection)(THIS_
+        IDWriteFontCollection **fontCollection,
+        BOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT enhancedContrastGrayscale,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        IDWriteRenderingParams1 **renderingParams) PURE;
+
+    /* IDWriteFactory2 methods */
+    STDMETHOD(GetSystemFontFallback)(THIS_
+        IDWriteFontFallback **fontFallback) PURE;
+
+    STDMETHOD(CreateFontFallbackBuilder)(THIS_
+        IDWriteFontFallbackBuilder **fontFallbackBuilder) PURE;
+
+    STDMETHOD(TranslateColorGlyphRun)(THIS_
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_GLYPH_RUN_DESCRIPTION const *glyphRunDescription,
+        DWRITE_MEASURING_MODE measuringMode,
+        DWRITE_MATRIX const *worldToDeviceTransform,
+        UINT32 colorPaletteIndex,
+        IDWriteColorGlyphRunEnumerator **colorLayers) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT grayscaleEnhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_GRID_FIT_MODE gridFitMode,
+        IDWriteRenderingParams2 **renderingParams) PURE;
+
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_MATRIX const *transform,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_MEASURING_MODE measuringMode,
+        DWRITE_GRID_FIT_MODE gridFitMode,
+        DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
+#endif
+
+    /* IDWriteFactory3 methods */
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_MATRIX const *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) PURE;
+
+#ifdef __cplusplus
+    using IDWriteFactory::CreateGlyphRunAnalysis;
+    using IDWriteFactory2::CreateGlyphRunAnalysis;
+#endif
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT grayscaleEnhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE1 renderingMode,
+        DWRITE_GRID_FIT_MODE gridFitMode,
+        IDWriteRenderingParams3 **renderingParams) PURE;
+
+#ifdef __cplusplus
+    using IDWriteFactory::CreateCustomRenderingParams;
+    using IDWriteFactory1::CreateCustomRenderingParams;
+    using IDWriteFactory2::CreateCustomRenderingParams;
+#endif
+
+    STDMETHOD(CreateFontFaceReference)(THIS_
+        WCHAR const *filePath,
+        FILETIME const *lastWriteTime,
+        UINT32 faceIndex,
+        DWRITE_FONT_SIMULATIONS fontSimulations,
+        IDWriteFontFaceReference **fontFaceReference) PURE;
+    STDMETHOD(CreateFontFaceReference)(THIS_
+        IDWriteFontFile *fontFile,
+        UINT32 faceIndex,
+        DWRITE_FONT_SIMULATIONS fontSimulations,
+        IDWriteFontFaceReference **fontFaceReference) PURE;
+    STDMETHOD(GetSystemFontSet)(THIS_
+        IDWriteFontSet **fontSet) PURE;
+    STDMETHOD(CreateFontSetBuilder)(THIS_
+        IDWriteFontSetBuilder **fontSetBuilder) PURE;
+    STDMETHOD(CreateFontCollectionFromFontSet)(THIS_
+        IDWriteFontSet *fontSet,
+        IDWriteFontCollection1 **fontCollection) PURE;
+#ifdef __cplusplus
+    STDMETHOD(GetSystemFontCollection)(THIS_
+        BOOL includeDownloadableFonts,
+        IDWriteFontCollection1 **fontCollection,
+        BOOL checkForUpdates = FALSE) PURE;
+#else
+    STDMETHOD(GetSystemFontCollection)(THIS_
+        BOOL includeDownloadableFonts,
+        IDWriteFontCollection1 **fontCollection,
+        BOOL checkForUpdates) PURE;
+#endif
+
+#ifdef __cplusplus
+    using IDWriteFactory::GetSystemFontCollection;
+#endif
+
+    STDMETHOD(GetFontDownloadQueue)(THIS_ IDWriteFontDownloadQueue 
**fontDownloadQueue) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFactory3, 
0x9a1b41c3,0xd3bb,0x466a,0x87,0xfc,0xfe,0x67,0x55,0x6a,0x3b,0x65)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontSet
+DECLARE_INTERFACE_(IDWriteFontSet,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteFontSet methods */
+    STDMETHOD_(UINT32, GetFontCount)(THIS) PURE;
+    STDMETHOD(GetFontFaceReference)(THIS_
+        UINT32 listIndex,
+        IDWriteFontFaceReference **fontFaceReference) PURE;
+    STDMETHOD(FindFontFaceReference)(THIS_
+        IDWriteFontFaceReference *fontFaceReference,
+        UINT32 *listIndex,
+        BOOL *exists) PURE;
+    STDMETHOD(FindFontFace)(THIS_
+        IDWriteFontFace *fontFace,
+        UINT32 *listIndex,
+        BOOL *exists) PURE;
+    STDMETHOD(GetPropertyValues)(THIS_
+        UINT32 listIndex,
+        DWRITE_FONT_PROPERTY_ID propertyId,
+        BOOL *exists,
+        IDWriteLocalizedStrings **values) PURE;
+    STDMETHOD(GetPropertyValues)(THIS_
+        DWRITE_FONT_PROPERTY_ID propertyID,
+        WCHAR const *preferredLocaleNames,
+        IDWriteStringList **values) PURE;
+    STDMETHOD(GetPropertyValues)(THIS_
+        DWRITE_FONT_PROPERTY_ID propertyID,
+        IDWriteStringList **values) PURE;
+    STDMETHOD(GetPropertyOccurrenceCount)(THIS_
+        DWRITE_FONT_PROPERTY const *property,
+        UINT32 *propertyOccurrenceCount) PURE;
+    STDMETHOD(GetMatchingFonts)(THIS_
+        DWRITE_FONT_PROPERTY const *properties,
+        UINT32 propertyCount,
+        IDWriteFontSet **filteredSet) PURE;
+    STDMETHOD(GetMatchingFonts)(THIS_
+        WCHAR const *familyName,
+        DWRITE_FONT_WEIGHT fontWeight,
+        DWRITE_FONT_STRETCH fontStretch,
+        DWRITE_FONT_STYLE fontStyle,
+        IDWriteFontSet **filteredSet) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFontSet, 
0x53585141,0xd9f8,0x4095,0x83,0x21,0xd7,0x3c,0xf6,0xbd,0x11,0x6b)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontSetBuilder
+DECLARE_INTERFACE_(IDWriteFontSetBuilder,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteFontSetBuilder methods */
+    STDMETHOD(AddFontFaceReference)(THIS_
+        IDWriteFontFaceReference *fontFaceReference) PURE;
+    STDMETHOD(AddFontFaceReference)(THIS_
+        IDWriteFontFaceReference *fontFaceReference,
+        DWRITE_FONT_PROPERTY const *properties,
+        UINT32 propertyCount) PURE;
+    STDMETHOD(AddFontSet)(THIS_
+        IDWriteFontSet *fontSet) PURE;
+    STDMETHOD(CreateFontSet)(THIS_
+        IDWriteFontSet **fontSet) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFontSetBuilder, 
0x2f642afe,0x9c68,0x4f40,0xb8,0xbe,0x45,0x74,0x01,0xaf,0xcb,0x3d)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontCollection1
+DECLARE_INTERFACE_(IDWriteFontCollection1,IDWriteFontCollection)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteFontCollection methods */
+    STDMETHOD_(UINT32, GetFontFamilyCount)(THIS) PURE;
+
+    STDMETHOD(GetFontFamily)(THIS_
+        UINT32 index,
+        IDWriteFontFamily **fontFamily) PURE;
+
+    STDMETHOD(FindFamilyName)(THIS_
+        WCHAR const *familyName,
+        UINT32 *index,
+        WINBOOL *exists) PURE;
+
+    STDMETHOD(GetFontFromFontFace)(THIS_
+        IDWriteFontFace* fontFace,
+        IDWriteFont **font) PURE;
+#endif
+
+    /* IDWriteFontCollection1 methods */
+    STDMETHOD(GetFontSet)(THIS_
+        IDWriteFontSet **fontSet) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFontCollection1, 
0x53585141,0xd9f8,0x4095,0x83,0x21,0xd7,0x3c,0xf6,0xbd,0x11,0x6c)
+
 #undef  INTERFACE
 #define INTERFACE IDWriteFontFace3
 DECLARE_INTERFACE_(IDWriteFontFace3,IDWriteFontFace2)
@@ -219,6 +679,154 @@ DECLARE_INTERFACE_(IDWriteFontFace3,IDWriteFontFace2)
 
 __CRT_UUID_DECL(IDWriteFontFace3, 
0xd37d7598,0x09be,0x4222,0xa2,0x36,0x20,0x81,0x34,0x1c,0xc1,0xf2)
 
+#undef  INTERFACE
+#define INTERFACE IDWriteStringList
+DECLARE_INTERFACE_(IDWriteStringList,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteStringList methods */
+    STDMETHOD_(UINT32, GetCount)(THIS) PURE;
+    STDMETHOD(GetLocaleNameLength)(THIS_
+        UINT32 listIndex,
+        UINT32 *length) PURE;
+    STDMETHOD(GetLocaleName)(THIS_
+        UINT32 listIndex,
+        WCHAR *localeName,
+        UINT32 size) PURE;
+    STDMETHOD(GetStringLength)(THIS_
+        UINT32 listIndex,
+        UINT32 *length) PURE;
+    STDMETHOD(GetString)(THIS_
+        UINT32 listIndex,
+        WCHAR *stringBuffer,
+        UINT32 stringBufferSize) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteStringList, 
0xcfee3140,0x1157,0x47ca,0x8b,0x85,0x31,0xbf,0xcf,0x3f,0x2d,0x0e)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontDownloadListener
+DECLARE_INTERFACE_(IDWriteFontDownloadListener,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteFontDownloadListener methods */
+    STDMETHOD_(void, DownloadCompleted)(THIS_
+        IDWriteFontDownloadQueue *downloadQueue,
+        IUnknown *context,
+        HRESULT downloadResult) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFontDownloadListener, 
0xb06fe5b9,0x43ec,0x4393,0x88,0x1b,0xdb,0xe4,0xdc,0x72,0xfd,0xa7)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontDownloadQueue
+DECLARE_INTERFACE_(IDWriteFontDownloadQueue,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    /* IDWriteFontDownloadQueue methods */
+    STDMETHOD(AddListener)(THIS_
+        IDWriteFontDownloadListener *listener,
+        UINT32 *token) PURE;
+    STDMETHOD(RemoveListener)(THIS_
+        UINT32 token) PURE;
+    STDMETHOD_(BOOL, IsEmpty)(THIS) PURE;
+#ifdef __cplusplus
+    STDMETHOD(BeginDownload)(THIS_
+        IUnknown *context = nullptr) PURE;
+#else
+    STDMETHOD(BeginDownload)(THIS_
+        IUnknown *context) PURE;
+#endif
+    STDMETHOD(CancelDownload)(THIS) PURE;
+    STDMETHOD_(UINT64, GetGenerationCount)(THIS) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFontDownloadQueue, 
0xb71e6052,0x5aea,0x4fa3,0x83,0x2e,0xf6,0x0d,0x43,0x1f,0x7e,0x91)
+
+#if NTDDI_VERSION >= NTDDI_WIN10_RS1
+
+typedef struct DWRITE_COLOR_GLYPH_RUN1
+#ifdef __cplusplus
+    : DWRITE_COLOR_GLYPH_RUN
+#endif
+{
+#ifndef __cplusplus
+    DWRITE_GLYPH_RUN glyphRun;
+    DWRITE_GLYPH_RUN_DESCRIPTION *glyphRunDescription;
+    FLOAT baselineOriginX;
+    FLOAT baselineOriginY;
+    DWRITE_COLOR_F runColor;
+    UINT16 paletteIndex;
+#endif
+    DWRITE_GLYPH_IMAGE_FORMATS glyphImageFormat;
+    DWRITE_MEASURING_MODE measuringMode;
+} DWRITE_COLOR_GLYPH_RUN1;
+
+#undef  INTERFACE
+#define INTERFACE IDWriteColorGlyphRunEnumerator1
+DECLARE_INTERFACE_(IDWriteColorGlyphRunEnumerator1,IDWriteColorGlyphRunEnumerator)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteColorGlyphRunEnumerator methods */
+    STDMETHOD(MoveNext)(THIS_
+        BOOL *hasRun) PURE;
+
+    STDMETHOD(GetCurrentRun)(THIS_
+        DWRITE_COLOR_GLYPH_RUN const **colorGlyphRun) PURE;
+#endif
+
+    /* IDWriteColorGlyphRunEnumerator1 methods */
+    STDMETHOD(GetCurrentRun)(THIS_
+        DWRITE_COLOR_GLYPH_RUN1 const **colorGlyphRun) PURE;
+
+#ifdef __cplusplus
+    using IDWriteColorGlyphRunEnumerator::GetCurrentRun;
+#endif
+
+   END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteColorGlyphRunEnumerator1, 
0x7c5f86da,0xc7a1,0x4f05,0xb8,0xe1,0x55,0xa1,0x79,0xfe,0x5a,0x35)
+
+#endif
+
 #undef  INTERFACE
 #define INTERFACE IDWriteFontFace4
 DECLARE_INTERFACE_(IDWriteFontFace4,IDWriteFontFace3)
@@ -378,6 +986,266 @@ DECLARE_INTERFACE_(IDWriteFontFace4,IDWriteFontFace3)
 
 __CRT_UUID_DECL(IDWriteFontFace4, 
0x27f2a904,0x4eb8,0x441d,0x96,0x78,0x05,0x63,0xf5,0x3e,0x3e,0x2f)
 
+#if NTDDI_VERSION >= NTDDI_WIN10_RS1
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFactory4
+DECLARE_INTERFACE_(IDWriteFactory4,IDWriteFactory3)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteFactory methods */
+    STDMETHOD(GetSystemFontCollection)(THIS_
+        IDWriteFontCollection **fontCollection,
+        WINBOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
+
+    STDMETHOD(CreateCustomFontCollection)(THIS_
+        IDWriteFontCollectionLoader *collectionLoader,
+        void const *collectionKey,
+        UINT32 collectionKeySize,
+        IDWriteFontCollection **fontCollection) PURE;
+
+    STDMETHOD(RegisterFontCollectionLoader)(THIS_
+        IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
+
+    STDMETHOD(UnregisterFontCollectionLoader)(THIS_
+        IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
+
+    STDMETHOD(CreateFontFileReference)(THIS_
+        WCHAR const *filePath,
+        FILETIME const *lastWriteTime,
+        IDWriteFontFile **fontFile) PURE;
+
+    STDMETHOD(CreateCustomFontFileReference)(THIS_
+        void const *fontFileReferenceKey,
+        UINT32 fontFileReferenceKeySize,
+        IDWriteFontFileLoader *fontFileLoader,
+        IDWriteFontFile **fontFile) PURE;
+
+    STDMETHOD(CreateFontFace)(THIS_
+        DWRITE_FONT_FACE_TYPE fontFaceType,
+        UINT32 numberOfFiles,
+        IDWriteFontFile *const *fontFiles,
+        UINT32 faceIndex,
+        DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags,
+        IDWriteFontFace **fontFace) PURE;
+
+    STDMETHOD(CreateRenderingParams)(THIS_
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(CreateMonitorRenderingParams)(THIS_
+        HMONITOR monitor,
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(RegisterFontFileLoader)(THIS_
+        IDWriteFontFileLoader *fontFileLoader) PURE;
+
+    STDMETHOD(UnregisterFontFileLoader)(THIS_
+        IDWriteFontFileLoader *fontFileLoader) PURE;
+
+    STDMETHOD(CreateTextFormat)(THIS_
+        WCHAR const *fontFamilyName,
+        IDWriteFontCollection *fontCollection,
+        DWRITE_FONT_WEIGHT fontWeight,
+        DWRITE_FONT_STYLE fontStyle,
+        DWRITE_FONT_STRETCH fontStretch,
+        FLOAT fontSize,
+        WCHAR const *localeName,
+        IDWriteTextFormat **textFormat) PURE;
+
+    STDMETHOD(CreateTypography)(THIS_
+        IDWriteTypography **typography) PURE;
+
+    STDMETHOD(GetGdiInterop)(THIS_
+        IDWriteGdiInterop **gdiInterop) PURE;
+
+    STDMETHOD(CreateTextLayout)(THIS_
+        WCHAR const *string,
+        UINT32 stringLength,
+        IDWriteTextFormat *textFormat,
+        FLOAT maxWidth,
+        FLOAT maxHeight,
+        IDWriteTextLayout **textLayout) PURE;
+
+    STDMETHOD(CreateGdiCompatibleTextLayout)(THIS_
+        WCHAR const *string,
+        UINT32 stringLength,
+        IDWriteTextFormat *textFormat,
+        FLOAT layoutWidth,
+        FLOAT layoutHeight,
+        FLOAT pixelsPerDip,
+        DWRITE_MATRIX const *transform,
+        WINBOOL useGdiNatural,
+        IDWriteTextLayout **textLayout) PURE;
+
+    STDMETHOD(CreateEllipsisTrimmingSign)(THIS_
+        IDWriteTextFormat *textFormat,
+        IDWriteInlineObject **trimmingSign) PURE;
+
+    STDMETHOD(CreateTextAnalyzer)(THIS_
+        IDWriteTextAnalyzer **textAnalyzer) PURE;
+
+    STDMETHOD(CreateNumberSubstitution)(THIS_
+        DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod,
+        WCHAR const *localeName,
+        WINBOOL ignoreUserOverride,
+        IDWriteNumberSubstitution **numberSubstitution) PURE;
+
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        FLOAT pixelsPerDip,
+        DWRITE_MATRIX const *transform,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_MEASURING_MODE measuringMode,
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
+
+    /* IDWriteFactory1 methods */
+    STDMETHOD(GetEudcFontCollection)(THIS_
+        IDWriteFontCollection **fontCollection,
+        BOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT enhancedContrastGrayscale,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        IDWriteRenderingParams1 **renderingParams) PURE;
+
+    /* IDWriteFactory2 methods */
+    STDMETHOD(GetSystemFontFallback)(THIS_
+        IDWriteFontFallback **fontFallback) PURE;
+
+    STDMETHOD(CreateFontFallbackBuilder)(THIS_
+        IDWriteFontFallbackBuilder **fontFallbackBuilder) PURE;
+
+    STDMETHOD(TranslateColorGlyphRun)(THIS_
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_GLYPH_RUN_DESCRIPTION const *glyphRunDescription,
+        DWRITE_MEASURING_MODE measuringMode,
+        DWRITE_MATRIX const *worldToDeviceTransform,
+        UINT32 colorPaletteIndex,
+        IDWriteColorGlyphRunEnumerator **colorLayers) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT grayscaleEnhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_GRID_FIT_MODE gridFitMode,
+        IDWriteRenderingParams2 **renderingParams) PURE;
+
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_MATRIX const *transform,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_MEASURING_MODE measuringMode,
+        DWRITE_GRID_FIT_MODE gridFitMode,
+        DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
+
+    /* IDWriteFactory3 methods */
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_MATRIX const *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) PURE;
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT grayscaleEnhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE1 renderingMode,
+        DWRITE_GRID_FIT_MODE gridFitMode,
+        IDWriteRenderingParams3 **renderingParams) PURE;
+    STDMETHOD(CreateFontFaceReference)(THIS_
+        WCHAR const *filePath,
+        FILETIME const *lastWriteTime,
+        UINT32 faceIndex,
+        DWRITE_FONT_SIMULATIONS fontSimulations,
+        IDWriteFontFaceReference **fontFaceReference) PURE;
+    STDMETHOD(CreateFontFaceReference)(THIS_
+        IDWriteFontFile *fontFile,
+        UINT32 faceIndex,
+        DWRITE_FONT_SIMULATIONS fontSimulations,
+        IDWriteFontFaceReference **fontFaceReference) PURE;
+    STDMETHOD(GetSystemFontSet)(THIS_
+        IDWriteFontSet **fontSet) PURE;
+    STDMETHOD(CreateFontSetBuilder)(THIS_
+        IDWriteFontSetBuilder **fontSetBuilder) PURE;
+    STDMETHOD(CreateFontCollectionFromFontSet)(THIS_
+        IDWriteFontSet *fontSet,
+        IDWriteFontCollection1 **fontCollection) PURE;
+    STDMETHOD(GetSystemFontCollection)(THIS_
+        BOOL includeDownloadableFonts,
+        IDWriteFontCollection1 **fontCollection,
+        BOOL checkForUpdates) PURE;
+    STDMETHOD(GetFontDownloadQueue)(THIS_
+        IDWriteFontDownloadQueue **fontDownloadQueue) PURE;
+#endif
+
+    /* IDWriteFactory4 methods */
+    STDMETHOD(TranslateColorGlyphRun)(THIS_
+        D2D1_POINT_2F baselineOrigin,
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_GLYPH_RUN_DESCRIPTION const *glyphRunDescription,
+        DWRITE_GLYPH_IMAGE_FORMATS desiredGlyphImageFormats,
+        DWRITE_MEASURING_MODE measuringMode,
+        DWRITE_MATRIX const *worldAndDpiTransform,
+        UINT32 colorPaletteIndex,
+        IDWriteColorGlyphRunEnumerator1 **colorLayers) PURE;
+
+#ifdef __cplusplus
+    using IDWriteFactory2::TranslateColorGlyphRun;
+#endif
+
+    STDMETHOD(ComputeGlyphOrigins)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_MEASURING_MODE measuringMode,
+        D2D1_POINT_2F baselineOrigin,
+        DWRITE_MATRIX const *worldAndDpiTransform,
+        D2D1_POINT_2F *glyphOrigins) PURE;
+    STDMETHOD(ComputeGlyphOrigins)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        D2D1_POINT_2F baselineOrigin,
+        D2D1_POINT_2F *glyphOrigins) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFactory4, 
0x4b0b5bd3,0x0797,0x4549,0x8a,0xc5,0xfe,0x91,0x5c,0xc5,0x38,0x56)
+
+#endif
+
 #undef  INTERFACE
 #define INTERFACE IDWriteFontFace5
 DECLARE_INTERFACE_(IDWriteFontFace5,IDWriteFontFace4)
@@ -583,5 +1451,465 @@ DECLARE_INTERFACE_(IDWriteFontResource,IUnknown)
 
 __CRT_UUID_DECL(IDWriteFontResource, 
0x1f803a76,0x6871,0x48e8,0x98,0x7f,0xb9,0x75,0x55,0x1c,0x50,0xf2)
 
+#if NTDDI_VERSION >= NTDDI_WIN10_RS2
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFontSetBuilder1
+DECLARE_INTERFACE_(IDWriteFontSetBuilder1,IDWriteFontSetBuilder)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteFontSetBuilder methods */
+    STDMETHOD(AddFontFaceReference)(THIS_
+        IDWriteFontFaceReference *fontFaceReference) PURE;
+    STDMETHOD(AddFontFaceReference)(THIS_
+        IDWriteFontFaceReference *fontFaceReference,
+        DWRITE_FONT_PROPERTY const *properties,
+        UINT32 propertyCount) PURE;
+    STDMETHOD(AddFontSet)(THIS_
+        IDWriteFontSet *fontSet) PURE;
+    STDMETHOD(CreateFontSet)(THIS_
+        IDWriteFontSet **fontSet) PURE;
+#endif
+
+    /* IDWriteFontSetBuilder1 methods */
+    STDMETHOD(AddFontFile)(IDWriteFontFile *fontFile) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFontSetBuilder1, 
0x3ff7715f,0x3cdc,0x4dc6,0x9b,0x72,0xec,0x56,0x21,0xdc,0xca,0xfd)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteAsyncResult
+DECLARE_INTERFACE_(IDWriteAsyncResult,IUnknown)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#endif
+
+    STDMETHOD_(HANDLE, GetWaitHandle)(THIS) PURE;
+    STDMETHOD(GetResult)(THIS) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteAsyncResult, 
0xce25f8fd,0x863b,0x4d13,0x96,0x51,0xc1,0xf8,0x8d,0xc7,0x3f,0xe2)
+
+struct DWRITE_FILE_FRAGMENT {
+    UINT64 fileOffset;
+    UINT64 fragmentSize;
+};
+
+#undef  INTERFACE
+#define INTERFACE IDWriteRemoteFontFileStream
+DECLARE_INTERFACE_(IDWriteRemoteFontFileStream,IDWriteFontFileStream)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteFontFileStream methods */
+    STDMETHOD(ReadFileFragment)(THIS_
+        void const **fragmentStart,
+        UINT64 fileOffset,
+        UINT64 fragmentSize,
+        void** fragmentContext) PURE;
+
+    STDMETHOD_(void, ReleaseFileFragment)(THIS_
+        void *fragmentContext) PURE;
+
+    STDMETHOD(GetFileSize)(THIS_
+        UINT64 *fileSize) PURE;
+
+    STDMETHOD(GetLastWriteTime)(THIS_
+        UINT64 *lastWriteTime) PURE;
+#endif
+
+    /* IDWriteRemoteFontFileStream methods */
+    STDMETHOD(GetLocalFileSize)(THIS_
+        UINT64 *localFileSize) PURE;
+    STDMETHOD(GetFileFragmentLocality)(THIS_
+        UINT64 fileOffset,
+        UINT64 fragmentSize,
+        BOOL *isLocal,
+        UINT64 *partialSize) PURE;
+    STDMETHOD_(DWRITE_LOCALITY,
+        GetLocality)(THIS) PURE;
+    STDMETHOD(BeginDownload)(THIS_
+        UUID const *downloadOperationID,
+        DWRITE_FILE_FRAGMENT const *fileFragments,
+        UINT32 fragmentCount,
+        IDWriteAsyncResult **asyncResult) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteRemoteFontFileStream, 
0x4db3757a,0x2c72,0x4ed9,0xb2,0xb6,0x1a,0xba,0xbe,0x1a,0xff,0x9c)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteRemoteFontFileLoader
+DECLARE_INTERFACE_(IDWriteRemoteFontFileLoader,IDWriteFontFileLoader)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteFontFileLoader methods */
+    STDMETHOD(CreateStreamFromKey)(
+        void const *fontFileReferenceKey,
+        UINT32 fontFileReferenceKeySize,
+        IDWriteFontFileStream **fontFileStream) PURE;
+#endif
+
+    /* IDWriteRemoteFontFileLoader methods */
+    STDMETHOD(CreateRemoteStreamFromKey)(THIS_
+        void const *fontFileReferenceKey,
+        UINT32 fontFileReferenceKeySize,
+        IDWriteRemoteFontFileStream **fontFileStream) PURE;
+    STDMETHOD(GetLocalityFromKey)(THIS_
+        void const* fontFileReferenceKey,
+        UINT32 fontFileReferenceKeySize,
+        DWRITE_LOCALITY *locality) PURE;
+    STDMETHOD(CreateFontFileReferenceFromUrl)(THIS_
+        IDWriteFactory *factory,
+        WCHAR const *baseUrl,
+        WCHAR const *fontFileUrl,
+        IDWriteFontFile **fontFile) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteRemoteFontFileLoader, 
0x68648c83,0x6ede,0x46c0,0xab,0x46,0x20,0x08,0x3a,0x88,0x7f,0xde)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteInMemoryFontFileLoader
+DECLARE_INTERFACE_(IDWriteInMemoryFontFileLoader,IDWriteFontFileLoader)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteFontFileLoader methods */
+    STDMETHOD(CreateStreamFromKey)(
+        void const *fontFileReferenceKey,
+        UINT32 fontFileReferenceKeySize,
+        IDWriteFontFileStream **fontFileStream) PURE;
+#endif
+
+    /* IDWriteInMemoryFontFileLoader methods */
+    STDMETHOD(CreateInMemoryFontFileReference)(THIS_
+        IDWriteFactory *factory,
+        void const *fontData,
+        UINT32 fontDataSize,
+        IUnknown *ownerObject,
+        IDWriteFontFile **fontFile) PURE;
+    STDMETHOD_(UINT32, GetFileCount)(THIS) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteInMemoryFontFileLoader, 
0xdc102f47,0xa12d,0x4b1c,0x82,0x2d,0x9e,0x11,0x7e,0x33,0x04,0x3f)
+
+#undef  INTERFACE
+#define INTERFACE IDWriteFactory5
+DECLARE_INTERFACE_(IDWriteFactory5,IDWriteFactory4)
+{
+    BEGIN_INTERFACE
+
+#ifndef __cplusplus
+    /* IUnknown methods */
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+
+    /* IDWriteFactory methods */
+    STDMETHOD(GetSystemFontCollection)(THIS_
+        IDWriteFontCollection **fontCollection,
+        WINBOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
+
+    STDMETHOD(CreateCustomFontCollection)(THIS_
+        IDWriteFontCollectionLoader *collectionLoader,
+        void const *collectionKey,
+        UINT32 collectionKeySize,
+        IDWriteFontCollection **fontCollection) PURE;
+
+    STDMETHOD(RegisterFontCollectionLoader)(THIS_
+        IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
+
+    STDMETHOD(UnregisterFontCollectionLoader)(THIS_
+        IDWriteFontCollectionLoader *fontCollectionLoader) PURE;
+
+    STDMETHOD(CreateFontFileReference)(THIS_
+        WCHAR const *filePath,
+        FILETIME const *lastWriteTime,
+        IDWriteFontFile **fontFile) PURE;
+
+    STDMETHOD(CreateCustomFontFileReference)(THIS_
+        void const *fontFileReferenceKey,
+        UINT32 fontFileReferenceKeySize,
+        IDWriteFontFileLoader *fontFileLoader,
+        IDWriteFontFile **fontFile) PURE;
+
+    STDMETHOD(CreateFontFace)(THIS_
+        DWRITE_FONT_FACE_TYPE fontFaceType,
+        UINT32 numberOfFiles,
+        IDWriteFontFile *const *fontFiles,
+        UINT32 faceIndex,
+        DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags,
+        IDWriteFontFace **fontFace) PURE;
+
+    STDMETHOD(CreateRenderingParams)(THIS_
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(CreateMonitorRenderingParams)(THIS_
+        HMONITOR monitor,
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        IDWriteRenderingParams **renderingParams) PURE;
+
+    STDMETHOD(RegisterFontFileLoader)(THIS_
+        IDWriteFontFileLoader *fontFileLoader) PURE;
+
+    STDMETHOD(UnregisterFontFileLoader)(THIS_
+        IDWriteFontFileLoader *fontFileLoader) PURE;
+
+    STDMETHOD(CreateTextFormat)(THIS_
+        WCHAR const *fontFamilyName,
+        IDWriteFontCollection *fontCollection,
+        DWRITE_FONT_WEIGHT fontWeight,
+        DWRITE_FONT_STYLE fontStyle,
+        DWRITE_FONT_STRETCH fontStretch,
+        FLOAT fontSize,
+        WCHAR const *localeName,
+        IDWriteTextFormat **textFormat) PURE;
+
+    STDMETHOD(CreateTypography)(THIS_
+        IDWriteTypography **typography) PURE;
+
+    STDMETHOD(GetGdiInterop)(THIS_
+        IDWriteGdiInterop **gdiInterop) PURE;
+
+    STDMETHOD(CreateTextLayout)(THIS_
+        WCHAR const *string,
+        UINT32 stringLength,
+        IDWriteTextFormat *textFormat,
+        FLOAT maxWidth,
+        FLOAT maxHeight,
+        IDWriteTextLayout **textLayout) PURE;
+
+    STDMETHOD(CreateGdiCompatibleTextLayout)(THIS_
+        WCHAR const *string,
+        UINT32 stringLength,
+        IDWriteTextFormat *textFormat,
+        FLOAT layoutWidth,
+        FLOAT layoutHeight,
+        FLOAT pixelsPerDip,
+        DWRITE_MATRIX const *transform,
+        WINBOOL useGdiNatural,
+        IDWriteTextLayout **textLayout) PURE;
+
+    STDMETHOD(CreateEllipsisTrimmingSign)(THIS_
+        IDWriteTextFormat *textFormat,
+        IDWriteInlineObject **trimmingSign) PURE;
+
+    STDMETHOD(CreateTextAnalyzer)(THIS_
+        IDWriteTextAnalyzer **textAnalyzer) PURE;
+
+    STDMETHOD(CreateNumberSubstitution)(THIS_
+        DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod,
+        WCHAR const *localeName,
+        WINBOOL ignoreUserOverride,
+        IDWriteNumberSubstitution **numberSubstitution) PURE;
+
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        FLOAT pixelsPerDip,
+        DWRITE_MATRIX const *transform,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_MEASURING_MODE measuringMode,
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
+
+    /* IDWriteFactory1 methods */
+    STDMETHOD(GetEudcFontCollection)(THIS_
+        IDWriteFontCollection **fontCollection,
+        BOOL checkForUpdates __MINGW_DEF_ARG_VAL(FALSE)) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT enhancedContrastGrayscale,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        IDWriteRenderingParams1 **renderingParams) PURE;
+
+    /* IDWriteFactory2 methods */
+    STDMETHOD(GetSystemFontFallback)(THIS_
+        IDWriteFontFallback **fontFallback) PURE;
+
+    STDMETHOD(CreateFontFallbackBuilder)(THIS_
+        IDWriteFontFallbackBuilder **fontFallbackBuilder) PURE;
+
+    STDMETHOD(TranslateColorGlyphRun)(THIS_
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_GLYPH_RUN_DESCRIPTION const *glyphRunDescription,
+        DWRITE_MEASURING_MODE measuringMode,
+        DWRITE_MATRIX const *worldToDeviceTransform,
+        UINT32 colorPaletteIndex,
+        IDWriteColorGlyphRunEnumerator **colorLayers) PURE;
+
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT grayscaleEnhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_GRID_FIT_MODE gridFitMode,
+        IDWriteRenderingParams2 **renderingParams) PURE;
+
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_MATRIX const *transform,
+        DWRITE_RENDERING_MODE renderingMode,
+        DWRITE_MEASURING_MODE measuringMode,
+        DWRITE_GRID_FIT_MODE gridFitMode,
+        DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
+        FLOAT baselineOriginX,
+        FLOAT baselineOriginY,
+        IDWriteGlyphRunAnalysis **glyphRunAnalysis) PURE;
+
+    /* IDWriteFactory3 methods */
+    STDMETHOD(CreateGlyphRunAnalysis)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_MATRIX const *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) PURE;
+    STDMETHOD(CreateCustomRenderingParams)(THIS_
+        FLOAT gamma,
+        FLOAT enhancedContrast,
+        FLOAT grayscaleEnhancedContrast,
+        FLOAT clearTypeLevel,
+        DWRITE_PIXEL_GEOMETRY pixelGeometry,
+        DWRITE_RENDERING_MODE1 renderingMode,
+        DWRITE_GRID_FIT_MODE gridFitMode,
+        IDWriteRenderingParams3 **renderingParams) PURE;
+    STDMETHOD(CreateFontFaceReference)(THIS_
+        WCHAR const *filePath,
+        FILETIME const *lastWriteTime,
+        UINT32 faceIndex,
+        DWRITE_FONT_SIMULATIONS fontSimulations,
+        IDWriteFontFaceReference **fontFaceReference) PURE;
+    STDMETHOD(CreateFontFaceReference)(THIS_
+        IDWriteFontFile *fontFile,
+        UINT32 faceIndex,
+        DWRITE_FONT_SIMULATIONS fontSimulations,
+        IDWriteFontFaceReference **fontFaceReference) PURE;
+    STDMETHOD(GetSystemFontSet)(THIS_
+        IDWriteFontSet **fontSet) PURE;
+    STDMETHOD(CreateFontSetBuilder)(THIS_
+        IDWriteFontSetBuilder **fontSetBuilder) PURE;
+    STDMETHOD(CreateFontCollectionFromFontSet)(THIS_
+        IDWriteFontSet *fontSet,
+        IDWriteFontCollection1 **fontCollection) PURE;
+    STDMETHOD(GetSystemFontCollection)(THIS_
+        BOOL includeDownloadableFonts,
+        IDWriteFontCollection1 **fontCollection,
+        BOOL checkForUpdates) PURE;
+    STDMETHOD(GetFontDownloadQueue)(THIS_
+        IDWriteFontDownloadQueue **fontDownloadQueue) PURE;
+
+    /* IDWriteFactory4 methods */
+    STDMETHOD(TranslateColorGlyphRun)(THIS_
+        D2D1_POINT_2F baselineOrigin,
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_GLYPH_RUN_DESCRIPTION const *glyphRunDescription,
+        DWRITE_GLYPH_IMAGE_FORMATS desiredGlyphImageFormats,
+        DWRITE_MEASURING_MODE measuringMode,
+        DWRITE_MATRIX const *worldAndDpiTransform,
+        UINT32 colorPaletteIndex,
+        IDWriteColorGlyphRunEnumerator1 **colorLayers) PURE;
+    STDMETHOD(ComputeGlyphOrigins)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        DWRITE_MEASURING_MODE measuringMode,
+        D2D1_POINT_2F baselineOrigin,
+        DWRITE_MATRIX const *worldAndDpiTransform,
+        D2D1_POINT_2F *glyphOrigins) PURE;
+    STDMETHOD(ComputeGlyphOrigins)(THIS_
+        DWRITE_GLYPH_RUN const *glyphRun,
+        D2D1_POINT_2F baselineOrigin,
+        D2D1_POINT_2F *glyphOrigins) PURE;
+#endif
+
+    /* IDWriteFactory5 methods */
+    STDMETHOD(CreateFontSetBuilder)(THIS_
+        IDWriteFontSetBuilder1 **fontSetBuilder) PURE;
+
+#ifdef __cplusplus
+    using IDWriteFactory3::CreateFontSetBuilder;
+#endif
+
+    STDMETHOD(CreateInMemoryFontFileLoader)(THIS_
+        IDWriteInMemoryFontFileLoader **newLoader) PURE;
+    STDMETHOD(CreateHttpFontFileLoader)(THIS_
+        wchar_t const *referrerUrl,
+        wchar_t const *extraHeaders,
+        IDWriteRemoteFontFileLoader **newLoader) PURE;
+    STDMETHOD_(DWRITE_CONTAINER_TYPE,
+         AnalyzeContainerType)(THIS_
+        void const *fileData,
+        UINT32 fileDataSize) PURE;
+    STDMETHOD(UnpackFontFile)(THIS_
+        DWRITE_CONTAINER_TYPE containerType,
+        void const *fileData,
+        UINT32 fileDataSize,
+        IDWriteFontFileStream **unpackedFontStream) PURE;
+
+    END_INTERFACE
+};
+
+__CRT_UUID_DECL(IDWriteFactory5, 
0x958db99a,0xbe2a,0x4f09,0xaf,0x7d,0x65,0x18,0x98,0x03,0xd1,0xd3)
+
+#endif
+
 
 #endif /* DWRITE_3_H_INCLUDED */
-- 
2.28.0

_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to