commit 81723d331090b12f0e5e274eeb61f135f2f64ee5
parent 1b85a6952057f7129bc7386e4bdb3e80010b8c45
Author: Emilio Cobos Álvarez <emilio@crisal.io>
Date: Tue, 2 Dec 2025 13:58:40 +0000
Bug 2002421 - Also plumb dwrite font family from ScaledFontDWrite to skia. r=lsalzman
Seems also worth doing.
Differential Revision: https://phabricator.services.mozilla.com/D274076
Diffstat:
4 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/gfx/2d/ScaledFontDWrite.cpp b/gfx/2d/ScaledFontDWrite.cpp
@@ -119,9 +119,13 @@ SkTypeface* ScaledFontDWrite::CreateSkTypeface() {
IDWriteFont* font =
static_cast<UnscaledFontDWrite*>(mUnscaledFont.get())->GetFont();
- return SkCreateTypefaceFromDWriteFont(
- factory, mFontFace, font, mStyle,
- (int)settings.RenderingMode(), gamma, contrast, clearTypeLevel);
+ RefPtr<IDWriteFontFamily> family;
+ if (font) {
+ font->GetFontFamily(getter_AddRefs(family));
+ }
+ return SkCreateTypefaceFromDWriteFont(factory, mFontFace, font, family,
+ mStyle, (int)settings.RenderingMode(),
+ gamma, contrast, clearTypeLevel);
}
void ScaledFontDWrite::SetupSkFontDrawOptions(SkFont& aFont) {
diff --git a/gfx/skia/skia/include/ports/SkTypeface_win.h b/gfx/skia/skia/include/ports/SkTypeface_win.h
@@ -53,6 +53,7 @@ struct IDWriteFont;
struct IDWriteFontCollection;
struct IDWriteFontFace;
struct IDWriteFontFallback;
+struct IDWriteFontFamily;
/**
* Like the other Typeface create methods, this returns a new reference to the
@@ -62,6 +63,7 @@ struct IDWriteFontFallback;
SK_API SkTypeface* SkCreateTypefaceFromDWriteFont(IDWriteFactory* aFactory,
IDWriteFontFace* aFontFace,
IDWriteFont* aFont,
+ IDWriteFontFamily* aFontFamily,
SkFontStyle aStyle,
int aRenderingMode,
float aGamma,
diff --git a/gfx/skia/skia/src/ports/SkFontHost_win.cpp b/gfx/skia/skia/src/ports/SkFontHost_win.cpp
@@ -374,13 +374,15 @@ sk_sp<SkTypeface> SkCreateTypefaceFromLOGFONT(const LOGFONT& origLF) {
SkTypeface* SkCreateTypefaceFromDWriteFont(IDWriteFactory* aFactory,
IDWriteFontFace* aFontFace,
IDWriteFont* aFont,
+ IDWriteFontFamily* aFontFamily,
SkFontStyle aStyle,
int aRenderingMode,
float aGamma,
float aContrast,
float aClearTypeLevel)
{
- return DWriteFontTypeface::Create(aFactory, aFontFace, aFont, aStyle,
+ return DWriteFontTypeface::Create(aFactory, aFontFace, aFont, aFontFamily,
+ aStyle,
(DWRITE_RENDERING_MODE)aRenderingMode,
aGamma, aContrast, aClearTypeLevel);
}
diff --git a/gfx/skia/skia/src/ports/SkTypeface_win_dw.h b/gfx/skia/skia/src/ports/SkTypeface_win_dw.h
@@ -116,6 +116,7 @@ public:
static DWriteFontTypeface* Create(IDWriteFactory* factory,
IDWriteFontFace* fontFace,
IDWriteFont* font,
+ IDWriteFontFamily* fontFamily,
SkFontStyle aStyle,
DWRITE_RENDERING_MODE aRenderingMode,
float aGamma,
@@ -123,8 +124,9 @@ public:
float aClearTypeLevel) {
DWriteFontTypeface* typeface =
new DWriteFontTypeface(aStyle, factory, fontFace,
- font, nullptr,
- nullptr, SkFontArguments::Palette{0, nullptr, 0});
+ font, fontFamily,
+ /* loaders = */ nullptr,
+ SkFontArguments::Palette{0, nullptr, 0});
typeface->fRenderingMode = aRenderingMode;
typeface->fGamma = aGamma;
typeface->fContrast = aContrast;