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);
 

Reply via email to