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;

Reply via email to