officecfg/registry/schema/org/openoffice/Office/Common.xcs | 6 ++- vcl/inc/impfontmetricdata.hxx | 2 - vcl/source/font/fontmetric.cxx | 20 +++---------- 3 files changed, 11 insertions(+), 17 deletions(-)
New commits: commit 8dda5eb8a7aa44bab6b894e7c378fcd0095f3f4e Author: Khaled Hosny <[email protected]> AuthorDate: Sat Mar 18 00:52:04 2023 +0200 Commit: Adolfo Jayme Barrientos <[email protected]> CommitDate: Sat Mar 18 18:06:05 2023 +0000 tdf#154235: Ignore underline metrics for all Liberation fonts They all have bad metrics and we are better off synthesising metrics for them instead. Also simplify the exception list to only use family name. Change-Id: I9e13bc05bdf56a31e9805fcd348439d191ed3a3c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149032 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos <[email protected]> diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs index cc4519ffd564..c87136ce7ba7 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs @@ -5481,8 +5481,10 @@ </desc> </info> <value> - <!-- tdf#152267 --> - <it>Liberation Serif,100,-123,100,420</it> + <!-- tdf#152267, tdf#154235 --> + <it>Liberation Serif</it> + <it>Liberation Sans</it> + <it>Liberation Mono</it> </value> </prop> <prop oor:name="PluginsEnabled" oor:type="xs:boolean" oor:nillable="false"> diff --git a/vcl/inc/impfontmetricdata.hxx b/vcl/inc/impfontmetricdata.hxx index 5625cfa726b5..63394a93eb23 100644 --- a/vcl/inc/impfontmetricdata.hxx +++ b/vcl/inc/impfontmetricdata.hxx @@ -102,7 +102,7 @@ public: void ImplInitBaselines(LogicalFontInstance *pFontInstance); private: - bool ShouldNotUseUnderlineMetrics(int, int, int, int) const; + bool ShouldNotUseUnderlineMetrics() const; bool ImplInitTextLineSizeHarfBuzz(LogicalFontInstance *pFontInstance); bool ShouldUseWinMetrics(int, int, int, int, int, int) const; diff --git a/vcl/source/font/fontmetric.cxx b/vcl/source/font/fontmetric.cxx index 84c783b83474..870e50b044f5 100644 --- a/vcl/source/font/fontmetric.cxx +++ b/vcl/source/font/fontmetric.cxx @@ -176,20 +176,13 @@ ImplFontMetricData::ImplFontMetricData( const vcl::font::FontSelectPattern& rFon SetStyleName( rFontSelData.GetStyleName() ); } -bool ImplFontMetricData::ShouldNotUseUnderlineMetrics(int nUnderlineSize, int nUnderlineOffset, - int nStrikeoutSize, - int nStrikeoutOffset) const +bool ImplFontMetricData::ShouldNotUseUnderlineMetrics() const { - OUString aFontIdentifier(GetFamilyName() + "," + OUString::number(nUnderlineSize) + "," - + OUString::number(nUnderlineOffset) + "," - + OUString::number(nStrikeoutSize) + "," - + OUString::number(nStrikeoutOffset)); - css::uno::Sequence<OUString> rNoUnderlineMetricsList( officecfg::Office::Common::Misc::FontsDontUseUnderlineMetrics::get()); - if (comphelper::findValue(rNoUnderlineMetricsList, aFontIdentifier) != -1) + if (comphelper::findValue(rNoUnderlineMetricsList, GetFamilyName()) != -1) { - SAL_INFO("vcl.gdi.fontmetric", "Not using underline metrics for: " << aFontIdentifier); + SAL_INFO("vcl.gdi.fontmetric", "Not using underline metrics for: " << GetFamilyName()); return true; } return false; @@ -197,6 +190,9 @@ bool ImplFontMetricData::ShouldNotUseUnderlineMetrics(int nUnderlineSize, int nU bool ImplFontMetricData::ImplInitTextLineSizeHarfBuzz(LogicalFontInstance* pFont) { + if (ShouldNotUseUnderlineMetrics()) + return false; + auto* pHbFont = pFont->GetHbFont(); hb_position_t nUnderlineSize; @@ -212,10 +208,6 @@ bool ImplFontMetricData::ImplInitTextLineSizeHarfBuzz(LogicalFontInstance* pFont if (!hb_ot_metrics_get_position(pHbFont, HB_OT_METRICS_TAG_STRIKEOUT_OFFSET, &nStrikeoutOffset)) return false; - if (ShouldNotUseUnderlineMetrics(nUnderlineSize, nUnderlineOffset, nStrikeoutSize, - nStrikeoutOffset)) - return false; - double fScale = 0; pFont->GetScale(nullptr, &fScale);
