diff options
author | Khaled Hosny <khaled@libreoffice.org> | 2023-06-19 21:19:46 +0300 |
---|---|---|
committer | خالد حسني <khaled@libreoffice.org> | 2023-06-19 22:51:03 +0200 |
commit | 35803990c9b1881074460659acdac6b2799c99ee (patch) | |
tree | 2dff4062a1ccac42ef3634b6897642d49042a8f4 /canvas | |
parent | d80d89d98183ee0c1a232b975107c319001f3fbc (diff) |
tdf#43671: Pass through emphasis mark setting with cairo canvas
Other canvas implementations passed it through, but cairo canvas was
not.
Change-Id: I9b4cc500998635568c095866f9099f83bf1c984e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153299
Tested-by: Jenkins
Reviewed-by: خالد حسني <khaled@libreoffice.org>
Diffstat (limited to 'canvas')
-rw-r--r-- | canvas/source/cairo/cairo_canvasfont.cxx | 9 | ||||
-rw-r--r-- | canvas/source/cairo/cairo_canvasfont.hxx | 3 | ||||
-rw-r--r-- | canvas/source/cairo/cairo_canvashelper_text.cxx | 3 |
3 files changed, 13 insertions, 2 deletions
diff --git a/canvas/source/cairo/cairo_canvasfont.cxx b/canvas/source/cairo/cairo_canvasfont.cxx index 16af11838a91..82f300e8a205 100644 --- a/canvas/source/cairo/cairo_canvasfont.cxx +++ b/canvas/source/cairo/cairo_canvasfont.cxx @@ -27,6 +27,8 @@ #include <utility> #include <vcl/metric.hxx> +#include <canvas/canvastools.hxx> + #include "cairo_canvasfont.hxx" #include "cairo_textlayout.hxx" @@ -36,15 +38,18 @@ namespace cairocanvas { CanvasFont::CanvasFont( const rendering::FontRequest& rFontRequest, - const uno::Sequence< beans::PropertyValue >& /*rExtraFontProperties*/, + const uno::Sequence< beans::PropertyValue >& rExtraFontProperties, const geometry::Matrix2D& rFontMatrix, SurfaceProviderRef rDevice ) : maFont( vcl::Font( rFontRequest.FontDescription.FamilyName, rFontRequest.FontDescription.StyleName, Size( 0, ::basegfx::fround(rFontRequest.CellSize) ) ) ), maFontRequest( rFontRequest ), - mpRefDevice(std::move( rDevice )) + mpRefDevice(std::move( rDevice )), + mnEmphasisMark(0) { + ::canvas::tools::extractExtraFontProperties(rExtraFontProperties, mnEmphasisMark); + maFont->SetAlignment( ALIGN_BASELINE ); maFont->SetCharSet( (rFontRequest.FontDescription.IsSymbolFont==css::util::TriState_YES) ? RTL_TEXTENCODING_SYMBOL : RTL_TEXTENCODING_UNICODE ); maFont->SetVertical( rFontRequest.FontDescription.IsVertical==css::util::TriState_YES ); diff --git a/canvas/source/cairo/cairo_canvasfont.hxx b/canvas/source/cairo/cairo_canvasfont.hxx index e510f420c437..d5e015006c98 100644 --- a/canvas/source/cairo/cairo_canvasfont.hxx +++ b/canvas/source/cairo/cairo_canvasfont.hxx @@ -70,10 +70,13 @@ namespace cairocanvas vcl::Font const & getVCLFont() const; + sal_uInt32 getEmphasisMark() const { return mnEmphasisMark; } + private: ::canvas::vcltools::VCLObject<vcl::Font> maFont; css::rendering::FontRequest maFontRequest; SurfaceProviderRef mpRefDevice; + sal_uInt32 mnEmphasisMark; }; } diff --git a/canvas/source/cairo/cairo_canvashelper_text.cxx b/canvas/source/cairo/cairo_canvashelper_text.cxx index 6973607d4824..c8498bddf3b7 100644 --- a/canvas/source/cairo/cairo_canvashelper_text.cxx +++ b/canvas/source/cairo/cairo_canvashelper_text.cxx @@ -190,6 +190,9 @@ namespace cairocanvas aVCLFont.SetColor( aColor ); aVCLFont.SetFillColor( aColor ); + if (pFont->getEmphasisMark()) + aVCLFont.SetEmphasisMark(FontEmphasisMark(pFont->getEmphasisMark())); + // no need to replicate this for mp2ndOutDev, we're modifying only aVCLFont here. if( !setupFontTransform( rOutDev, o_rOutPos, aVCLFont, viewState, renderState ) ) return false; |