vcl/source/font/fontmetric.cxx |   79 +++++++++++++++++++++--------------------
 1 file changed, 41 insertions(+), 38 deletions(-)

New commits:
commit f1eaad31122024034d8e7299780eeb123204b20a
Author:     Khaled Hosny <kha...@aliftype.com>
AuthorDate: Fri Dec 2 23:21:49 2022 +0200
Commit:     خالد حسني <kha...@aliftype.com>
CommitDate: Sat Dec 3 01:30:54 2022 +0000

    vcl: simplify ImplFontMetricData::ImplInitTextLineSizeHarfBuzz() a bit
    
    Change-Id: I844b4fc39784ac093a3339b8912efd236ae152ea
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143605
    Tested-by: Jenkins
    Reviewed-by: خالد حسني <kha...@aliftype.com>

diff --git a/vcl/source/font/fontmetric.cxx b/vcl/source/font/fontmetric.cxx
index f6f8bd643d42..a0959dfc6900 100644
--- a/vcl/source/font/fontmetric.cxx
+++ b/vcl/source/font/fontmetric.cxx
@@ -179,56 +179,59 @@ ImplFontMetricData::ImplFontMetricData( const 
vcl::font::FontSelectPattern& rFon
 bool ImplFontMetricData::ImplInitTextLineSizeHarfBuzz(LogicalFontInstance* 
pFont)
 {
     auto* pHbFont = pFont->GetHbFont();
+
+    hb_position_t nUnderlineSize;
+    if (!hb_ot_metrics_get_position(pHbFont, HB_OT_METRICS_TAG_UNDERLINE_SIZE, 
&nUnderlineSize))
+        return false;
+    hb_position_t nUnderlineOffset;
+    if (!hb_ot_metrics_get_position(pHbFont, 
HB_OT_METRICS_TAG_UNDERLINE_OFFSET, &nUnderlineOffset))
+        return false;
+    hb_position_t nStrikeoutSize;
+    if (!hb_ot_metrics_get_position(pHbFont, HB_OT_METRICS_TAG_STRIKEOUT_SIZE, 
&nStrikeoutSize))
+        return false;
+    hb_position_t nStrikeoutOffset;
+    if (!hb_ot_metrics_get_position(pHbFont, 
HB_OT_METRICS_TAG_STRIKEOUT_OFFSET, &nStrikeoutOffset))
+        return false;
+
     double fScale = 0;
     pFont->GetScale(nullptr, &fScale);
 
-    hb_position_t nUnderlineSize, nUnderlineOffset, nStrikeoutSize, 
nStrikeoutOffset;
-    if (hb_ot_metrics_get_position(pHbFont, HB_OT_METRICS_TAG_UNDERLINE_SIZE, 
&nUnderlineSize)
-        && hb_ot_metrics_get_position(pHbFont, 
HB_OT_METRICS_TAG_UNDERLINE_OFFSET,
-                                      &nUnderlineOffset)
-        && hb_ot_metrics_get_position(pHbFont, 
HB_OT_METRICS_TAG_STRIKEOUT_SIZE, &nStrikeoutSize)
-        && hb_ot_metrics_get_position(pHbFont, 
HB_OT_METRICS_TAG_STRIKEOUT_OFFSET,
-                                      &nStrikeoutOffset))
-    {
-        double nOffset = -nUnderlineOffset;
-        double nSize = nUnderlineSize;
-        double nSize2 = nSize / 2.;
-        double nBSize = nSize * 2.;
-        double n2Size = nBSize / 3.;
-
-        mnUnderlineSize = std::ceil(nSize * fScale);
-        mnUnderlineOffset = std::ceil(nOffset * fScale);
+    double nOffset = -nUnderlineOffset * fScale;
+    double nSize = nUnderlineSize * fScale;
+    double nSize2 = nSize / 2.;
+    double nBSize = nSize * 2.;
+    double n2Size = nBSize / 3.;
 
+    mnUnderlineSize = std::ceil(nSize);
+    mnUnderlineOffset = std::ceil(nOffset);
 
-        mnBUnderlineSize = std::ceil(nBSize * fScale);
-        mnBUnderlineOffset = std::ceil((nOffset - nSize2) * fScale);
+    mnBUnderlineSize = std::ceil(nBSize);
+    mnBUnderlineOffset = std::ceil(nOffset - nSize2);
 
-        mnDUnderlineSize = std::ceil(n2Size * fScale);
-        mnDUnderlineOffset1 = mnBUnderlineOffset;
-        mnDUnderlineOffset2 = mnBUnderlineOffset + mnDUnderlineSize * 2;
+    mnDUnderlineSize = std::ceil(n2Size);
+    mnDUnderlineOffset1 = mnBUnderlineOffset;
+    mnDUnderlineOffset2 = mnBUnderlineOffset + mnDUnderlineSize * 2;
 
-        mnWUnderlineSize = mnBUnderlineSize;
-        mnWUnderlineOffset = std::ceil((nOffset + nSize) * fScale);
+    mnWUnderlineSize = mnBUnderlineSize;
+    mnWUnderlineOffset = std::ceil(nOffset + nSize);
 
-        nOffset = -nStrikeoutOffset;
-        nSize = nStrikeoutSize;
-        nSize2 = nSize / 2.;
-        nBSize = nSize * 2.;
-        n2Size = nBSize / 3.;
+    nOffset = -nStrikeoutOffset * fScale;
+    nSize = nStrikeoutSize * fScale;
+    nSize2 = nSize / 2.;
+    nBSize = nSize * 2.;
+    n2Size = nBSize / 3.;
 
-        mnStrikeoutSize = std::ceil(nSize * fScale);
-        mnStrikeoutOffset = std::ceil(nOffset * fScale);
+    mnStrikeoutSize = std::ceil(nSize);
+    mnStrikeoutOffset = std::ceil(nOffset);
 
-        mnBStrikeoutSize = std::ceil(nBSize * fScale);
-        mnBStrikeoutOffset = std::round((nOffset - nSize2) * fScale);
+    mnBStrikeoutSize = std::ceil(nBSize);
+    mnBStrikeoutOffset = std::round(nOffset - nSize2);
 
-        mnDStrikeoutSize = std::ceil(n2Size * fScale);
-        mnDStrikeoutOffset1 = mnBStrikeoutOffset;
-        mnDStrikeoutOffset2 = mnBStrikeoutOffset + mnDStrikeoutSize * 2;
+    mnDStrikeoutSize = std::ceil(n2Size);
+    mnDStrikeoutOffset1 = mnBStrikeoutOffset;
+    mnDStrikeoutOffset2 = mnBStrikeoutOffset + mnDStrikeoutSize * 2;
 
-        return true;
-    }
-    return false;
+    return true;
 }
 
 void ImplFontMetricData::ImplInitTextLineSize( const OutputDevice* pDev )

Reply via email to