summaryrefslogtreecommitdiff
path: root/vcl/inc
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/inc')
-rw-r--r--vcl/inc/cairotextrender.hxx3
-rw-r--r--vcl/inc/fontattributes.hxx144
-rw-r--r--vcl/inc/fontinstance.hxx9
-rw-r--r--vcl/inc/headless/svpgdi.hxx3
-rw-r--r--vcl/inc/impfontmetricdata.hxx182
-rw-r--r--vcl/inc/quartz/salgdi.h5
-rw-r--r--vcl/inc/salgdi.hxx4
-rw-r--r--vcl/inc/textrender.hxx3
-rw-r--r--vcl/inc/unx/genpspgraphics.h3
-rw-r--r--vcl/inc/unx/glyphcache.hxx15
-rw-r--r--vcl/inc/unx/salgdi.h2
-rw-r--r--vcl/inc/win/salgdi.h3
12 files changed, 212 insertions, 164 deletions
diff --git a/vcl/inc/cairotextrender.hxx b/vcl/inc/cairotextrender.hxx
index fdd719b0f85c..027d88570104 100644
--- a/vcl/inc/cairotextrender.hxx
+++ b/vcl/inc/cairotextrender.hxx
@@ -33,6 +33,7 @@ class ImplLayoutArgs;
class ServerFontLayout;
class PhysicalFontCollection;
class PhysicalFontFace;
+class ImplFontMetricData;
typedef struct _cairo cairo_t;
class VCL_DLLPUBLIC CairoFontsCache
@@ -89,7 +90,7 @@ public:
virtual void SetTextColor( SalColor nSalColor ) override;
virtual sal_uInt16 SetFont( FontSelectPattern*, int nFallbackLevel ) override;
- virtual void GetFontAttributes( FontAttributes*, int nFallbackLevel ) override;
+ virtual void GetFontMetric( ImplFontMetricData*, int nFallbackLevel ) override;
virtual const FontCharMapPtr GetFontCharMap() const override;
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const override;
virtual void GetDevFontList( PhysicalFontCollection* ) override;
diff --git a/vcl/inc/fontattributes.hxx b/vcl/inc/fontattributes.hxx
index 9ff1b7c34445..63ab8c3d5757 100644
--- a/vcl/inc/fontattributes.hxx
+++ b/vcl/inc/fontattributes.hxx
@@ -34,9 +34,6 @@ class FontSelectPattern;
class FontAttributes
{
public:
- explicit FontAttributes();
- explicit FontAttributes( const FontSelectPattern& );
-
// device independent font functions
const OUString& GetFamilyName() const { return maFamilyName; }
FontFamily GetFamilyType() const { return meFamily; }
@@ -97,99 +94,6 @@ public:
void SetSubsettableFlag( bool bSubsettable ) { mbSubsettable = bSubsettable; }
void SetOrientationFlag( bool bCanRotate ) { mbOrientation = bCanRotate; }
- // Font metrics below
-
- // font instance attributes from the font request
- long GetWidth() { return mnWidth; }
- short GetOrientation() { return mnOrientation; }
-
- void SetWidth(long nWidth) { mnWidth=nWidth; }
- void SetOrientation(short nOrientation) { mnOrientation=nOrientation; }
-
- // font metrics measured for the font instance
- long GetAscent() { return mnAscent; }
- long GetDescent() { return mnDescent; }
- long GetInternalLeading() { return mnIntLeading; }
- long GetExternalLeading() { return mnExtLeading; }
- int GetSlant() { return mnSlant; }
- long GetMinKashida() { return mnMinKashida; }
-
- void SetAscent(long nAscent) { mnAscent=nAscent; }
- void SetDescent(long nDescent) { mnDescent=nDescent; }
- void SetInternalLeading(long nIntLeading) { mnIntLeading = nIntLeading; }
- void SetExternalLeading(long nExtLeading) { mnExtLeading = nExtLeading; }
- void SetSlant(int nSlant) { mnSlant=nSlant; }
- void SetMinKashida( long nMinKashida ) { mnMinKashida=nMinKashida; }
-
- // font attributes queried from the font instance
- bool IsScalable() { return mbScalableFont; }
- bool IsTrueTypeFont() { return mbTrueTypeFont; }
- bool IsKernable() { return mbKernableFont; }
- bool IsFullstopCentered() { return mbFullstopCentered; }
- long GetBulletOffset() { return mnBulletOffset; }
-
- void SetScalableFlag(bool bScalable) { mbScalableFont = bScalable; }
- void SetTrueTypeFlag(bool bTrueTypeFont) { mbTrueTypeFont = bTrueTypeFont; }
- void SetKernableFlag(bool bKernable) { mbKernableFont = bKernable; }
- void SetFullstopCenteredFlag(bool bFullstopCentered) { mbFullstopCentered = bFullstopCentered; }
- void SetBulletOffset(long nBulletOffset) { mnBulletOffset = nBulletOffset; }
-
- // font metrics that are usually derived from the measurements
- long GetUnderlineSize() { return mnUnderlineSize; }
- long GetUnderlineOffset() { return mnUnderlineOffset; }
- long GetBoldUnderlineSize() { return mnBUnderlineSize; }
- long GetBoldUnderlineOffset() { return mnBUnderlineOffset; }
- long GetDoubleUnderlineSize() { return mnDUnderlineSize; }
- long GetDoubleUnderlineOffset1() { return mnDUnderlineOffset1; }
- long GetDoubleUnderlineOffset2() { return mnDUnderlineOffset2; }
- long GetWavelineUnderlineSize() { return mnWUnderlineSize; }
- long GetWavelineUnderlineOffset() { return mnWUnderlineOffset; }
- long GetAboveUnderlineSize() { return mnAboveUnderlineSize; }
- long GetAboveUnderlineOffset() { return mnAboveUnderlineOffset; }
- long GetAboveBoldUnderlineSize() { return mnAboveBUnderlineSize; }
- long GetAboveBoldUnderlineOffset() { return mnAboveBUnderlineOffset; }
- long GetAboveDoubleUnderlineSize() { return mnAboveDUnderlineSize; }
- long GetAboveDoubleUnderlineOffset1() { return mnAboveDUnderlineOffset1; }
- long GetAboveDoubleUnderlineOffset2() { return mnAboveDUnderlineOffset2; }
- long GetAboveWavelineUnderlineSize() { return mnAboveWUnderlineSize; }
- long GetAboveWavelineUnderlineOffset() { return mnAboveWUnderlineOffset; }
- long GetStrikeoutSize() { return mnStrikeoutSize; }
- long GetStrikeoutOffset() { return mnStrikeoutOffset; }
- long GetBoldStrikeoutSize() { return mnBStrikeoutSize; }
- long GetBoldStrikeoutOffset() { return mnBStrikeoutOffset; }
- long GetDoubleStrikeoutSize() { return mnDStrikeoutSize; }
- long GetDoubleStrikeoutOffset1() { return mnDStrikeoutOffset1; }
- long GetDoubleStrikeoutOffset2() { return mnDStrikeoutOffset2; }
-
- void SetUnderlineSize( long nUnderlineSize ) { mnUnderlineSize = nUnderlineSize; }
- void SetUnderlineOffset( long nUnderlineOffset ) { mnUnderlineOffset = nUnderlineOffset; }
- void SetBoldUnderlineSize( long nBUnderlineSize ) { mnBUnderlineSize = nBUnderlineSize; }
- void SetBoldUnderlineOffset( long nBUnderlineOffset ) { mnBUnderlineOffset = nBUnderlineOffset; }
- void SetDoubleUnderlineSize( long nDUnderlineSize ) { mnDUnderlineSize = nDUnderlineSize; }
- void SetDoubleUnderlineOffset1( long nDUnderlineOffset1 ) { mnDUnderlineOffset1 = nDUnderlineOffset1; }
- void SetDoubleUnderlineOffset2( long nDUnderlineOffset2 ) { mnDUnderlineOffset2 = nDUnderlineOffset2; }
- void SetWavelineUnderlineSize( long nWUnderlineSize ) { mnWUnderlineSize = nWUnderlineSize; }
- void SetWavelineUnderlineOffset( long nWUnderlineOffset ) { mnWUnderlineOffset = nWUnderlineOffset; }
- void SetAboveUnderlineSize( long nAboveUnderlineSize ) { mnAboveUnderlineSize = nAboveUnderlineSize; }
- void SetAboveUnderlineOffset( long nAboveUnderlineOffset ) { mnAboveUnderlineOffset = nAboveUnderlineOffset; }
- void SetAboveBoldUnderlineSize( long nAboveBUnderlineSize ) { mnAboveBUnderlineSize = nAboveBUnderlineSize; }
- void SetAboveBoldUnderlineOffset( long nAboveBUnderlineOffset ) { mnAboveBUnderlineOffset = nAboveBUnderlineOffset; }
- void SetAboveDoubleUnderlineSize( long nAboveDUnderlineSize ) { mnAboveDUnderlineSize = nAboveDUnderlineSize; }
- void SetAboveDoubleUnderlineOffset1( long nAboveDUnderlineOffset1 ) { mnAboveDUnderlineOffset1 = nAboveDUnderlineOffset1; }
- void SetAboveDoubleUnderlineOffset2( long nAboveDUnderlineOffset2 ) { mnAboveDUnderlineOffset2 = nAboveDUnderlineOffset2; }
- void SetAboveWavelineUnderlineSize( long nAboveWUnderlineSize ) { mnAboveWUnderlineSize = nAboveWUnderlineSize; }
- void SetAboveWavelineUnderlineOffset( long nAboveWUnderlineOffset ) { mnAboveWUnderlineOffset = nAboveWUnderlineOffset; }
- void SetStrikeoutSize( long nStrikeoutSize ) { mnStrikeoutSize = nStrikeoutSize; }
- void SetStrikeoutOffset( long nStrikeoutOffset ) { mnStrikeoutOffset = nStrikeoutOffset; }
- void SetBoldStrikeoutSize( long nBStrikeoutSize ) { mnBStrikeoutSize = nBStrikeoutSize; }
- void SetBoldStrikeoutOffset( long nBStrikeoutOffset ) { mnBStrikeoutOffset = nBStrikeoutOffset; }
- void SetDoubleStrikeoutSize( long nDStrikeoutSize ) { mnDStrikeoutSize = nDStrikeoutSize; }
- void SetDoubleStrikeoutOffset1( long nDStrikeoutOffset1 ) { mnDStrikeoutOffset1 = nDStrikeoutOffset1; }
- void SetDoubleStrikeoutOffset2( long nDStrikeoutOffset2 ) { mnDStrikeoutOffset2 = nDStrikeoutOffset2; }
-
- void ImplInitTextLineSize( const OutputDevice* pDev );
- void ImplInitAboveTextLineSize();
-
private:
// device independent variables
OUString maFamilyName; // Font Family Name
@@ -209,54 +113,6 @@ private:
bool mbSubsettable; // true: a subset of the font can be created
bool mbEmbeddable; // true: the font can be embedded
- // Font metrics below
-
- // font instance attributes from the font request
- long mnWidth; // Reference Width
- short mnOrientation; // Rotation in 1/10 degrees
-
- // font metrics measured for the font instance
- long mnAscent; // Ascent
- long mnDescent; // Descent
- long mnIntLeading; // Internal Leading
- long mnExtLeading; // External Leading
- int mnSlant; // Slant (Italic/Oblique)
- long mnMinKashida; // Minimal width of kashida (Arabic)
-
- // font attributes queried from the font instance
- bool mbScalableFont;
- bool mbTrueTypeFont;
- bool mbKernableFont;
- bool mbFullstopCentered;
- long mnBulletOffset; // Offset to position non-print character
-
- // font metrics that are usually derived from the measurements
- long mnUnderlineSize; // Lineheight of Underline
- long mnUnderlineOffset; // Offset from Underline to Baseline
- long mnBUnderlineSize; // Height of bold underline
- long mnBUnderlineOffset; // Offset from bold underline to baseline
- long mnDUnderlineSize; // Height of double underline
- long mnDUnderlineOffset1; // Offset from double underline to baseline
- long mnDUnderlineOffset2; // Offset from double underline to baseline
- long mnWUnderlineSize; // Height of WaveLine underline
- long mnWUnderlineOffset; // Offset from WaveLine underline to baseline, but centrered to WaveLine
- long mnAboveUnderlineSize; // Height of single underline (for Vertical Right)
- long mnAboveUnderlineOffset; // Offset from single underline to baseline (for Vertical Right)
- long mnAboveBUnderlineSize; // Height of bold underline (for Vertical Right)
- long mnAboveBUnderlineOffset; // Offset from bold underline to baseline (for Vertical Right)
- long mnAboveDUnderlineSize; // Height of double underline (for Vertical Right)
- long mnAboveDUnderlineOffset1; // Offset from double underline to baseline (for Vertical Right)
- long mnAboveDUnderlineOffset2; // Offset from double underline to baseline (for Vertical Right)
- long mnAboveWUnderlineSize; // Height of WaveLine-strike-out (for Vertical Right)
- long mnAboveWUnderlineOffset; // Offset from WaveLine-strike-out to baseline, but centrered to the WaveLine (for Vertical Right)
- long mnStrikeoutSize; // Height of single strike-out
- long mnStrikeoutOffset; // Offset from single strike-out to baseline
- long mnBStrikeoutSize; // Height of bold strike-out
- long mnBStrikeoutOffset; // Offset of bold strike-out to baseline
- long mnDStrikeoutSize; // Height of double strike-out
- long mnDStrikeoutOffset1; // Offset of double strike-out to baseline
- long mnDStrikeoutOffset2; // Offset of double strike-out to baseline
-
};
#endif // INCLUDED_VCL_INC_FONTATTRIBUTES_HXX
diff --git a/vcl/inc/fontinstance.hxx b/vcl/inc/fontinstance.hxx
index c790a92f1924..54a74d0e3637 100644
--- a/vcl/inc/fontinstance.hxx
+++ b/vcl/inc/fontinstance.hxx
@@ -25,6 +25,7 @@
#include "fontselect.hxx"
#include "fontattributes.hxx"
+#include "impfontmetricdata.hxx"
#include <unordered_map>
@@ -41,16 +42,16 @@ public:
public: // TODO: make data members private
ImplFontCache * mpFontCache;
- FontSelectPattern maFontSelData; // FontSelectionData
- FontAttributes maFontAttributes; // Font attributes
- const ConvertChar* mpConversion; // used e.g. for StarBats->StarSymbol
+ FontSelectPattern maFontSelData; // FontSelectionData
+ ImplFontMetricData maFontMetric; // Font attributes
+ const ConvertChar* mpConversion; // used e.g. for StarBats->StarSymbol
long mnLineHeight;
sal_uLong mnRefCount;
sal_uInt16 mnSetFontFlags; // Flags returned by SalGraphics::SetFont()
short mnOwnOrientation; // text angle if lower layers don't rotate text themselves
short mnOrientation; // text angle in 3600 system
- bool mbInit; // true if maFontAttributes member is valid
+ bool mbInit; // true if maFontMetric member is valid
void AddFallbackForUnicode( sal_UCS4, FontWeight eWeight, const OUString& rFontName );
bool GetFallbackForUnicode( sal_UCS4, FontWeight eWeight, OUString* pFontName ) const;
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index cb04f7b09a7d..e88701d83d77 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -29,6 +29,7 @@
#include "salgdi.hxx"
#include "sallayout.hxx"
#include "svpcairotextrender.hxx"
+#include "impfontmetricdata.hxx"
#ifdef IOS
#define SvpSalGraphics AquaSalGraphics
@@ -121,7 +122,7 @@ public:
virtual void SetTextColor( SalColor nSalColor ) override;
virtual sal_uInt16 SetFont( FontSelectPattern*, int nFallbackLevel ) override;
- virtual void GetFontAttributes( FontAttributes*, int nFallbackLevel ) override;
+ virtual void GetFontMetric( ImplFontMetricData*, int nFallbackLevel ) override;
virtual const FontCharMapPtr GetFontCharMap() const override;
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const override;
virtual void GetDevFontList( PhysicalFontCollection* ) override;
diff --git a/vcl/inc/impfontmetricdata.hxx b/vcl/inc/impfontmetricdata.hxx
new file mode 100644
index 000000000000..2ccee0dc2a57
--- /dev/null
+++ b/vcl/inc/impfontmetricdata.hxx
@@ -0,0 +1,182 @@
+/* -*- 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 .
+ */
+
+#ifndef INCLUDED_VCL_INC_IMPFONTMETRICDATA_HXX
+#define INCLUDED_VCL_INC_IMPFONTMETRICDATA_HXX
+
+#include <sal/types.h>
+#include <i18nlangtag/lang.h>
+#include <unotools/fontdefs.hxx>
+#include <vcl/dllapi.h>
+#include <vcl/vclenum.hxx>
+
+#include "fontselect.hxx"
+#include "fontattributes.hxx"
+
+class OutputDevice;
+class FontSelectPattern;
+
+class ImplFontMetricData : public FontAttributes
+{
+public:
+ explicit ImplFontMetricData( const FontSelectPattern& );
+
+ // font instance attributes from the font request
+ long GetWidth() { return mnWidth; }
+ short GetOrientation() { return mnOrientation; }
+
+ void SetWidth(long nWidth) { mnWidth=nWidth; }
+ void SetOrientation(short nOrientation) { mnOrientation=nOrientation; }
+
+ // font metrics measured for the font instance
+ long GetAscent() { return mnAscent; }
+ long GetDescent() { return mnDescent; }
+ long GetInternalLeading() { return mnIntLeading; }
+ long GetExternalLeading() { return mnExtLeading; }
+ int GetSlant() { return mnSlant; }
+ long GetMinKashida() { return mnMinKashida; }
+
+ void SetAscent(long nAscent) { mnAscent=nAscent; }
+ void SetDescent(long nDescent) { mnDescent=nDescent; }
+ void SetInternalLeading(long nIntLeading) { mnIntLeading = nIntLeading; }
+ void SetExternalLeading(long nExtLeading) { mnExtLeading = nExtLeading; }
+ void SetSlant(int nSlant) { mnSlant=nSlant; }
+ void SetMinKashida( long nMinKashida ) { mnMinKashida=nMinKashida; }
+
+ // font attributes queried from the font instance
+ bool IsScalable() { return mbScalableFont; }
+ bool IsTrueTypeFont() { return mbTrueTypeFont; }
+ bool IsKernable() { return mbKernableFont; }
+ bool IsFullstopCentered() { return mbFullstopCentered; }
+ long GetBulletOffset() { return mnBulletOffset; }
+
+ void SetScalableFlag(bool bScalable) { mbScalableFont = bScalable; }
+ void SetTrueTypeFlag(bool bTrueTypeFont) { mbTrueTypeFont = bTrueTypeFont; }
+ void SetKernableFlag(bool bKernable) { mbKernableFont = bKernable; }
+ void SetFullstopCenteredFlag(bool bFullstopCentered) { mbFullstopCentered = bFullstopCentered; }
+ void SetBulletOffset(long nBulletOffset) { mnBulletOffset = nBulletOffset; }
+
+ // font metrics that are usually derived from the measurements
+ long GetUnderlineSize() { return mnUnderlineSize; }
+ long GetUnderlineOffset() { return mnUnderlineOffset; }
+ long GetBoldUnderlineSize() { return mnBUnderlineSize; }
+ long GetBoldUnderlineOffset() { return mnBUnderlineOffset; }
+ long GetDoubleUnderlineSize() { return mnDUnderlineSize; }
+ long GetDoubleUnderlineOffset1() { return mnDUnderlineOffset1; }
+ long GetDoubleUnderlineOffset2() { return mnDUnderlineOffset2; }
+ long GetWavelineUnderlineSize() { return mnWUnderlineSize; }
+ long GetWavelineUnderlineOffset() { return mnWUnderlineOffset; }
+ long GetAboveUnderlineSize() { return mnAboveUnderlineSize; }
+ long GetAboveUnderlineOffset() { return mnAboveUnderlineOffset; }
+ long GetAboveBoldUnderlineSize() { return mnAboveBUnderlineSize; }
+ long GetAboveBoldUnderlineOffset() { return mnAboveBUnderlineOffset; }
+ long GetAboveDoubleUnderlineSize() { return mnAboveDUnderlineSize; }
+ long GetAboveDoubleUnderlineOffset1() { return mnAboveDUnderlineOffset1; }
+ long GetAboveDoubleUnderlineOffset2() { return mnAboveDUnderlineOffset2; }
+ long GetAboveWavelineUnderlineSize() { return mnAboveWUnderlineSize; }
+ long GetAboveWavelineUnderlineOffset() { return mnAboveWUnderlineOffset; }
+ long GetStrikeoutSize() { return mnStrikeoutSize; }
+ long GetStrikeoutOffset() { return mnStrikeoutOffset; }
+ long GetBoldStrikeoutSize() { return mnBStrikeoutSize; }
+ long GetBoldStrikeoutOffset() { return mnBStrikeoutOffset; }
+ long GetDoubleStrikeoutSize() { return mnDStrikeoutSize; }
+ long GetDoubleStrikeoutOffset1() { return mnDStrikeoutOffset1; }
+ long GetDoubleStrikeoutOffset2() { return mnDStrikeoutOffset2; }
+
+ void SetUnderlineSize( long nUnderlineSize ) { mnUnderlineSize = nUnderlineSize; }
+ void SetUnderlineOffset( long nUnderlineOffset ) { mnUnderlineOffset = nUnderlineOffset; }
+ void SetBoldUnderlineSize( long nBUnderlineSize ) { mnBUnderlineSize = nBUnderlineSize; }
+ void SetBoldUnderlineOffset( long nBUnderlineOffset ) { mnBUnderlineOffset = nBUnderlineOffset; }
+ void SetDoubleUnderlineSize( long nDUnderlineSize ) { mnDUnderlineSize = nDUnderlineSize; }
+ void SetDoubleUnderlineOffset1( long nDUnderlineOffset1 ) { mnDUnderlineOffset1 = nDUnderlineOffset1; }
+ void SetDoubleUnderlineOffset2( long nDUnderlineOffset2 ) { mnDUnderlineOffset2 = nDUnderlineOffset2; }
+ void SetWavelineUnderlineSize( long nWUnderlineSize ) { mnWUnderlineSize = nWUnderlineSize; }
+ void SetWavelineUnderlineOffset( long nWUnderlineOffset ) { mnWUnderlineOffset = nWUnderlineOffset; }
+ void SetAboveUnderlineSize( long nAboveUnderlineSize ) { mnAboveUnderlineSize = nAboveUnderlineSize; }
+ void SetAboveUnderlineOffset( long nAboveUnderlineOffset ) { mnAboveUnderlineOffset = nAboveUnderlineOffset; }
+ void SetAboveBoldUnderlineSize( long nAboveBUnderlineSize ) { mnAboveBUnderlineSize = nAboveBUnderlineSize; }
+ void SetAboveBoldUnderlineOffset( long nAboveBUnderlineOffset ) { mnAboveBUnderlineOffset = nAboveBUnderlineOffset; }
+ void SetAboveDoubleUnderlineSize( long nAboveDUnderlineSize ) { mnAboveDUnderlineSize = nAboveDUnderlineSize; }
+ void SetAboveDoubleUnderlineOffset1( long nAboveDUnderlineOffset1 ) { mnAboveDUnderlineOffset1 = nAboveDUnderlineOffset1; }
+ void SetAboveDoubleUnderlineOffset2( long nAboveDUnderlineOffset2 ) { mnAboveDUnderlineOffset2 = nAboveDUnderlineOffset2; }
+ void SetAboveWavelineUnderlineSize( long nAboveWUnderlineSize ) { mnAboveWUnderlineSize = nAboveWUnderlineSize; }
+ void SetAboveWavelineUnderlineOffset( long nAboveWUnderlineOffset ) { mnAboveWUnderlineOffset = nAboveWUnderlineOffset; }
+ void SetStrikeoutSize( long nStrikeoutSize ) { mnStrikeoutSize = nStrikeoutSize; }
+ void SetStrikeoutOffset( long nStrikeoutOffset ) { mnStrikeoutOffset = nStrikeoutOffset; }
+ void SetBoldStrikeoutSize( long nBStrikeoutSize ) { mnBStrikeoutSize = nBStrikeoutSize; }
+ void SetBoldStrikeoutOffset( long nBStrikeoutOffset ) { mnBStrikeoutOffset = nBStrikeoutOffset; }
+ void SetDoubleStrikeoutSize( long nDStrikeoutSize ) { mnDStrikeoutSize = nDStrikeoutSize; }
+ void SetDoubleStrikeoutOffset1( long nDStrikeoutOffset1 ) { mnDStrikeoutOffset1 = nDStrikeoutOffset1; }
+ void SetDoubleStrikeoutOffset2( long nDStrikeoutOffset2 ) { mnDStrikeoutOffset2 = nDStrikeoutOffset2; }
+
+ void ImplInitTextLineSize( const OutputDevice* pDev );
+ void ImplInitAboveTextLineSize();
+
+private:
+ // font instance attributes from the font request
+ long mnWidth; // Reference Width
+ short mnOrientation; // Rotation in 1/10 degrees
+
+ // font metrics measured for the font instance
+ long mnAscent; // Ascent
+ long mnDescent; // Descent
+ long mnIntLeading; // Internal Leading
+ long mnExtLeading; // External Leading
+ int mnSlant; // Slant (Italic/Oblique)
+ long mnMinKashida; // Minimal width of kashida (Arabic)
+
+ // font attributes queried from the font instance
+ bool mbScalableFont;
+ bool mbTrueTypeFont;
+ bool mbKernableFont;
+ bool mbFullstopCentered;
+ long mnBulletOffset; // Offset to position non-print character
+
+ // font metrics that are usually derived from the measurements
+ long mnUnderlineSize; // Lineheight of Underline
+ long mnUnderlineOffset; // Offset from Underline to Baseline
+ long mnBUnderlineSize; // Height of bold underline
+ long mnBUnderlineOffset; // Offset from bold underline to baseline
+ long mnDUnderlineSize; // Height of double underline
+ long mnDUnderlineOffset1; // Offset from double underline to baseline
+ long mnDUnderlineOffset2; // Offset from double underline to baseline
+ long mnWUnderlineSize; // Height of WaveLine underline
+ long mnWUnderlineOffset; // Offset from WaveLine underline to baseline, but centrered to WaveLine
+ long mnAboveUnderlineSize; // Height of single underline (for Vertical Right)
+ long mnAboveUnderlineOffset; // Offset from single underline to baseline (for Vertical Right)
+ long mnAboveBUnderlineSize; // Height of bold underline (for Vertical Right)
+ long mnAboveBUnderlineOffset; // Offset from bold underline to baseline (for Vertical Right)
+ long mnAboveDUnderlineSize; // Height of double underline (for Vertical Right)
+ long mnAboveDUnderlineOffset1; // Offset from double underline to baseline (for Vertical Right)
+ long mnAboveDUnderlineOffset2; // Offset from double underline to baseline (for Vertical Right)
+ long mnAboveWUnderlineSize; // Height of WaveLine-strike-out (for Vertical Right)
+ long mnAboveWUnderlineOffset; // Offset from WaveLine-strike-out to baseline, but centrered to the WaveLine (for Vertical Right)
+ long mnStrikeoutSize; // Height of single strike-out
+ long mnStrikeoutOffset; // Offset from single strike-out to baseline
+ long mnBStrikeoutSize; // Height of bold strike-out
+ long mnBStrikeoutOffset; // Offset of bold strike-out to baseline
+ long mnDStrikeoutSize; // Height of double strike-out
+ long mnDStrikeoutOffset1; // Offset of double strike-out to baseline
+ long mnDStrikeoutOffset2; // Offset of double strike-out to baseline
+
+};
+
+#endif // INCLUDED_VCL_INC_IMPFONTMETRICDATA_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/quartz/salgdi.h b/vcl/inc/quartz/salgdi.h
index 03ef055d1feb..a9628459edf6 100644
--- a/vcl/inc/quartz/salgdi.h
+++ b/vcl/inc/quartz/salgdi.h
@@ -39,6 +39,7 @@
#include <vcl/metric.hxx>
#include "fontinstance.hxx"
+#include "impfontmetricdata.hxx"
#include "PhysicalFontFace.hxx"
#include "salgdi.hxx"
@@ -94,7 +95,7 @@ public:
SalLayout* GetTextLayout( void ) const;
- void GetFontAttributes( FontAttributes& ) const;
+ void GetFontMetric( ImplFontMetricData& ) const;
bool GetGlyphBoundRect( sal_GlyphId, Rectangle& ) const;
bool GetGlyphOutline( sal_GlyphId, basegfx::B2DPolyPolygon& ) const;
@@ -338,7 +339,7 @@ public:
// set the font
virtual sal_uInt16 SetFont( FontSelectPattern*, int nFallbackLevel ) override;
// get the current font's metrics
- virtual void GetFontAttributes( FontAttributes*, int nFallbackLevel ) override;
+ virtual void GetFontMetric( ImplFontMetricData*, int nFallbackLevel ) override;
// get the repertoire of the current font
virtual const FontCharMapPtr GetFontCharMap() const override;
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const override;
diff --git a/vcl/inc/salgdi.hxx b/vcl/inc/salgdi.hxx
index 039e45f07fc9..ca2251f19be3 100644
--- a/vcl/inc/salgdi.hxx
+++ b/vcl/inc/salgdi.hxx
@@ -29,6 +29,8 @@
#include <vcl/salnativewidgets.hxx>
#include <vcl/metric.hxx>
+#include "impfontmetricdata.hxx"
+
#include "salgdiimpl.hxx"
#include "salglyphid.hxx"
#include "sallayout.hxx"
@@ -145,7 +147,7 @@ public:
void ReleaseFonts() { SetFont( nullptr, 0 ); }
// get the current font's metrics
- virtual void GetFontAttributes( FontAttributes*, int nFallbackLevel = 0 ) = 0;
+ virtual void GetFontMetric( ImplFontMetricData*, int nFallbackLevel = 0 ) = 0;
// get the repertoire of the current font
virtual const FontCharMapPtr GetFontCharMap() const = 0;
diff --git a/vcl/inc/textrender.hxx b/vcl/inc/textrender.hxx
index 11a38cbae896..2c0bf7fc9406 100644
--- a/vcl/inc/textrender.hxx
+++ b/vcl/inc/textrender.hxx
@@ -31,6 +31,7 @@
#include <config_cairo_canvas.h>
class ImplLayoutArgs;
+class ImplFontMetricData;
class ServerFontLayout;
class PhysicalFontCollection;
class PhysicalFontFace;
@@ -42,7 +43,7 @@ public:
virtual void SetTextColor( SalColor nSalColor ) = 0;
virtual sal_uInt16 SetFont( FontSelectPattern*, int nFallbackLevel ) = 0;
- virtual void GetFontAttributes( FontAttributes*, int nFallbackLevel ) = 0;
+ virtual void GetFontMetric( ImplFontMetricData*, int nFallbackLevel ) = 0;
virtual const FontCharMapPtr GetFontCharMap() const = 0;
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const = 0;
virtual void GetDevFontList( PhysicalFontCollection* ) = 0;
diff --git a/vcl/inc/unx/genpspgraphics.h b/vcl/inc/unx/genpspgraphics.h
index 860f15bd794b..850270cb3e13 100644
--- a/vcl/inc/unx/genpspgraphics.h
+++ b/vcl/inc/unx/genpspgraphics.h
@@ -37,6 +37,7 @@ class ServerFont;
class FontAttributes;
class SalInfoPrinter;
class GlyphCache;
+class ImplFontMetricData;
class VCL_DLLPUBLIC GenPspGraphics : public SalGraphics
{
@@ -92,7 +93,7 @@ public:
virtual void SetTextColor( SalColor nSalColor ) override;
virtual sal_uInt16 SetFont( FontSelectPattern*, int nFallbackLevel ) override;
- virtual void GetFontAttributes( FontAttributes*, int nFallbackLevel ) override;
+ virtual void GetFontMetric( ImplFontMetricData*, int nFallbackLevel ) override;
virtual const FontCharMapPtr GetFontCharMap() const override;
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const override;
virtual void GetDevFontList( PhysicalFontCollection* ) override;
diff --git a/vcl/inc/unx/glyphcache.hxx b/vcl/inc/unx/glyphcache.hxx
index da8f29c57608..463c2592e811 100644
--- a/vcl/inc/unx/glyphcache.hxx
+++ b/vcl/inc/unx/glyphcache.hxx
@@ -35,6 +35,7 @@
#include <fontinstance.hxx>
#include <sallayout.hxx>
#include "fontattributes.hxx"
+#include "impfontmetricdata.hxx"
#include <unordered_map>
@@ -127,18 +128,18 @@ class GlyphData
public:
GlyphData() : mnLruValue(0) {}
- const GlyphMetric& GetMetric() const { return maFontAttributes; }
+ const GlyphMetric& GetMetric() const { return maGlyphMetric; }
- void SetSize( const Size& s) { maFontAttributes.SetSize( s ); }
- void SetOffset( int nX, int nY ) { maFontAttributes.SetOffset( nX, nY ); }
- void SetDelta( int nX, int nY ) { maFontAttributes.SetDelta( nX, nY ); }
- void SetCharWidth( long nW ) { maFontAttributes.SetCharWidth( nW ); }
+ void SetSize( const Size& s) { maGlyphMetric.SetSize( s ); }
+ void SetOffset( int nX, int nY ) { maGlyphMetric.SetOffset( nX, nY ); }
+ void SetDelta( int nX, int nY ) { maGlyphMetric.SetDelta( nX, nY ); }
+ void SetCharWidth( long nW ) { maGlyphMetric.SetCharWidth( nW ); }
void SetLruValue( int n ) const { mnLruValue = n; }
long GetLruValue() const { return mnLruValue;}
private:
- GlyphMetric maFontAttributes;
+ GlyphMetric maGlyphMetric;
// used by GlyphCache for cache LRU algorithm
mutable long mnLruValue;
@@ -161,7 +162,7 @@ public:
const FontSelectPattern& GetFontSelData() const { return maFontSelData; }
- void FetchFontAttributes( FontAttributes&, long& rFactor ) const;
+ void FetchFontMetric( ImplFontMetricData&, long& rFactor ) const;
const unsigned char* GetTable( const char* pName, sal_uLong* pLength );
int GetEmUnits() const { return maFaceFT->units_per_EM;}
double GetStretch() { return mfStretch; }
diff --git a/vcl/inc/unx/salgdi.h b/vcl/inc/unx/salgdi.h
index 68a3bcecfdff..9f5b3819dc0e 100644
--- a/vcl/inc/unx/salgdi.h
+++ b/vcl/inc/unx/salgdi.h
@@ -112,7 +112,7 @@ public:
virtual void SetTextColor( SalColor nSalColor ) override;
virtual sal_uInt16 SetFont( FontSelectPattern*, int nFallbackLevel ) override;
- virtual void GetFontAttributes( FontAttributes*, int nFallbackLevel ) override;
+ virtual void GetFontMetric( ImplFontMetricData*, int nFallbackLevel ) override;
virtual const FontCharMapPtr GetFontCharMap() const override;
virtual bool GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) const override;
virtual void GetDevFontList( PhysicalFontCollection* ) override;
diff --git a/vcl/inc/win/salgdi.h b/vcl/inc/win/salgdi.h
index 83b5f39fb7a4..8b894020fa87 100644
--- a/vcl/inc/win/salgdi.h
+++ b/vcl/inc/win/salgdi.h
@@ -46,6 +46,7 @@ class OpenGLTexture;
class PhysicalFontCollection;
class SalGraphicsImpl;
class WinOpenGLSalGraphicsImpl;
+class ImplFontMetricData;
#define RGB_TO_PALRGB(nRGB) ((nRGB)|0x02000000)
#define PALRGB_TO_RGB(nPalRGB) ((nPalRGB)&0x00ffffff)
@@ -361,7 +362,7 @@ public:
// set the font
virtual sal_uInt16 SetFont( FontSelectPattern*, int nFallbackLevel ) override;
// get the current font's metrics
- virtual void GetFontAttributes( FontAttributes*, int nFallbackLevel ) override;
+ virtual void GetFontMetric( ImplFontMetricData*, int nFallbackLevel ) override;
// get the repertoire of the current font
virtual const FontCharMapPtr GetFontCharMap() const override;
// get the layout capabilities of the current font