From 39edce2d718c46b3a94c5ee62510249f6a148755 Mon Sep 17 00:00:00 2001 From: Jonathan Kew Date: Mon, 29 Mar 2021 21:14:44 +0000 Subject: [PATCH] Bug 1698495 - Implement size-adjust font scaling in gfx/thebes font code. r=emilio Differential Revision: https://phabricator.services.mozilla.com/D110024 --- gfx/thebes/gfxDWriteFonts.cpp | 2 +- gfx/thebes/gfxFT2FontBase.cpp | 10 +++++-- gfx/thebes/gfxFcPlatformFontList.cpp | 2 +- gfx/thebes/gfxFont.cpp | 5 ++-- gfx/thebes/gfxFont.h | 11 +++++-- gfx/thebes/gfxFontEntry.h | 3 ++ gfx/thebes/gfxGDIFont.cpp | 2 +- gfx/thebes/gfxMacFont.cpp | 8 +++-- gfx/thebes/gfxUserFontSet.cpp | 30 ++++++++++++++----- gfx/thebes/gfxUserFontSet.h | 16 ++++++---- layout/style/FontFace.h | 5 ++-- layout/style/FontFaceSet.cpp | 16 +++++++--- layout/style/FontFaceSet.h | 2 +- ...-adjust-text-decoration.tentative.html.ini | 2 +- 14 files changed, 78 insertions(+), 36 deletions(-) diff --git a/gfx/thebes/gfxDWriteFonts.cpp b/gfx/thebes/gfxDWriteFonts.cpp index 864c9373e559..c302c66c72b3 100644 --- a/gfx/thebes/gfxDWriteFonts.cpp +++ b/gfx/thebes/gfxDWriteFonts.cpp @@ -158,7 +158,7 @@ void gfxDWriteFont::ComputeMetrics(AntialiasOption anAAOption) { (gfxFloat)fontMetrics.xHeight / fontMetrics.designUnitsPerEm; mAdjustedSize = mStyle.GetAdjustedSize(aspect); } else { - mAdjustedSize = mStyle.size; + mAdjustedSize = GetAdjustedSize(); } // Note that GetMeasuringMode depends on mAdjustedSize diff --git a/gfx/thebes/gfxFT2FontBase.cpp b/gfx/thebes/gfxFT2FontBase.cpp index eb61927f8b0d..11ba334227df 100644 --- a/gfx/thebes/gfxFT2FontBase.cpp +++ b/gfx/thebes/gfxFT2FontBase.cpp @@ -223,9 +223,9 @@ void gfxFT2FontBase::InitMetrics() { // If font-size-adjust is in effect, we need to get metrics in order to // determine the aspect ratio, then compute the final adjusted size and // re-initialize metrics. - // This will clamp mFTSize to a minimum of 1.0, and therefore prevent - // further recursion when calling InitMetrics here. - mFTSize = FindClosestSize(mFTFace->GetFace(), GetAdjustedSize()); + // Setting mFTSize nonzero here ensures we will not recurse again; the + // actual value will be overridden by FindClosestSize below. + mFTSize = 1.0; InitMetrics(); // Now do the font-size-adjust calculation and set the final size. gfxFloat aspect = mMetrics.xHeight / mMetrics.emHeight; @@ -235,6 +235,10 @@ void gfxFT2FontBase::InitMetrics() { mFTFace->ForgetLockOwner(this); } + // Set mAdjustedSize if it hasn't already been set by a font-size-adjust + // computation. + mAdjustedSize = GetAdjustedSize(); + // Cairo metrics are normalized to em-space, so that whatever fixed size // might actually be chosen is factored out. They are then later scaled by // the font matrix to the target adjusted size. Stash the chosen closest diff --git a/gfx/thebes/gfxFcPlatformFontList.cpp b/gfx/thebes/gfxFcPlatformFontList.cpp index 8164efa7bb27..0052077f79a0 100644 --- a/gfx/thebes/gfxFcPlatformFontList.cpp +++ b/gfx/thebes/gfxFcPlatformFontList.cpp @@ -756,7 +756,7 @@ gfxFontconfigFontEntry::UnscaledFontCache::Lookup(const std::string& aFile, static inline gfxFloat SizeForStyle(gfxFontconfigFontEntry* aEntry, const gfxFontStyle& aStyle) { return aStyle.sizeAdjust >= 0.0 ? aStyle.GetAdjustedSize(aEntry->GetAspect()) - : aStyle.size; + : aStyle.size * aEntry->mSizeAdjust; } static double ChooseFontSize(gfxFontconfigFontEntry* aEntry, diff --git a/gfx/thebes/gfxFont.cpp b/gfx/thebes/gfxFont.cpp index 8e1ab2e886a2..4a651f66437d 100644 --- a/gfx/thebes/gfxFont.cpp +++ b/gfx/thebes/gfxFont.cpp @@ -796,7 +796,7 @@ gfxFont::gfxFont(const RefPtr& aUnscaledFont, : mFontEntry(aFontEntry), mUnscaledFont(aUnscaledFont), mStyle(*aFontStyle), - mAdjustedSize(0.0), + mAdjustedSize(-1.0), // negative to indicate "not yet initialized" mFUnitsConvFactor(-1.0f), // negative to indicate "not yet initialized" mAntialiasOption(anAAOption), mIsValid(true), @@ -3664,7 +3664,8 @@ void gfxFont::SanitizeMetrics(gfxFont::Metrics* aMetrics, // Even if this font size is zero, this font is created with non-zero size. // However, for layout and others, we should return the metrics of zero size // font. - if (mStyle.size == 0.0 || mStyle.sizeAdjust == 0.0) { + if (mStyle.size == 0.0 || mStyle.sizeAdjust == 0.0 || + mFontEntry->mSizeAdjust == 0.0) { memset(aMetrics, 0, sizeof(gfxFont::Metrics)); return; } diff --git a/gfx/thebes/gfxFont.h b/gfx/thebes/gfxFont.h index 926f9e72d4f3..02ee7a5b67ba 100644 --- a/gfx/thebes/gfxFont.h +++ b/gfx/thebes/gfxFont.h @@ -1490,8 +1490,13 @@ class gfxFont { } gfxFloat GetAdjustedSize() const { - return mAdjustedSize > 0.0 ? mAdjustedSize - : (mStyle.sizeAdjust == 0.0 ? 0.0 : mStyle.size); + // mAdjustedSize is cached here if not already set to a non-zero value; + // but it may be overridden by a value computed in metrics initialization + // from font-size-adjust. + if (mAdjustedSize < 0.0) { + mAdjustedSize = mStyle.sizeAdjust == 0.0 ? 0.0 : mStyle.size * mFontEntry->mSizeAdjust; + } + return mAdjustedSize; } float FUnitsToDevUnitsFactor() const { @@ -2155,7 +2160,7 @@ class gfxFont { mozilla::UniquePtr mMathTable; gfxFontStyle mStyle; - gfxFloat mAdjustedSize; + mutable gfxFloat mAdjustedSize; // Conversion factor from font units to dev units; note that this may be // zero (in the degenerate case where mAdjustedSize has become zero). diff --git a/gfx/thebes/gfxFontEntry.h b/gfx/thebes/gfxFontEntry.h index b59586cb7231..afd9fe956856 100644 --- a/gfx/thebes/gfxFontEntry.h +++ b/gfx/thebes/gfxFontEntry.h @@ -500,6 +500,9 @@ class gfxFontEntry { float mDescentOverride = -1.0; float mLineGapOverride = -1.0; + // Scaling factor to be applied to the font size. + float mSizeAdjust = 1.0; + // For user fonts (only), we need to record whether or not weight/stretch/ // slant variations should be clamped to the range specified in the entry // properties. When the @font-face rule omitted one or more of these diff --git a/gfx/thebes/gfxGDIFont.cpp b/gfx/thebes/gfxGDIFont.cpp index 169cc723415e..9d77c8ff6cda 100644 --- a/gfx/thebes/gfxGDIFont.cpp +++ b/gfx/thebes/gfxGDIFont.cpp @@ -118,7 +118,7 @@ void gfxGDIFont::Initialize() { LOGFONTW logFont; if (mAdjustedSize == 0.0) { - mAdjustedSize = mStyle.size; + mAdjustedSize = GetAdjustedSize(); if (mStyle.sizeAdjust > 0.0 && mAdjustedSize > 0.0) { // to implement font-size-adjust, we first create the "unadjusted" font FillLogFont(logFont, mAdjustedSize); diff --git a/gfx/thebes/gfxMacFont.cpp b/gfx/thebes/gfxMacFont.cpp index 316747d4cd63..8d3c474bd4a4 100644 --- a/gfx/thebes/gfxMacFont.cpp +++ b/gfx/thebes/gfxMacFont.cpp @@ -244,7 +244,9 @@ void gfxMacFont::InitMetrics() { return; } - mAdjustedSize = std::max(mStyle.size, 1.0); + // Apply any size-adjust from the font enty to the given size; this may be + // re-adjusted below if font-size-adjust is in effect. + mAdjustedSize = std::max(GetAdjustedSize(), 1.0); mFUnitsConvFactor = mAdjustedSize / upem; // For CFF fonts, when scaling values read from CGFont* APIs, we need to @@ -275,9 +277,9 @@ void gfxMacFont::InitMetrics() { mMetrics.capHeight = ::CGFontGetCapHeight(mCGFont) * cgConvFactor; } - if (mStyle.sizeAdjust > 0.0 && mStyle.size > 0.0 && mMetrics.xHeight > 0.0) { + if (mStyle.sizeAdjust > 0.0 && mMetrics.xHeight > 0.0) { // apply font-size-adjust, and recalculate metrics - gfxFloat aspect = mMetrics.xHeight / mStyle.size; + gfxFloat aspect = mMetrics.xHeight / mAdjustedSize; mAdjustedSize = mStyle.GetAdjustedSize(aspect); mFUnitsConvFactor = mAdjustedSize / upem; if (static_cast(mFontEntry.get())->IsCFF()) { diff --git a/gfx/thebes/gfxUserFontSet.cpp b/gfx/thebes/gfxUserFontSet.cpp index 14acaa8f62a0..a932be2af018 100644 --- a/gfx/thebes/gfxUserFontSet.cpp +++ b/gfx/thebes/gfxUserFontSet.cpp @@ -44,7 +44,8 @@ gfxUserFontEntry::gfxUserFontEntry( const nsTArray& aVariationSettings, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, - float aAscentOverride, float aDescentOverride, float aLineGapOverride) + float aAscentOverride, float aDescentOverride, float aLineGapOverride, + float aSizeAdjust) : gfxFontEntry("userfont"_ns), mUserFontLoadState(STATUS_NOT_LOADED), mFontDataLoadingState(NOT_LOADING), @@ -66,6 +67,7 @@ gfxUserFontEntry::gfxUserFontEntry( mAscentOverride = aAscentOverride; mDescentOverride = aDescentOverride; mLineGapOverride = aLineGapOverride; + mSizeAdjust = aSizeAdjust; } void gfxUserFontEntry::UpdateAttributes( @@ -74,7 +76,8 @@ void gfxUserFontEntry::UpdateAttributes( const nsTArray& aVariationSettings, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, - float aAscentOverride, float aDescentOverride, float aLineGapOverride) { + float aAscentOverride, float aDescentOverride, float aLineGapOverride, + float aSizeAdjust) { // Remove the entry from the user font cache, if present there, as the cache // key may no longer be correct with the new attributes. gfxUserFontSet::UserFontCache::ForgetFont(this); @@ -91,6 +94,7 @@ void gfxUserFontEntry::UpdateAttributes( mAscentOverride = aAscentOverride; mDescentOverride = aDescentOverride; mLineGapOverride = aLineGapOverride; + mSizeAdjust = aSizeAdjust; } gfxUserFontEntry::~gfxUserFontEntry() { @@ -107,7 +111,8 @@ bool gfxUserFontEntry::Matches( const nsTArray& aVariationSettings, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, - float aAscentOverride, float aDescentOverride, float aLineGapOverride) { + float aAscentOverride, float aDescentOverride, float aLineGapOverride, + float aSizeAdjust) { return Weight() == aWeight && Stretch() == aStretch && SlantStyle() == aStyle && mFeatureSettings == aFeatureSettings && mVariationSettings == aVariationSettings && @@ -116,6 +121,7 @@ bool gfxUserFontEntry::Matches( mRangeFlags == aRangeFlags && mAscentOverride == aAscentOverride && mDescentOverride == aDescentOverride && mLineGapOverride == aLineGapOverride && + mSizeAdjust == aSizeAdjust && ((!aUnicodeRanges && !mCharacterMap) || (aUnicodeRanges && mCharacterMap && mCharacterMap->Equals(aUnicodeRanges))); @@ -437,6 +443,7 @@ void gfxUserFontEntry::DoLoadNextSrc(bool aForceAsync) { fe->mAscentOverride = mAscentOverride; fe->mDescentOverride = mDescentOverride; fe->mLineGapOverride = mLineGapOverride; + fe->mSizeAdjust = mSizeAdjust; // For src:local(), we don't care whether the request is from // a private window as there's no issue of caching resources; // local fonts are just available all the time. @@ -734,6 +741,7 @@ bool gfxUserFontEntry::LoadPlatformFont(const uint8_t* aOriginalFontData, fe->mAscentOverride = mAscentOverride; fe->mDescentOverride = mDescentOverride; fe->mLineGapOverride = mLineGapOverride; + fe->mSizeAdjust = mSizeAdjust; StoreUserFontData(fe, mFontSet->GetPrivateBrowsing(), originalFullName, &metadata, metaOrigLen, compression); if (LOG_ENABLED()) { @@ -927,7 +935,8 @@ already_AddRefed gfxUserFontSet::FindOrCreateUserFontEntry( const nsTArray& aVariationSettings, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, - float aAscentOverride, float aDescentOverride, float aLineGapOverride) { + float aAscentOverride, float aDescentOverride, float aLineGapOverride, + float aSizeAdjust) { RefPtr entry; // If there's already a userfont entry in the family whose descriptors all @@ -941,14 +950,16 @@ already_AddRefed gfxUserFontSet::FindOrCreateUserFontEntry( entry = FindExistingUserFontEntry( family, aFontFaceSrcList, aWeight, aStretch, aStyle, aFeatureSettings, aVariationSettings, aLanguageOverride, aUnicodeRanges, aFontDisplay, - aRangeFlags, aAscentOverride, aDescentOverride, aLineGapOverride); + aRangeFlags, aAscentOverride, aDescentOverride, aLineGapOverride, + aSizeAdjust); } if (!entry) { entry = CreateUserFontEntry( aFontFaceSrcList, aWeight, aStretch, aStyle, aFeatureSettings, aVariationSettings, aLanguageOverride, aUnicodeRanges, aFontDisplay, - aRangeFlags, aAscentOverride, aDescentOverride, aLineGapOverride); + aRangeFlags, aAscentOverride, aDescentOverride, aLineGapOverride, + aSizeAdjust); entry->mFamilyName = aFamilyName; } @@ -963,7 +974,8 @@ gfxUserFontEntry* gfxUserFontSet::FindExistingUserFontEntry( const nsTArray& aVariationSettings, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, - float aAscentOverride, float aDescentOverride, float aLineGapOverride) { + float aAscentOverride, float aDescentOverride, float aLineGapOverride, + float aSizeAdjust) { nsTArray>& fontList = aFamily->GetFontList(); for (size_t i = 0, count = fontList.Length(); i < count; i++) { @@ -976,7 +988,8 @@ gfxUserFontEntry* gfxUserFontSet::FindExistingUserFontEntry( if (!existingUserFontEntry->Matches( aFontFaceSrcList, aWeight, aStretch, aStyle, aFeatureSettings, aVariationSettings, aLanguageOverride, aUnicodeRanges, aFontDisplay, - aRangeFlags, aAscentOverride, aDescentOverride, aLineGapOverride)) { + aRangeFlags, aAscentOverride, aDescentOverride, aLineGapOverride, + aSizeAdjust)) { continue; } @@ -1135,6 +1148,7 @@ bool gfxUserFontSet::UserFontCache::Entry::KeyEquals( mFontEntry->mAscentOverride != fe->mAscentOverride || mFontEntry->mDescentOverride != fe->mDescentOverride || mFontEntry->mLineGapOverride != fe->mLineGapOverride || + mFontEntry->mSizeAdjust != fe->mSizeAdjust || mFontEntry->mFamilyName != fe->mFamilyName) { return false; } diff --git a/gfx/thebes/gfxUserFontSet.h b/gfx/thebes/gfxUserFontSet.h index 118b9fa81b1d..fd5385b4540a 100644 --- a/gfx/thebes/gfxUserFontSet.h +++ b/gfx/thebes/gfxUserFontSet.h @@ -267,7 +267,7 @@ class gfxUserFontSet { uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, mozilla::StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, float aAscentOverride, float aDescentOverride, - float aLineGapOverride) = 0; + float aLineGapOverride, float aSizeAdjust) = 0; // creates a font face for the specified family, or returns an existing // matching entry on the family if there is one @@ -279,7 +279,8 @@ class gfxUserFontSet { const nsTArray& aVariationSettings, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, mozilla::StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, - float aAscentOverride, float aDescentOverride, float aLineGapOverride); + float aAscentOverride, float aDescentOverride, float aLineGapOverride, + float aSizeAdjust); // add in a font face for which we have the gfxUserFontEntry already void AddUserFontEntry(const nsCString& aFamilyName, @@ -529,7 +530,8 @@ class gfxUserFontSet { const nsTArray& aVariationSettings, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, mozilla::StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, - float aAscentOverride, float aDescentOverride, float aLineGapOverride); + float aAscentOverride, float aDescentOverride, float aLineGapOverride, + float aSizeAdjust); // creates a new gfxUserFontFamily in mFontFamilies, or returns an existing // family if there is one @@ -578,7 +580,8 @@ class gfxUserFontEntry : public gfxFontEntry { const nsTArray& aVariationSettings, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, mozilla::StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, - float aAscentOverride, float aDescentOverride, float aLineGapOverride); + float aAscentOverride, float aDescentOverride, float aLineGapOverride, + float aSizeAdjust); virtual ~gfxUserFontEntry(); @@ -590,7 +593,8 @@ class gfxUserFontEntry : public gfxFontEntry { const nsTArray& aVariationSettings, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, mozilla::StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, - float aAscentOverride, float aDescentOverride, float aLineGapOverride); + float aAscentOverride, float aDescentOverride, float aLineGapOverride, + float aSizeAdjust); // Return whether the entry matches the given list of attributes bool Matches(const nsTArray& aFontFaceSrcList, @@ -601,7 +605,7 @@ class gfxUserFontEntry : public gfxFontEntry { uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, mozilla::StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, float aAscentOverride, float aDescentOverride, - float aLineGapOverride); + float aLineGapOverride, float aSizeAdjust); gfxFont* CreateFontInstance(const gfxFontStyle* aFontStyle) override; diff --git a/layout/style/FontFace.h b/layout/style/FontFace.h index 967eb8ea6114..e3f790ecd23e 100644 --- a/layout/style/FontFace.h +++ b/layout/style/FontFace.h @@ -52,12 +52,13 @@ class FontFace final : public nsISupports, public nsWrapperCache { const nsTArray& aVariationSettings, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, - float aAscentOverride, float aDescentOverride, float aLineGapOverride) + float aAscentOverride, float aDescentOverride, float aLineGapOverride, + float aSizeAdjust) : gfxUserFontEntry(aFontSet, aFontFaceSrcList, aWeight, aStretch, aStyle, aFeatureSettings, aVariationSettings, aLanguageOverride, aUnicodeRanges, aFontDisplay, aRangeFlags, aAscentOverride, aDescentOverride, - aLineGapOverride) {} + aLineGapOverride, aSizeAdjust) {} virtual void SetLoadState(UserFontLoadState aLoadState) override; virtual void GetUserFontSets(nsTArray& aResult) override; diff --git a/layout/style/FontFaceSet.cpp b/layout/style/FontFaceSet.cpp index 3252c3babf2f..a2630f22f075 100644 --- a/layout/style/FontFaceSet.cpp +++ b/layout/style/FontFaceSet.cpp @@ -964,6 +964,7 @@ FontFaceSet::FindOrCreateUserFontEntryFromFontFace( float ascentOverride = -1.0; float descentOverride = -1.0; float lineGapOverride = -1.0; + float sizeAdjust = 1.0; gfxFontEntry::RangeFlags rangeFlags = gfxFontEntry::RangeFlags::eNoFlags; @@ -995,6 +996,11 @@ FontFaceSet::FindOrCreateUserFontEntryFromFontFace( lineGapOverride = lineGap->_0; } + // set up size-adjust scaling factor + if (Maybe percentage = aFontFace->GetSizeAdjust()) { + sizeAdjust = percentage->_0; + } + // set up font features nsTArray featureSettings; aFontFace->GetFontFeatureSettings(featureSettings); @@ -1019,7 +1025,7 @@ FontFaceSet::FindOrCreateUserFontEntryFromFontFace( existingEntry->UpdateAttributes( weight, stretch, italicStyle, featureSettings, variationSettings, languageOverride, unicodeRanges, fontDisplay, rangeFlags, - ascentOverride, descentOverride, lineGapOverride); + ascentOverride, descentOverride, lineGapOverride, sizeAdjust); // If the family name has changed, remove the entry from its current family // and clear the mFamilyName field so it can be reset when added to a new // family. @@ -1155,7 +1161,7 @@ FontFaceSet::FindOrCreateUserFontEntryFromFontFace( RefPtr entry = set->mUserFontSet->FindOrCreateUserFontEntry( aFamilyName, srcArray, weight, stretch, italicStyle, featureSettings, variationSettings, languageOverride, unicodeRanges, fontDisplay, - rangeFlags, ascentOverride, descentOverride, lineGapOverride); + rangeFlags, ascentOverride, descentOverride, lineGapOverride, sizeAdjust); return entry.forget(); } @@ -1827,11 +1833,13 @@ FontFaceSet::UserFontSet::CreateUserFontEntry( const nsTArray& aVariationSettings, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, - float aAscentOverride, float aDescentOverride, float aLineGapOverride) { + float aAscentOverride, float aDescentOverride, float aLineGapOverride, + float aSizeAdjust) { RefPtr entry = new FontFace::Entry( this, aFontFaceSrcList, aWeight, aStretch, aStyle, aFeatureSettings, aVariationSettings, aLanguageOverride, aUnicodeRanges, aFontDisplay, - aRangeFlags, aAscentOverride, aDescentOverride, aLineGapOverride); + aRangeFlags, aAscentOverride, aDescentOverride, aLineGapOverride, + aSizeAdjust); return entry.forget(); } diff --git a/layout/style/FontFaceSet.h b/layout/style/FontFaceSet.h index d06369fbb286..f3561857ae12 100644 --- a/layout/style/FontFaceSet.h +++ b/layout/style/FontFaceSet.h @@ -99,7 +99,7 @@ class FontFaceSet final : public DOMEventTargetHelper, uint32_t aLanguageOverride, gfxCharacterMap* aUnicodeRanges, StyleFontDisplay aFontDisplay, RangeFlags aRangeFlags, float aAscentOverride, float aDescentOverride, - float aLineGapOverride) override; + float aLineGapOverride, float aSizeAdjust) override; private: RefPtr mFontFaceSet; diff --git a/testing/web-platform/meta/css/css-fonts/size-adjust-text-decoration.tentative.html.ini b/testing/web-platform/meta/css/css-fonts/size-adjust-text-decoration.tentative.html.ini index c07780253ffd..db336356f1da 100644 --- a/testing/web-platform/meta/css/css-fonts/size-adjust-text-decoration.tentative.html.ini +++ b/testing/web-platform/meta/css/css-fonts/size-adjust-text-decoration.tentative.html.ini @@ -1,2 +1,2 @@ [size-adjust-text-decoration.tentative.html] - expected: FAIL + prefs: [layout.css.size-adjust.enabled:true]