vcl/inc/quartz/salgdi.h |    6 ++++--
 vcl/quartz/ctfonts.cxx  |    5 ++---
 vcl/quartz/salgdi.cxx   |    9 +++++++++
 3 files changed, 15 insertions(+), 5 deletions(-)

New commits:
commit c17588930688b01253434a3d8acb4b9c0c58adf7
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Sat Apr 20 21:50:37 2019 +0900
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Apr 30 16:03:23 2019 +0200

    tdf#101854 Move to CommonSalLayout removed faux bold in macos
    
    Previously faux bold was drawn with setting a dictionary key
    kCTStrokeWidthAttributeName and a value of the stroke width. This
    stopped working because we don't use attributedString for drawing
    anymore but we always use CTFontDrawGlyphs and draw the glyphs,
    which doesn't have a way to set this attributes.
    
    It took me a while to find a workaround (thanks to Apple's great
    documentation), where we switch text drawing to fill and stroke,
    and after that we can modify the stroke by changing the line
    width.
    
    Change-Id: I594fcb9c796a9c04ea8234a9938ca2f719706199
    Reviewed-on: https://gerrit.libreoffice.org/71012
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>
    (cherry picked from commit eb5606511fac2a8ee1af7cc03c12d6c5b16f7c96)
    Reviewed-on: https://gerrit.libreoffice.org/71061
    Reviewed-by: Andras Timar <andras.ti...@collabora.com>

diff --git a/vcl/inc/quartz/salgdi.h b/vcl/inc/quartz/salgdi.h
index cacf56dcb84f..70b4ddad47f1 100644
--- a/vcl/inc/quartz/salgdi.h
+++ b/vcl/inc/quartz/salgdi.h
@@ -90,9 +90,11 @@ public:
     CFMutableDictionaryRef  GetStyleDict( void ) const { return mpStyleDict; }
 
     /// <1.0: font is squeezed, >1.0 font is stretched, else 1.0
-    float               mfFontStretch;
+    float mfFontStretch;
     /// text rotation in radian
-    float               mfFontRotation;
+    float mfFontRotation;
+    /// faux bold - true, if font doesn't have proper bold variants
+    float mbFauxBold;
 
 private:
     explicit CoreTextStyle(const PhysicalFontFace&, const FontSelectPattern&);
diff --git a/vcl/quartz/ctfonts.cxx b/vcl/quartz/ctfonts.cxx
index e98fac83b0f6..03582bf9cf3d 100644
--- a/vcl/quartz/ctfonts.cxx
+++ b/vcl/quartz/ctfonts.cxx
@@ -50,6 +50,7 @@ CoreTextStyle::CoreTextStyle(const PhysicalFontFace& rPFF, 
const FontSelectPatte
     : LogicalFontInstance(rPFF, rFSP)
     , mfFontStretch( 1.0 )
     , mfFontRotation( 0.0 )
+    , mbFauxBold(false)
     , mpStyleDict( nullptr )
 {
     double fScaledFontHeight = rFSP.mfExactHeight;
@@ -81,9 +82,7 @@ CoreTextStyle::CoreTextStyle(const PhysicalFontFace& rPFF, 
const FontSelectPatte
          ((rPFF.GetWeight() < WEIGHT_SEMIBOLD) &&
           (rPFF.GetWeight() != WEIGHT_DONTKNOW)) )
     {
-        int nStroke = -lrint((3.5F * rFSP.GetWeight()) / rPFF.GetWeight());
-        CFNumberRef rStroke = CFNumberCreate(nullptr, kCFNumberSInt32Type, 
&nStroke);
-        CFDictionarySetValue(mpStyleDict, kCTStrokeWidthAttributeName, 
rStroke);
+        mbFauxBold = true;
     }
 
     // fake italic
diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index d64fc8677ce7..33ca4573e382 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -460,6 +460,15 @@ void AquaSalGraphics::DrawTextLayout(const 
GenericSalLayout& rLayout)
     SAL_INFO("vcl.cg", "CGContextSetFillColor(" << mrContext << "," << 
maTextColor << ")");
     CGContextSetFillColor(mrContext, maTextColor.AsArray());
 
+    if (rStyle.mbFauxBold)
+    {
+
+        float fSize = rFontSelect.mnHeight / 23.0f;
+        CGContextSetStrokeColor(mrContext, maTextColor.AsArray());
+        CGContextSetLineWidth(mrContext, fSize);
+        CGContextSetTextDrawingMode(mrContext, kCGTextFillStroke);
+    }
+
     auto aIt = aGlyphOrientation.cbegin();
     while (aIt != aGlyphOrientation.cend())
     {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to