tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Mgfx/2d/ScaledFontDWrite.cpp | 10+++++++---
Mgfx/skia/skia/include/ports/SkTypeface_win.h | 2++
Mgfx/skia/skia/src/ports/SkFontHost_win.cpp | 4+++-
Mgfx/skia/skia/src/ports/SkTypeface_win_dw.h | 6++++--
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;