diff options
-rw-r--r-- | config_host/config_qt5.h.in | 1 | ||||
-rw-r--r-- | vcl/CustomTarget_qt5_moc.mk | 4 | ||||
-rw-r--r-- | vcl/Library_vcl.mk | 18 | ||||
-rw-r--r-- | vcl/Library_vclplug_qt5.mk | 13 | ||||
-rw-r--r-- | vcl/inc/CommonSalLayout.hxx | 27 | ||||
-rw-r--r-- | vcl/inc/impfontmetricdata.hxx | 2 | ||||
-rw-r--r-- | vcl/inc/qt5/Qt5Font.hxx | 43 | ||||
-rw-r--r-- | vcl/qt5/Qt5Font.cxx | 26 | ||||
-rw-r--r-- | vcl/qt5/Qt5FontFace.cxx | 4 | ||||
-rw-r--r-- | vcl/qt5/Qt5FontFace.hxx | 12 | ||||
-rw-r--r-- | vcl/qt5/Qt5Graphics.cxx | 9 | ||||
-rw-r--r-- | vcl/qt5/Qt5Graphics.hxx | 8 | ||||
-rw-r--r-- | vcl/qt5/Qt5Graphics_Text.cxx | 54 | ||||
-rw-r--r-- | vcl/source/gdi/CommonSalLayout.cxx | 76 | ||||
-rw-r--r-- | vcl/unx/generic/gdi/cairotextrender.cxx | 2 |
15 files changed, 261 insertions, 38 deletions
diff --git a/config_host/config_qt5.h.in b/config_host/config_qt5.h.in index cdce1af7800c..51bb58566f2b 100644 --- a/config_host/config_qt5.h.in +++ b/config_host/config_qt5.h.in @@ -5,6 +5,7 @@ Settings for QT5 integration. #ifndef CONFIG_QT5_H #define CONFIG_QT5_H +#define ENABLE_QT5 0 #define QT5_HAVE_GLIB 0 #endif diff --git a/vcl/CustomTarget_qt5_moc.mk b/vcl/CustomTarget_qt5_moc.mk index 8d22eb6e9288..60d5df34d405 100644 --- a/vcl/CustomTarget_qt5_moc.mk +++ b/vcl/CustomTarget_qt5_moc.mk @@ -9,12 +9,12 @@ $(eval $(call gb_CustomTarget_CustomTarget,vcl/qt5)) -$(call gb_CustomTarget_get_target,vcl/unx/qt5) : \ +$(call gb_CustomTarget_get_target,vcl/qt5) : \ $(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Instance.moc \ $(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Timer.moc \ $(call gb_CustomTarget_get_workdir,vcl/qt5)/Qt5Widget.moc \ -$(call gb_CustomTarget_get_workdir,vcl/unx/qt5)/%.moc : \ +$(call gb_CustomTarget_get_workdir,vcl/qt5)/%.moc : \ $(SRCDIR)/vcl/qt5/%.hxx \ | $(call gb_CustomTarget_get_workdir,vcl/qt5)/.dir $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),MOC,1) diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk index cbe6de3afce7..699d6abd67f5 100644 --- a/vcl/Library_vcl.mk +++ b/vcl/Library_vcl.mk @@ -719,4 +719,22 @@ ifeq ($(OS),WNT) $(eval $(call gb_Library_use_package,vcl,postprocess_images)) endif +ifeq ($(ENABLE_QT5),TRUE) +$(eval $(call gb_Library_use_externals,vcl,\ + qt5 \ +)) +$(eval $(call gb_Library_add_defs,vcl,\ + $(QT5_CFLAGS) \ +)) +$(eval $(call gb_Library_add_libs,vcl,\ + $(QT5_LIBS) \ +)) +$(eval $(call gb_Library_add_cxxflags,vcl,\ + $(QT5_CFLAGS) \ +)) +$(eval $(call gb_Library_add_exception_objects,vcl,\ + vcl/qt5/Qt5Font \ +)) +endif + # vim: set noet sw=4 ts=4: diff --git a/vcl/Library_vclplug_qt5.mk b/vcl/Library_vclplug_qt5.mk index 333812f939bb..d82b7d2fcd31 100644 --- a/vcl/Library_vclplug_qt5.mk +++ b/vcl/Library_vclplug_qt5.mk @@ -53,11 +53,14 @@ $(eval $(call gb_Library_use_libraries,vclplug_qt5,\ )) $(eval $(call gb_Library_use_externals,vclplug_qt5,\ - boost_headers \ - cairo \ - icuuc \ - qt5 \ - epoxy \ + boost_headers \ + cairo \ + epoxy \ + graphite \ + harfbuzz \ + icu_headers \ + icuuc \ + qt5 \ )) $(eval $(call gb_Library_add_defs,vclplug_qt5,\ diff --git a/vcl/inc/CommonSalLayout.hxx b/vcl/inc/CommonSalLayout.hxx index 02eef73a1dc8..a44fee5cfe10 100644 --- a/vcl/inc/CommonSalLayout.hxx +++ b/vcl/inc/CommonSalLayout.hxx @@ -20,6 +20,8 @@ #ifndef INCLUDED_VCL_INC_COMMONSALLAYOUT_HXX #define INCLUDED_VCL_INC_COMMONSALLAYOUT_HXX +#include <config_qt5.h> + #include <com/sun/star/i18n/XBreakIterator.hpp> #ifdef _WIN32 @@ -37,8 +39,19 @@ #include <hb-icu.h> #include <hb-ot.h> -class CommonSalLayout : public GenericSalLayout +#if ENABLE_QT5 +class Qt5Font; +#endif + +class VCL_DLLPUBLIC CommonSalLayout : public GenericSalLayout { +#if ENABLE_QT5 + friend hb_blob_t* getFontTable(hb_face_t*, hb_tag_t, void*); + explicit CommonSalLayout(const FontSelectPattern &rFSP, + FreetypeFont *pFreetypeFont, + Qt5Font *pFont, bool bUseQt5); +#endif + hb_font_t* mpHbFont; const FontSelectPattern& mrFontSelData; css::uno::Reference<css::i18n::XBreakIterator> mxBreak; @@ -50,7 +63,11 @@ class CommonSalLayout : public GenericSalLayout #elif defined(MACOSX) || defined(IOS) const CoreTextStyle& mrCoreTextStyle; #else - FreetypeFont& mrFreetypeFont; + FreetypeFont* mpFreetypeFont; +#if ENABLE_QT5 + const bool mbUseQt5; + Qt5Font* mpQFont; +#endif #endif void ParseFeatures(const OUString& name); @@ -76,7 +93,11 @@ public: const CoreTextStyle& getFontData() const { return mrCoreTextStyle; }; #else explicit CommonSalLayout(FreetypeFont&); - const FreetypeFont& getFontData() const { return mrFreetypeFont; }; + const FreetypeFont* getFreetypeFont() const { return mpFreetypeFont; }; +#if ENABLE_QT5 + explicit CommonSalLayout(Qt5Font&); + const Qt5Font* getQt5Font() const { return mpQFont; }; +#endif #endif virtual void InitFont() const override; diff --git a/vcl/inc/impfontmetricdata.hxx b/vcl/inc/impfontmetricdata.hxx index 14ad323b9b77..fd15e5765164 100644 --- a/vcl/inc/impfontmetricdata.hxx +++ b/vcl/inc/impfontmetricdata.hxx @@ -32,7 +32,7 @@ typedef tools::SvRef<ImplFontMetricData> ImplFontMetricDataRef; class OutputDevice; class FontSelectPattern; -class ImplFontMetricData : public FontAttributes, public SvRefBase +class VCL_DLLPUBLIC ImplFontMetricData : public FontAttributes, public SvRefBase { public: explicit ImplFontMetricData( const FontSelectPattern& ); diff --git a/vcl/inc/qt5/Qt5Font.hxx b/vcl/inc/qt5/Qt5Font.hxx new file mode 100644 index 000000000000..d8981578831a --- /dev/null +++ b/vcl/inc/qt5/Qt5Font.hxx @@ -0,0 +1,43 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#pragma once + +#include <vcl/dllapi.h> +#include <QtGui/QFont> + +#include <fontselect.hxx> +#include <hb-ot.h> + +class VCL_DLLPUBLIC Qt5Font : public QFont +{ + const FontSelectPattern m_aFontSelData; + hb_font_t* m_pHbFont; + +public: + Qt5Font( const FontSelectPattern& rFSP) + : m_aFontSelData( rFSP ), m_pHbFont( nullptr ) {} + virtual ~Qt5Font(); + + hb_font_t* GetHbFont() const { return m_pHbFont; } + void SetHbFont( hb_font_t* pHbFont ) { m_pHbFont = pHbFont; } + const FontSelectPattern& GetFontSelData() const { return m_aFontSelData; } +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/qt5/Qt5Font.cxx b/vcl/qt5/Qt5Font.cxx new file mode 100644 index 000000000000..8ad5e2b0c040 --- /dev/null +++ b/vcl/qt5/Qt5Font.cxx @@ -0,0 +1,26 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <qt5/Qt5Font.hxx> + +Qt5Font::~Qt5Font() +{ +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/qt5/Qt5FontFace.cxx b/vcl/qt5/Qt5FontFace.cxx index 701509b06108..347f6bb58ba5 100644 --- a/vcl/qt5/Qt5FontFace.cxx +++ b/vcl/qt5/Qt5FontFace.cxx @@ -65,7 +65,7 @@ sal_IntPtr Qt5FontFace::GetFontId() const return reinterpret_cast<sal_IntPtr>( &m_aFontId ); } -const FontCharMapRef Qt5FontFace::GetFontCharMap() +const FontCharMapRef Qt5FontFace::GetFontCharMap() const { if( m_xCharMap.is() ) return m_xCharMap; @@ -88,7 +88,7 @@ const FontCharMapRef Qt5FontFace::GetFontCharMap() return m_xCharMap; } -bool Qt5FontFace::GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) +bool Qt5FontFace::GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const { // read this only once per font if( m_bFontCapabilitiesRead ) diff --git a/vcl/qt5/Qt5FontFace.hxx b/vcl/qt5/Qt5FontFace.hxx index 76b8fdee99f1..7cfbdf8be702 100644 --- a/vcl/qt5/Qt5FontFace.hxx +++ b/vcl/qt5/Qt5FontFace.hxx @@ -44,8 +44,8 @@ public: int GetFontTable( const char pTagName[5], unsigned char* ) const; - const FontCharMapRef GetFontCharMap(); - bool GetFontCapabilities( vcl::FontCapabilities &rFontCapabilities ); + const FontCharMapRef GetFontCharMap() const; + bool GetFontCapabilities( vcl::FontCapabilities &rFontCapabilities ) const; bool HasChar( sal_uInt32 cChar ) const; protected: @@ -53,10 +53,10 @@ protected: Qt5FontFace( const FontAttributes& rFA, const QString &rFontID ); private: - const QString m_aFontId; - FontCharMapRef m_xCharMap; - vcl::FontCapabilities m_aFontCapabilities; - bool m_bFontCapabilitiesRead; + const QString m_aFontId; + mutable FontCharMapRef m_xCharMap; + mutable vcl::FontCapabilities m_aFontCapabilities; + mutable bool m_bFontCapabilitiesRead; }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/qt5/Qt5Graphics.cxx b/vcl/qt5/Qt5Graphics.cxx index 1d0d15677eb4..aebb486c2453 100644 --- a/vcl/qt5/Qt5Graphics.cxx +++ b/vcl/qt5/Qt5Graphics.cxx @@ -30,6 +30,9 @@ Qt5Graphics::Qt5Graphics( Qt5Frame *pFrame ) : m_pFrame( pFrame ) , m_pQImage( nullptr ) , m_pFontCollection( nullptr ) + , m_pFontData{ nullptr, } + , m_pTextStyle{ nullptr, } + , m_aTextColor( MAKE_SALCOLOR(0x00, 0x00, 0x00) ) { } @@ -37,11 +40,17 @@ Qt5Graphics::Qt5Graphics( QImage *pQImage ) : m_pFrame( nullptr ) , m_pQImage( pQImage ) , m_pFontCollection( nullptr ) + , m_pFontData{ nullptr, } + , m_pTextStyle{ nullptr, } + , m_aTextColor( MAKE_SALCOLOR(0x00, 0x00, 0x00) ) { } Qt5Graphics::~Qt5Graphics() { + // release the text styles + for (int i = 0; i < MAX_FALLBACK; ++i) + delete m_pTextStyle[ i ]; } void Qt5Graphics::PreparePainter() diff --git a/vcl/qt5/Qt5Graphics.hxx b/vcl/qt5/Qt5Graphics.hxx index b021134e54b7..d9f74a05b919 100644 --- a/vcl/qt5/Qt5Graphics.hxx +++ b/vcl/qt5/Qt5Graphics.hxx @@ -25,9 +25,10 @@ #include <QtGui/QRegion> +class Qt5Font; +class Qt5FontFace; class Qt5Frame; class PhysicalFontCollection; -class PhysicalFontFace; class QImage; class QPainter; @@ -39,8 +40,11 @@ class Qt5Graphics : public SalGraphics QImage *m_pQImage; QRegion m_aClipRegion; std::unique_ptr< QPainter > m_pPainter; + PhysicalFontCollection *m_pFontCollection; - PhysicalFontFace *m_pFont; + const Qt5FontFace *m_pFontData[ MAX_FALLBACK ]; + Qt5Font *m_pTextStyle[ MAX_FALLBACK ]; + SalColor m_aTextColor; void PreparePainter(); diff --git a/vcl/qt5/Qt5Graphics_Text.cxx b/vcl/qt5/Qt5Graphics_Text.cxx index fe6931c84458..0053a56c412d 100644 --- a/vcl/qt5/Qt5Graphics_Text.cxx +++ b/vcl/qt5/Qt5Graphics_Text.cxx @@ -19,34 +19,78 @@ #include "Qt5Graphics.hxx" #include "Qt5FontFace.hxx" +#include <qt5/Qt5Font.hxx> #include <vcl/fontcharmap.hxx> +#include <CommonSalLayout.hxx> #include <PhysicalFontCollection.hxx> #include <QtGui/QFontDatabase> +#include <QtGui/QRawFont> #include <QtCore/QStringList> void Qt5Graphics::SetTextColor( SalColor nSalColor ) { + m_aTextColor = nSalColor; } -void Qt5Graphics::SetFont( const FontSelectPattern*, int nFallbackLevel ) +void Qt5Graphics::SetFont( const FontSelectPattern* pReqFont, int nFallbackLevel ) { + // release the text styles + for (int i = nFallbackLevel; i < MAX_FALLBACK; ++i) + { + if ( !m_pTextStyle[ i ] ) + break; + delete m_pTextStyle[ i ]; + m_pTextStyle[ i ] = nullptr; + } + + if( !pReqFont ) + // handle release-font-resources request + m_pFontData[ nFallbackLevel ] = nullptr; + else + { + m_pFontData[ nFallbackLevel ] = static_cast<const Qt5FontFace*>( pReqFont->mpFontData ); + m_pTextStyle[ nFallbackLevel ] = new Qt5Font( *pReqFont ); + } } void Qt5Graphics::GetFontMetric( ImplFontMetricDataRef &rFMD, int nFallbackLevel ) { + QRawFont aRawFont( QRawFont::fromFont( *m_pTextStyle[ nFallbackLevel ] ) ); + + QByteArray aHheaTable = aRawFont.fontTable( "hhea" ); + std::vector<uint8_t> rHhea(aHheaTable.data(), aHheaTable.data() + aHheaTable.size() ); + + QByteArray aOs2Table = aRawFont.fontTable( "OS/2" ); + std::vector<uint8_t> rOS2(aHheaTable.data(), aHheaTable.data() + aHheaTable.size() ); + + rFMD->ImplCalcLineSpacing( rHhea, rOS2, aRawFont.unitsPerEm() ); + + rFMD->SetWidth( aRawFont.averageCharWidth() ); + + const QChar nKashidaCh[ 2 ] = { 0x06, 0x40 }; + quint32 nKashidaGid = 0; + QPointF aPoint; + int nNumGlyphs; + if( aRawFont.glyphIndexesForChars( nKashidaCh, 1, &nKashidaGid, &nNumGlyphs ) + && aRawFont.advancesForGlyphIndexes( &nKashidaGid, &aPoint, 1 ) ) + rFMD->SetMinKashida( lrint(aPoint.rx()) ); } const FontCharMapRef Qt5Graphics::GetFontCharMap() const { - return nullptr; + if( !m_pFontData[ 0 ] ) + return FontCharMapRef( new FontCharMap() ); + return m_pFontData[ 0 ]->GetFontCharMap(); } bool Qt5Graphics::GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const { - return false; + if( !m_pFontData[ 0 ] ) + return false; + return m_pFontData[ 0 ]->GetFontCapabilities( rFontCapabilities ); } void Qt5Graphics::GetDevFontList( PhysicalFontCollection* pPFC ) @@ -90,7 +134,7 @@ void Qt5Graphics::FreeEmbedFontData( const void* pData, long nDataLen ) { } -void Qt5Graphics::GetGlyphWidths( const PhysicalFontFace*, bool bVertical, +void Qt5Graphics::GetGlyphWidths( const PhysicalFontFace* pPFF, bool bVertical, std::vector< sal_Int32 >& rWidths, Ucs2UIntMap& rUnicodeEnc ) { @@ -108,6 +152,8 @@ bool Qt5Graphics::GetGlyphOutline( const GlyphItem&, basegfx::B2DPolyPolygon& ) SalLayout* Qt5Graphics::GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) { + if( m_pTextStyle[ nFallbackLevel ] ) + return new CommonSalLayout( *m_pTextStyle[ nFallbackLevel ] ); return nullptr; } diff --git a/vcl/source/gdi/CommonSalLayout.cxx b/vcl/source/gdi/CommonSalLayout.cxx index 4f896e694b59..132766753174 100644 --- a/vcl/source/gdi/CommonSalLayout.cxx +++ b/vcl/source/gdi/CommonSalLayout.cxx @@ -29,7 +29,14 @@ #include <unicode/uchar.h> #include <android/compatibility.hxx> -static hb_blob_t* getFontTable(hb_face_t* /*face*/, hb_tag_t nTableTag, void* pUserData) +#if ENABLE_QT5 +#include <qt5/Qt5Font.hxx> +#include <QtGui/QRawFont> +#else +class Qt5Font; +#endif + +hb_blob_t* getFontTable(hb_face_t* /*face*/, hb_tag_t nTableTag, void* pUserData) { char pTagName[5]; pTagName[0] = (char)(nTableTag >> 24); @@ -62,9 +69,23 @@ static hb_blob_t* getFontTable(hb_face_t* /*face*/, hb_tag_t nTableTag, void* pU pFont->GetFontTable(pTagName, pBuffer); } #else - const unsigned char* pBuffer = nullptr; - FreetypeFont* pFont = static_cast<FreetypeFont*>(pUserData); - pBuffer = pFont->GetTable(pTagName, &nLength); + const char* pBuffer = nullptr; + CommonSalLayout *pLayout = static_cast<CommonSalLayout*>( pUserData ); +#if ENABLE_QT5 + QByteArray aTable; + if ( pLayout->mbUseQt5 ) + { + QRawFont aRawFont( QRawFont::fromFont( *pLayout->mpQFont ) ); + aTable = aRawFont.fontTable( pTagName ); + pBuffer = reinterpret_cast<const char*>( aTable.data() ); + nLength = aTable.size(); + } + else +#endif + { + pBuffer = reinterpret_cast<const char*>( + pLayout->mpFreetypeFont->GetTable(pTagName, &nLength) ); + } #endif hb_blob_t* pBlob = nullptr; @@ -73,7 +94,7 @@ static hb_blob_t* getFontTable(hb_face_t* /*face*/, hb_tag_t nTableTag, void* pU pBlob = hb_blob_create(reinterpret_cast<const char*>(pBuffer), nLength, HB_MEMORY_MODE_READONLY, pBuffer, [](void* data){ delete[] static_cast<unsigned char*>(data); }); #else - pBlob = hb_blob_create(reinterpret_cast<const char*>(pBuffer), nLength, HB_MEMORY_MODE_READONLY, nullptr, nullptr); + pBlob = hb_blob_create(pBuffer, nLength, HB_MEMORY_MODE_READONLY, nullptr, nullptr); #endif return pBlob; @@ -234,20 +255,51 @@ CommonSalLayout::CommonSalLayout(const CoreTextStyle& rCoreTextStyle) } #else -CommonSalLayout::CommonSalLayout(FreetypeFont& rFreetypeFont) -: mrFontSelData(rFreetypeFont.GetFontSelData()) -, mrFreetypeFont(rFreetypeFont) -, mpVertGlyphs(nullptr) + +CommonSalLayout::CommonSalLayout(const FontSelectPattern &rFSP, + FreetypeFont *pFreetypeFont, + Qt5Font *pQt5Font, bool bUseQt5) + : mrFontSelData(rFSP) + , mpFreetypeFont(pFreetypeFont) +#if ENABLE_QT5 + , mbUseQt5(bUseQt5) + , mpQFont(pQt5Font) +#endif + , mpVertGlyphs(nullptr) { - mpHbFont = rFreetypeFont.GetHbFont(); +#if ENABLE_QT5 + if (mbUseQt5) + mpHbFont = mpQFont->GetHbFont(); + else +#endif + mpHbFont = mpFreetypeFont->GetHbFont(); if (!mpHbFont) { - hb_face_t* pHbFace = hb_face_create_for_tables(getFontTable, &rFreetypeFont, nullptr); + hb_face_t* pHbFace = hb_face_create_for_tables(getFontTable, this, nullptr); mpHbFont = createHbFont(pHbFace); - mrFreetypeFont.SetHbFont(mpHbFont); +#if ENABLE_QT5 + if (mbUseQt5) + mpQFont->SetHbFont(mpHbFont); + else +#endif + mpFreetypeFont->SetHbFont(mpHbFont); } } + +CommonSalLayout::CommonSalLayout(FreetypeFont& rFreetypeFont) + : CommonSalLayout(rFreetypeFont.GetFontSelData(), + &rFreetypeFont, nullptr, false) +{ +} + +#if ENABLE_QT5 +CommonSalLayout::CommonSalLayout(Qt5Font& rQFont) + : CommonSalLayout(rQFont.GetFontSelData(), + nullptr, &rQFont, true) +{ +} +#endif #endif void CommonSalLayout::InitFont() const diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx index 5b03eda92eef..d868ff701049 100644 --- a/vcl/unx/generic/gdi/cairotextrender.cxx +++ b/vcl/unx/generic/gdi/cairotextrender.cxx @@ -157,7 +157,7 @@ namespace void CairoTextRender::DrawTextLayout(const CommonSalLayout& rLayout) { - const FreetypeFont& rFont = rLayout.getFontData(); + const FreetypeFont& rFont = *rLayout.getFreetypeFont(); std::vector<cairo_glyph_t> cairo_glyphs; std::vector<int> glyph_extrarotation; |