Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/dwrite/dwrite_private.h | 3 ++- dlls/dwrite/font.c | 3 ++- dlls/dwrite/freetype.c | 12 +++++------- 3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/dlls/dwrite/dwrite_private.h b/dlls/dwrite/dwrite_private.h index e748535ddff..8536e3c6a36 100644 --- a/dlls/dwrite/dwrite_private.h +++ b/dlls/dwrite/dwrite_private.h @@ -732,7 +732,8 @@ struct font_callback_funcs struct font_backend_funcs { void (CDECL *notify_release)(void *key); - int (CDECL *get_glyph_outline)(void *key, float em_size, UINT16 glyph, struct dwrite_outline *outline); + int (CDECL *get_glyph_outline)(void *key, float em_size, unsigned int simulations, UINT16 glyph, + struct dwrite_outline *outline); UINT16 (CDECL *get_glyph_count)(void *key); INT32 (CDECL *get_glyph_advance)(void *key, float em_size, UINT16 index, DWRITE_MEASURING_MODE measuring_mode, BOOL *has_contours); diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c index 24110db1197..57c64e4622d 100644 --- a/dlls/dwrite/font.c +++ b/dlls/dwrite/font.c @@ -870,6 +870,7 @@ static HRESULT WINAPI dwritefontface_GetGlyphRunOutline(IDWriteFontFace5 *iface, UINT16 const *glyphs, FLOAT const* advances, DWRITE_GLYPH_OFFSET const *offsets, UINT32 count, BOOL is_sideways, BOOL is_rtl, IDWriteGeometrySink *sink) { + struct dwrite_fontface *fontface = impl_from_IDWriteFontFace5(iface); D2D1_POINT_2F *origins, baseline_origin = { 0 }; struct dwrite_outline outline = {{ 0 }}; D2D1_BEZIER_SEGMENT segment; @@ -910,7 +911,7 @@ static HRESULT WINAPI dwritefontface_GetGlyphRunOutline(IDWriteFontFace5 *iface, for (i = 0; i < count; ++i) { outline.tags.count = outline.points.count = 0; - if (font_funcs->get_glyph_outline(iface, emSize, glyphs[i], &outline)) + if (font_funcs->get_glyph_outline(iface, emSize, fontface->simulations, glyphs[i], &outline)) { WARN("Failed to get glyph outline for glyph %u.\n", glyphs[i]); continue; diff --git a/dlls/dwrite/freetype.c b/dlls/dwrite/freetype.c index 581d6eab802..21e2b9d0320 100644 --- a/dlls/dwrite/freetype.c +++ b/dlls/dwrite/freetype.c @@ -436,17 +436,14 @@ static void embolden_glyph(FT_Glyph glyph, FLOAT emsize) embolden_glyph_outline(&outline_glyph->outline, emsize); }
-static int CDECL freetype_get_glyph_outline(void *key, float emSize, UINT16 glyph, struct dwrite_outline *outline) +static int CDECL freetype_get_glyph_outline(void *key, float emSize, unsigned int simulations, + UINT16 glyph, struct dwrite_outline *outline) { - IDWriteFontFace5 *fontface = key; FTC_ScalerRec scaler; - USHORT simulations; FT_Size size; int ret;
- simulations = IDWriteFontFace5_GetSimulations(fontface); - - scaler.face_id = fontface; + scaler.face_id = key; scaler.width = emSize; scaler.height = emSize; scaler.pixel = 1; @@ -779,7 +776,8 @@ static void CDECL null_notify_release(void *key) { }
-static int CDECL null_get_glyph_outline(void *key, float emSize, UINT16 glyph, struct dwrite_outline *outline) +static int CDECL null_get_glyph_outline(void *key, float emSize, unsigned int simulations, + UINT16 glyph, struct dwrite_outline *outline) { return 1; }