diff options
-rw-r--r-- | vcl/unx/generic/gdi/cairotextrender.cxx | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx index f3fb3bde6b83..8f093c02c126 100644 --- a/vcl/unx/generic/gdi/cairotextrender.cxx +++ b/vcl/unx/generic/gdi/cairotextrender.cxx @@ -188,7 +188,7 @@ static void ApplyFont(cairo_t* cr, const CairoFontsCache::CacheId& rId, double n if (nGlyphRotation) cairo_matrix_rotate(&m, toRadian(Degree10(nGlyphRotation * 900))); - const FreetypeFontInstance& rInstance = static_cast<FreetypeFontInstance&>(rLayout.GetFont()); + const LogicalFontInstance& rInstance = rLayout.GetFont(); if (rInstance.NeedsArtificialItalic()) { cairo_matrix_t shear; @@ -200,11 +200,24 @@ static void ApplyFont(cairo_t* cr, const CairoFontsCache::CacheId& rId, double n cairo_set_font_matrix(cr, &m); } -void CairoTextRender::DrawTextLayout(const GenericSalLayout& rLayout, const SalGraphics& rGraphics) +static CairoFontsCache::CacheId makeCacheId(const GenericSalLayout& rLayout) { const FreetypeFontInstance& rInstance = static_cast<FreetypeFontInstance&>(rLayout.GetFont()); const FreetypeFont& rFont = rInstance.GetFreetypeFont(); + FT_Face aFace = rFont.GetFtFace(); + CairoFontsCache::CacheId aId; + aId.maFace = aFace; + aId.mpOptions = rFont.GetFontOptions(); + aId.mbEmbolden = rInstance.NeedsArtificialBold(); + + return aId; +} + +void CairoTextRender::DrawTextLayout(const GenericSalLayout& rLayout, const SalGraphics& rGraphics) +{ + const LogicalFontInstance& rInstance = rLayout.GetFont(); + const bool bResolutionIndependentLayoutEnabled = rLayout.GetTextRenderModeForResolutionIndependentLayout(); /* @@ -358,11 +371,7 @@ void CairoTextRender::DrawTextLayout(const GenericSalLayout& rLayout, const SalG mnTextColor.GetGreen()/255.0, mnTextColor.GetBlue()/255.0); - FT_Face aFace = rFont.GetFtFace(); - CairoFontsCache::CacheId aId; - aId.maFace = aFace; - aId.mpOptions = rFont.GetFontOptions(); - aId.mbEmbolden = rInstance.NeedsArtificialBold(); + CairoFontsCache::CacheId aId = makeCacheId(rLayout); std::vector<int>::const_iterator aEnd = glyph_extrarotation.end(); std::vector<int>::const_iterator aStart = glyph_extrarotation.begin(); |