summaryrefslogtreecommitdiff
path: root/canvas
diff options
context:
space:
mode:
authorKhaled Hosny <khaled@libreoffice.org>2023-06-19 21:19:46 +0300
committerخالد حسني <khaled@libreoffice.org>2023-06-19 22:51:03 +0200
commit35803990c9b1881074460659acdac6b2799c99ee (patch)
tree2dff4062a1ccac42ef3634b6897642d49042a8f4 /canvas
parentd80d89d98183ee0c1a232b975107c319001f3fbc (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.cxx9
-rw-r--r--canvas/source/cairo/cairo_canvasfont.hxx3
-rw-r--r--canvas/source/cairo/cairo_canvashelper_text.cxx3
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;