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>
diff --git a/canvas/source/cairo/cairo_canvasfont.cxx b/canvas/source/cairo/cairo_canvasfont.cxx
index 16af118..82f300e 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 e510f42..d5e0150 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 6973607..c8498bd 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;