summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
Diffstat (limited to 'vcl')
-rw-r--r--vcl/headless/svptext.cxx2
-rw-r--r--vcl/inc/fontinstance.hxx1
-rw-r--r--vcl/inc/headless/svpgdi.hxx2
-rw-r--r--vcl/inc/qt5/Qt5FontFace.hxx2
-rw-r--r--vcl/inc/qt5/Qt5Graphics.hxx2
-rw-r--r--vcl/inc/quartz/salgdi.h2
-rw-r--r--vcl/inc/salgdi.hxx2
-rw-r--r--vcl/inc/textrender.hxx2
-rw-r--r--vcl/inc/unx/cairotextrender.hxx4
-rw-r--r--vcl/inc/unx/genpspgraphics.h2
-rw-r--r--vcl/inc/unx/salgdi.h2
-rw-r--r--vcl/inc/win/salgdi.h4
-rw-r--r--vcl/qt5/Qt5Graphics_Text.cxx7
-rw-r--r--vcl/quartz/salgdi.cxx21
-rw-r--r--vcl/source/font/fontinstance.cxx5
-rw-r--r--vcl/source/gdi/print.cxx2
-rw-r--r--vcl/source/outdev/font.cxx17
-rw-r--r--vcl/unx/generic/gdi/cairotextrender.cxx6
-rw-r--r--vcl/unx/generic/gdi/font.cxx3
-rw-r--r--vcl/unx/generic/print/genpspgraphics.cxx26
-rw-r--r--vcl/win/gdi/salfont.cxx16
21 files changed, 58 insertions, 72 deletions
diff --git a/vcl/headless/svptext.cxx b/vcl/headless/svptext.cxx
index 747fffe104f1..aab960a576a7 100644
--- a/vcl/headless/svptext.cxx
+++ b/vcl/headless/svptext.cxx
@@ -26,7 +26,7 @@
#include <impfontmetricdata.hxx>
#include <sallayout.hxx>
-void SvpSalGraphics::SetFont( const FontSelectPattern* pIFSD, int nFallbackLevel )
+void SvpSalGraphics::SetFont(LogicalFontInstance* pIFSD, int nFallbackLevel)
{
m_aTextRenderImpl.SetFont(pIFSD, nFallbackLevel);
}
diff --git a/vcl/inc/fontinstance.hxx b/vcl/inc/fontinstance.hxx
index 149bb553c3eb..597c747553ac 100644
--- a/vcl/inc/fontinstance.hxx
+++ b/vcl/inc/fontinstance.hxx
@@ -60,6 +60,7 @@ public: // TODO: make data members private
inline hb_font_t* GetHbFont();
void SetAverageWidthFactor(double nFactor) { m_nAveWidthFactor = nFactor; }
+ void SetNonAntialiased(bool bNonAntialiased);
double GetAverageWidthFactor() const { return m_nAveWidthFactor; }
const FontSelectPattern& GetFontSelectPattern() const { return m_aFontSelData; }
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index 6571d21cf89d..a85193ea6521 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -161,7 +161,7 @@ public:
virtual void SetROPFillColor( SalROPColor nROPColor ) override;
virtual void SetTextColor( Color nColor ) override;
- virtual void SetFont( const FontSelectPattern*, int nFallbackLevel ) override;
+ virtual void SetFont( LogicalFontInstance*, int nFallbackLevel ) override;
virtual void GetFontMetric( ImplFontMetricDataRef&, int nFallbackLevel ) override;
virtual const FontCharMapRef GetFontCharMap() const override;
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const override;
diff --git a/vcl/inc/qt5/Qt5FontFace.hxx b/vcl/inc/qt5/Qt5FontFace.hxx
index c653b4be6f6e..70522f67e0d6 100644
--- a/vcl/inc/qt5/Qt5FontFace.hxx
+++ b/vcl/inc/qt5/Qt5FontFace.hxx
@@ -28,7 +28,7 @@
#include <QtCore/QString>
class FontAttributes;
-class FontSelectPattern;
+class FontSelectPatternAttributes;
class QFont;
class Qt5FontFace : public PhysicalFontFace
diff --git a/vcl/inc/qt5/Qt5Graphics.hxx b/vcl/inc/qt5/Qt5Graphics.hxx
index 88382a0c11f3..fa9823b0e789 100644
--- a/vcl/inc/qt5/Qt5Graphics.hxx
+++ b/vcl/inc/qt5/Qt5Graphics.hxx
@@ -172,7 +172,7 @@ public:
// Text rendering + font support
virtual void SetTextColor(Color nColor) override;
- virtual void SetFont(const FontSelectPattern*, int nFallbackLevel) override;
+ virtual void SetFont(LogicalFontInstance*, int nFallbackLevel) override;
virtual void GetFontMetric(ImplFontMetricDataRef&, int nFallbackLevel) override;
virtual const FontCharMapRef GetFontCharMap() const override;
virtual bool GetFontCapabilities(vcl::FontCapabilities& rFontCapabilities) const override;
diff --git a/vcl/inc/quartz/salgdi.h b/vcl/inc/quartz/salgdi.h
index a8341c65692e..31a8353a17ed 100644
--- a/vcl/inc/quartz/salgdi.h
+++ b/vcl/inc/quartz/salgdi.h
@@ -323,7 +323,7 @@ public:
// set the text color to a specific color
virtual void SetTextColor( Color nColor ) override;
// set the font
- virtual void SetFont( const FontSelectPattern*, int nFallbackLevel ) override;
+ virtual void SetFont( LogicalFontInstance*, int nFallbackLevel ) override;
// get the current font's metrics
virtual void GetFontMetric( ImplFontMetricDataRef&, int nFallbackLevel ) override;
// get the repertoire of the current font
diff --git a/vcl/inc/salgdi.hxx b/vcl/inc/salgdi.hxx
index cacbfc71336b..84f0551a6d2d 100644
--- a/vcl/inc/salgdi.hxx
+++ b/vcl/inc/salgdi.hxx
@@ -123,7 +123,7 @@ public:
virtual void SetTextColor( Color nColor ) = 0;
// set the font
- virtual void SetFont( const FontSelectPattern*, int nFallbackLevel ) = 0;
+ virtual void SetFont( LogicalFontInstance*, int nFallbackLevel ) = 0;
// release the fonts
void ReleaseFonts() { SetFont( nullptr, 0 ); }
diff --git a/vcl/inc/textrender.hxx b/vcl/inc/textrender.hxx
index eb86e3b2bcf4..0dbf0bdd56bb 100644
--- a/vcl/inc/textrender.hxx
+++ b/vcl/inc/textrender.hxx
@@ -35,7 +35,7 @@ public:
virtual ~TextRenderImpl() {}
virtual void SetTextColor( Color nColor ) = 0;
- virtual void SetFont( const FontSelectPattern*, int nFallbackLevel ) = 0;
+ virtual void SetFont( LogicalFontInstance*, int nFallbackLevel ) = 0;
virtual void GetFontMetric( ImplFontMetricDataRef&, int nFallbackLevel ) = 0;
virtual const FontCharMapRef GetFontCharMap() const = 0;
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const = 0;
diff --git a/vcl/inc/unx/cairotextrender.hxx b/vcl/inc/unx/cairotextrender.hxx
index 65d2bed2918e..707bec9a0bf7 100644
--- a/vcl/inc/unx/cairotextrender.hxx
+++ b/vcl/inc/unx/cairotextrender.hxx
@@ -42,7 +42,7 @@ protected:
virtual void getSurfaceOffset(double& nDX, double& nDY) = 0;
virtual void releaseCairoContext(cairo_t* cr) = 0;
- void setFont( const FontSelectPattern *pEntry, int nFallbackLevel );
+ void setFont( LogicalFontInstance *pEntry, int nFallbackLevel );
virtual void clipRegion(cairo_t* cr) = 0;
@@ -51,7 +51,7 @@ public:
virtual void SetTextColor( Color nColor ) override;
- virtual void SetFont( const FontSelectPattern*, int nFallbackLevel ) override;
+ virtual void SetFont( LogicalFontInstance*, int nFallbackLevel ) override;
virtual void GetFontMetric( ImplFontMetricDataRef&, int nFallbackLevel ) override;
virtual const FontCharMapRef GetFontCharMap() const override;
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const override;
diff --git a/vcl/inc/unx/genpspgraphics.h b/vcl/inc/unx/genpspgraphics.h
index a4a9885d8cb7..ecd4ce9a11d9 100644
--- a/vcl/inc/unx/genpspgraphics.h
+++ b/vcl/inc/unx/genpspgraphics.h
@@ -83,7 +83,7 @@ public:
virtual void SetROPFillColor( SalROPColor nROPColor ) override;
virtual void SetTextColor( Color nColor ) override;
- virtual void SetFont( const FontSelectPattern*, int nFallbackLevel ) override;
+ virtual void SetFont( LogicalFontInstance*, int nFallbackLevel ) override;
virtual void GetFontMetric( ImplFontMetricDataRef&, int nFallbackLevel ) override;
virtual const FontCharMapRef GetFontCharMap() const override;
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const override;
diff --git a/vcl/inc/unx/salgdi.h b/vcl/inc/unx/salgdi.h
index 9b656ac30223..5bca1ae938c7 100644
--- a/vcl/inc/unx/salgdi.h
+++ b/vcl/inc/unx/salgdi.h
@@ -115,7 +115,7 @@ public:
virtual void SetROPFillColor( SalROPColor nROPColor ) override;
virtual void SetTextColor( Color nColor ) override;
- virtual void SetFont( const FontSelectPattern*, int nFallbackLevel ) override;
+ virtual void SetFont( LogicalFontInstance*, int nFallbackLevel ) override;
virtual void GetFontMetric( ImplFontMetricDataRef&, int nFallbackLevel ) override;
virtual const FontCharMapRef GetFontCharMap() const override;
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const override;
diff --git a/vcl/inc/win/salgdi.h b/vcl/inc/win/salgdi.h
index 85b92946226e..c55193e255e9 100644
--- a/vcl/inc/win/salgdi.h
+++ b/vcl/inc/win/salgdi.h
@@ -185,7 +185,7 @@ private:
bool CacheGlyphs(const GenericSalLayout& rLayout);
bool DrawCachedGlyphs(const GenericSalLayout& rLayout);
- HFONT ImplDoSetFont(FontSelectPattern const * i_pFont, const PhysicalFontFace * i_pFontFace, float& o_rFontScale, HFONT& o_rOldFont);
+ HFONT ImplDoSetFont(FontSelectPattern const & i_rFont, const PhysicalFontFace * i_pFontFace, float& o_rFontScale, HFONT& o_rOldFont);
public:
HDC getHDC() const { return mhLocalDC; }
@@ -337,7 +337,7 @@ public:
// set the text color to a specific color
virtual void SetTextColor( Color nColor ) override;
// set the font
- virtual void SetFont( const FontSelectPattern*, int nFallbackLevel ) override;
+ virtual void SetFont( LogicalFontInstance*, int nFallbackLevel ) override;
// get the current font's metrics
virtual void GetFontMetric( ImplFontMetricDataRef&, int nFallbackLevel ) override;
// get the repertoire of the current font
diff --git a/vcl/qt5/Qt5Graphics_Text.cxx b/vcl/qt5/Qt5Graphics_Text.cxx
index 37a0879b0044..94aa069db0c1 100644
--- a/vcl/qt5/Qt5Graphics_Text.cxx
+++ b/vcl/qt5/Qt5Graphics_Text.cxx
@@ -36,7 +36,7 @@
void Qt5Graphics::SetTextColor(Color nColor) { m_aTextColor = nColor; }
-void Qt5Graphics::SetFont(const FontSelectPattern* pReqFont, int nFallbackLevel)
+void Qt5Graphics::SetFont(LogicalFontInstance* pReqFont, int nFallbackLevel)
{
// release the text styles
for (int i = nFallbackLevel; i < MAX_FALLBACK; ++i)
@@ -48,11 +48,8 @@ void Qt5Graphics::SetFont(const FontSelectPattern* pReqFont, int nFallbackLevel)
if (!pReqFont)
return;
- assert(pReqFont->mpFontInstance);
- if (!pReqFont->mpFontInstance)
- return;
- m_pTextStyle[nFallbackLevel] = static_cast<Qt5Font*>(pReqFont->mpFontInstance.get());
+ m_pTextStyle[nFallbackLevel] = static_cast<Qt5Font*>(pReqFont);
}
void Qt5Graphics::GetFontMetric(ImplFontMetricDataRef& rFMD, int nFallbackLevel)
diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index e586ccb6c19f..3f74e05f5910 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -474,7 +474,7 @@ void AquaSalGraphics::DrawTextLayout(const GenericSalLayout& rLayout)
CGContextRestoreGState(mrContext);
}
-void AquaSalGraphics::SetFont(const FontSelectPattern* pReqFont, int nFallbackLevel)
+void AquaSalGraphics::SetFont(LogicalFontInstance* pReqFont, int nFallbackLevel)
{
// release the text style
for (int i = nFallbackLevel; i < MAX_FALLBACK; ++i)
@@ -486,26 +486,9 @@ void AquaSalGraphics::SetFont(const FontSelectPattern* pReqFont, int nFallbackLe
if (!pReqFont)
return;
- assert(pReqFont->mpFontInstance);
- if (!pReqFont->mpFontInstance)
- return;
// update the text style
- mpTextStyle[nFallbackLevel] = static_cast<CoreTextStyle*>(pReqFont->mpFontInstance.get());
-
- SAL_INFO("vcl.ct",
- "SetFont"
- " to " << mpTextStyle[nFallbackLevel]->GetFontFace()->GetFamilyName()
- << ", " << mpTextStyle[nFallbackLevel]->GetFontFace()->GetStyleName()
- << " fontid=" << mpTextStyle[nFallbackLevel]->GetFontFace()->GetFontId()
- << " for " << pReqFont->GetFamilyName()
- << ", " << pReqFont->GetStyleName()
- << " weight=" << pReqFont->GetWeight()
- << " slant=" << pReqFont->GetItalic()
- << " size=" << pReqFont->mnHeight << "x" << pReqFont->mnWidth
- << " orientation=" << pReqFont->mnOrientation
- << " fallback level " << nFallbackLevel
- );
+ mpTextStyle[nFallbackLevel] = static_cast<CoreTextStyle*>(pReqFont);
}
std::unique_ptr<SalLayout> AquaSalGraphics::GetTextLayout(ImplLayoutArgs& /*rArgs*/, int nFallbackLevel)
diff --git a/vcl/source/font/fontinstance.cxx b/vcl/source/font/fontinstance.cxx
index e5fac6c6a67b..25c637706ca6 100644
--- a/vcl/source/font/fontinstance.cxx
+++ b/vcl/source/font/fontinstance.cxx
@@ -56,6 +56,11 @@ LogicalFontInstance::LogicalFontInstance(const PhysicalFontFace& rFontFace, cons
const_cast<FontSelectPattern*>(&m_aFontSelData)->mpFontInstance = this;
}
+void LogicalFontInstance::SetNonAntialiased(bool bNonAntialiased)
+{
+ const_cast<FontSelectPattern*>(&m_aFontSelData)->mbNonAntialiased = bNonAntialiased;
+}
+
LogicalFontInstance::~LogicalFontInstance()
{
mpUnicodeFallbackList.reset();
diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx
index 4f62d062f8a2..90396200063e 100644
--- a/vcl/source/gdi/print.cxx
+++ b/vcl/source/gdi/print.cxx
@@ -1688,7 +1688,7 @@ void Printer::InitFont() const
if ( mbInitFont )
{
// select font in the device layers
- mpGraphics->SetFont(&mpFontInstance->GetFontSelectPattern(), 0);
+ mpGraphics->SetFont(mpFontInstance.get(), 0);
mbInitFont = false;
}
}
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index 72338d32bac1..9b9479b25444 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -1003,17 +1003,15 @@ void OutputDevice::InitFont() const
{
// decide if antialiasing is appropriate
bool bNonAntialiased(GetAntialiasing() & AntialiasingFlags::DisableText);
- FontSelectPattern aPattern(mpFontInstance->GetFontSelectPattern());
if (!utl::ConfigManager::IsFuzzing())
{
const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
bNonAntialiased |= bool(rStyleSettings.GetDisplayOptions() & DisplayOptions::AADisable);
- bNonAntialiased |= (int(rStyleSettings.GetAntialiasingMinPixelHeight()) > aPattern.mnHeight);
+ bNonAntialiased |= (int(rStyleSettings.GetAntialiasingMinPixelHeight()) > mpFontInstance->GetFontSelectPattern().mnHeight);
}
- aPattern.mbNonAntialiased = bNonAntialiased;
-
+ mpFontInstance->SetNonAntialiased(bNonAntialiased);
// select font in the device layers
- mpGraphics->SetFont(&aPattern, 0);
+ mpGraphics->SetFont(mpFontInstance.get(), 0);
mbInitFont = false;
}
}
@@ -1314,7 +1312,7 @@ void OutputDevice::ImplDrawEmphasisMarks( SalLayout& rSalLayout )
}
std::unique_ptr<SalLayout> OutputDevice::getFallbackFont(
- FontSelectPattern &rFontSelData, int nFallbackLevel,
+ LogicalFontInstance* pLogicalFont, int nFallbackLevel,
ImplLayoutArgs& rLayoutArgs) const
{
// we need a graphics
@@ -1322,7 +1320,7 @@ std::unique_ptr<SalLayout> OutputDevice::getFallbackFont(
return nullptr;
assert(mpGraphics != nullptr);
- mpGraphics->SetFont( &rFontSelData, nFallbackLevel );
+ mpGraphics->SetFont( pLogicalFont, nFallbackLevel );
rLayoutArgs.ResetPos();
std::unique_ptr<SalLayout> pFallback = mpGraphics->GetTextLayout( rLayoutArgs, nFallbackLevel );
@@ -1383,7 +1381,6 @@ std::unique_ptr<SalLayout> OutputDevice::ImplGlyphFallbackLayout( std::unique_pt
if( !pFallbackFont )
break;
- aFontSelData.mpFontInstance = pFallbackFont;
if( nFallbackLevel < MAX_FALLBACK-1)
{
// ignore fallback font if it is the same as the original font
@@ -1397,14 +1394,14 @@ std::unique_ptr<SalLayout> OutputDevice::ImplGlyphFallbackLayout( std::unique_pt
}
// create and add glyph fallback layout to multilayout
- std::unique_ptr<SalLayout> pFallback = getFallbackFont(aFontSelData,
+ std::unique_ptr<SalLayout> pFallback = getFallbackFont(pFallbackFont.get(),
nFallbackLevel, rLayoutArgs);
if (pFallback)
{
if( !pMultiSalLayout )
pMultiSalLayout.reset( new MultiSalLayout( std::move(pSalLayout) ) );
pMultiSalLayout->AddFallback( std::move(pFallback),
- rLayoutArgs.maRuns, aFontSelData.mpFontInstance->GetFontFace() );
+ rLayoutArgs.maRuns, pFallbackFont->GetFontFace() );
if (nFallbackLevel == MAX_FALLBACK-1)
pMultiSalLayout->SetIncomplete(true);
}
diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx
index 4711f7084ab9..600a1eaafa81 100644
--- a/vcl/unx/generic/gdi/cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/cairotextrender.cxx
@@ -84,7 +84,7 @@ CairoTextRender::CairoTextRender()
rp = nullptr;
}
-void CairoTextRender::setFont( const FontSelectPattern *pEntry, int nFallbackLevel )
+void CairoTextRender::setFont( LogicalFontInstance *pEntry, int nFallbackLevel )
{
// release all no longer needed font resources
for( int i = nFallbackLevel; i < MAX_FALLBACK; ++i )
@@ -102,7 +102,7 @@ void CairoTextRender::setFont( const FontSelectPattern *pEntry, int nFallbackLev
return;
// handle the request for a non-native X11-font => use the GlyphCache
- FreetypeFont* pFreetypeFont = GlyphCache::GetInstance().CacheFont( *pEntry );
+ FreetypeFont* pFreetypeFont = GlyphCache::GetInstance().CacheFont(pEntry->GetFontSelectPattern());
if( pFreetypeFont != nullptr )
{
// ignore fonts with e.g. corrupted font files
@@ -364,7 +364,7 @@ bool CairoTextRender::GetFontCapabilities(vcl::FontCapabilities &rGetImplFontCap
// SalGraphics
-void CairoTextRender::SetFont( const FontSelectPattern *pEntry, int nFallbackLevel )
+void CairoTextRender::SetFont( LogicalFontInstance *pEntry, int nFallbackLevel )
{
setFont(pEntry, nFallbackLevel);
}
diff --git a/vcl/unx/generic/gdi/font.cxx b/vcl/unx/generic/gdi/font.cxx
index 9cdbff3ea69d..381e79373953 100644
--- a/vcl/unx/generic/gdi/font.cxx
+++ b/vcl/unx/generic/gdi/font.cxx
@@ -69,8 +69,7 @@ bool X11SalGraphics::GetFontCapabilities(vcl::FontCapabilities &rGetImplFontCapa
}
// SalGraphics
-
-void X11SalGraphics::SetFont( const FontSelectPattern *pEntry, int nFallbackLevel )
+void X11SalGraphics::SetFont(LogicalFontInstance* pEntry, int nFallbackLevel)
{
mxTextRenderImpl->SetFont(pEntry, nFallbackLevel);
}
diff --git a/vcl/unx/generic/print/genpspgraphics.cxx b/vcl/unx/generic/print/genpspgraphics.cxx
index b73fc595daea..7bd9490899ad 100644
--- a/vcl/unx/generic/print/genpspgraphics.cxx
+++ b/vcl/unx/generic/print/genpspgraphics.cxx
@@ -592,7 +592,7 @@ bool GenPspGraphics::GetFontCapabilities(vcl::FontCapabilities &rFontCapabilitie
return m_pFreetypeFont[0]->GetFontCapabilities(rFontCapabilities);
}
-void GenPspGraphics::SetFont( const FontSelectPattern *pEntry, int nFallbackLevel )
+void GenPspGraphics::SetFont( LogicalFontInstance *pFontInstance, int nFallbackLevel )
{
// release all fonts that are to be overridden
for( int i = nFallbackLevel; i < MAX_FALLBACK; ++i )
@@ -606,32 +606,36 @@ void GenPspGraphics::SetFont( const FontSelectPattern *pEntry, int nFallbackLeve
}
// return early if there is no new font
- if( !pEntry )
+ if (!pFontInstance)
return;
- sal_IntPtr nID = pEntry->mpFontInstance ? pEntry->mpFontInstance->GetFontFace()->GetFontId() : 0;
+ sal_IntPtr nID = pFontInstance->GetFontFace()->GetFontId();
+
+ const FontSelectPattern& rEntry = pFontInstance->GetFontSelectPattern();
// determine which font attributes need to be emulated
bool bArtItalic = false;
bool bArtBold = false;
- if( pEntry->GetItalic() == ITALIC_OBLIQUE || pEntry->GetItalic() == ITALIC_NORMAL )
+ if( rEntry.GetItalic() == ITALIC_OBLIQUE || rEntry.GetItalic() == ITALIC_NORMAL )
{
FontItalic eItalic = m_pPrinterGfx->GetFontMgr().getFontItalic( nID );
if( eItalic != ITALIC_NORMAL && eItalic != ITALIC_OBLIQUE )
bArtItalic = true;
}
- int nWeight = static_cast<int>(pEntry->GetWeight());
+ int nWeight = static_cast<int>(rEntry.GetWeight());
int nRealWeight = static_cast<int>(m_pPrinterGfx->GetFontMgr().getFontWeight( nID ));
if( nRealWeight <= int(WEIGHT_MEDIUM) && nWeight > int(WEIGHT_MEDIUM) )
{
bArtBold = true;
}
+ assert(rEntry.mpFontInstance == pFontInstance);
+
// also set the serverside font for layouting
- if( pEntry->mpFontInstance )
+ if( rEntry.mpFontInstance )
{
// requesting a font provided by builtin rasterizer
- FreetypeFont* pFreetypeFont = GlyphCache::GetInstance().CacheFont( *pEntry );
+ FreetypeFont* pFreetypeFont = GlyphCache::GetInstance().CacheFont( rEntry );
if( pFreetypeFont != nullptr )
{
if( pFreetypeFont->TestFont() )
@@ -643,10 +647,10 @@ void GenPspGraphics::SetFont( const FontSelectPattern *pEntry, int nFallbackLeve
// set the printer font
m_pPrinterGfx->SetFont( nID,
- pEntry->mnHeight,
- pEntry->mnWidth,
- pEntry->mnOrientation,
- pEntry->mbVertical,
+ rEntry.mnHeight,
+ rEntry.mnWidth,
+ rEntry.mnOrientation,
+ rEntry.mbVertical,
bArtItalic,
bArtBold
);
diff --git a/vcl/win/gdi/salfont.cxx b/vcl/win/gdi/salfont.cxx
index c471c0c3be1f..c4970b0ce9b4 100644
--- a/vcl/win/gdi/salfont.cxx
+++ b/vcl/win/gdi/salfont.cxx
@@ -845,7 +845,7 @@ void ImplGetLogFontFromFontSelect( HDC hDC,
}
}
-HFONT WinSalGraphics::ImplDoSetFont(FontSelectPattern const * i_pFont,
+HFONT WinSalGraphics::ImplDoSetFont(FontSelectPattern const & i_rFont,
const PhysicalFontFace * i_pFontFace,
float& o_rFontScale,
HFONT& o_rOldFont)
@@ -860,7 +860,7 @@ HFONT WinSalGraphics::ImplDoSetFont(FontSelectPattern const * i_pFont,
hdcScreen = GetDC(nullptr);
LOGFONTW aLogFont;
- ImplGetLogFontFromFontSelect( getHDC(), i_pFont, i_pFontFace, aLogFont );
+ ImplGetLogFontFromFontSelect( getHDC(), &i_rFont, i_pFontFace, aLogFont );
// #i47675# limit font requests to MAXFONTHEIGHT
// TODO: share MAXFONTHEIGHT font instance
@@ -912,7 +912,7 @@ HFONT WinSalGraphics::ImplDoSetFont(FontSelectPattern const * i_pFont,
return hNewFont;
}
-void WinSalGraphics::SetFont( const FontSelectPattern* pFont, int nFallbackLevel )
+void WinSalGraphics::SetFont(LogicalFontInstance* pFont, int nFallbackLevel)
{
// return early if there is no new font
if( !pFont )
@@ -939,10 +939,10 @@ void WinSalGraphics::SetFont( const FontSelectPattern* pFont, int nFallbackLevel
// WinSalGraphics::GetEmbedFontData does not set mpFontInstance
// since it is interested in font file data only.
- mpWinFontEntry[ nFallbackLevel ] = reinterpret_cast<WinFontInstance*>( pFont->mpFontInstance.get() );
+ mpWinFontEntry[ nFallbackLevel ] = reinterpret_cast<WinFontInstance*>(pFont);
HFONT hOldFont = nullptr;
- HFONT hNewFont = ImplDoSetFont(pFont, nullptr, mfFontScale[ nFallbackLevel ], hOldFont);
+ HFONT hNewFont = ImplDoSetFont(pFont->GetFontSelectPattern(), nullptr, mfFontScale[ nFallbackLevel ], hOldFont);
mfCurrentFontScale = mfFontScale[nFallbackLevel];
if( !mhDefFont )
@@ -1659,7 +1659,7 @@ bool WinSalGraphics::CreateFontSubset( const OUString& rToFile,
ScopedFont aOldFont(*this);
float fScale = 1.0;
HFONT hOldFont = nullptr;
- ImplDoSetFont(&aIFSD, pFont, fScale, hOldFont);
+ ImplDoSetFont(aIFSD, pFont, fScale, hOldFont);
WinFontFace const * pWinFontData = static_cast<WinFontFace const *>(pFont);
@@ -1780,7 +1780,7 @@ const void* WinSalGraphics::GetEmbedFontData(const PhysicalFontFace* pFont, long
float fScale = 0.0;
HFONT hOldFont = nullptr;
- ImplDoSetFont(&aIFSD, pFont, fScale, hOldFont);
+ ImplDoSetFont(aIFSD, pFont, fScale, hOldFont);
// get the raw font file data
RawFontData aRawFontData( getHDC() );
@@ -1811,7 +1811,7 @@ void WinSalGraphics::GetGlyphWidths( const PhysicalFontFace* pFont,
float fScale = 0.0;
HFONT hOldFont = nullptr;
- ImplDoSetFont(&aIFSD, pFont, fScale, hOldFont);
+ ImplDoSetFont(aIFSD, pFont, fScale, hOldFont);
// get raw font file data
const RawFontData xRawFontData( getHDC() );