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