canvas/source/cairo/cairo_canvasfont.cxx | 9 +++++++-- canvas/source/cairo/cairo_canvasfont.hxx | 3 +++ canvas/source/cairo/cairo_canvashelper_text.cxx | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-)
New commits: commit 35803990c9b1881074460659acdac6b2799c99ee Author: Khaled Hosny <kha...@libreoffice.org> AuthorDate: Mon Jun 19 21:19:46 2023 +0300 Commit: خالد حسني <kha...@libreoffice.org> CommitDate: Mon Jun 19 22:51:03 2023 +0200 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: خالد حسني <kha...@libreoffice.org> 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;