[Libreoffice-commits] core.git: include/vcl vcl/generic vcl/inc vcl/Library_vcl.mk vcl/quartz vcl/source vcl/unx vcl/win

Chris Sherlock chris.sherlock79 at gmail.com
Fri Jan 8 15:44:14 PST 2016


 include/vcl/outdev.hxx                     |    8 -
 include/vcl/print.hxx                      |    2 
 vcl/Library_vcl.mk                         |    2 
 vcl/generic/fontmanager/fontconfig.cxx     |    2 
 vcl/generic/fontmanager/fontsubst.cxx      |    2 
 vcl/generic/glyphs/gcach_ftyp.cxx          |    8 -
 vcl/generic/glyphs/gcach_ftyp.hxx          |    2 
 vcl/generic/glyphs/glyphcache.cxx          |    4 
 vcl/generic/print/genpspgraphics.cxx       |    6 -
 vcl/inc/PhysicalFontCollection.hxx         |    2 
 vcl/inc/PhysicalFontFace.hxx               |   10 +-
 vcl/inc/fontentry.hxx                      |   70 ---------------
 vcl/inc/fontinstance.hxx                   |   69 ++++++++++++++
 vcl/inc/fontselect.hxx                     |    4 
 vcl/inc/generic/glyphcache.hxx             |    4 
 vcl/inc/impfont.hxx                        |    2 
 vcl/inc/outdev.h                           |   20 ++--
 vcl/inc/pch/precompiled_vcl.hxx            |   20 +++-
 vcl/inc/quartz/salgdi.h                    |    4 
 vcl/inc/win/salgdi.h                       |    6 -
 vcl/quartz/ctfonts.cxx                     |    6 -
 vcl/source/app/svmain.cxx                  |    2 
 vcl/source/font/PhysicalFontCollection.cxx |   12 +-
 vcl/source/font/PhysicalFontFace.cxx       |    2 
 vcl/source/font/fontattributes.cxx         |    2 
 vcl/source/font/fontcache.cxx              |   70 +++++++--------
 vcl/source/font/fontentry.cxx              |  134 -----------------------------
 vcl/source/font/fontinstance.cxx           |  134 +++++++++++++++++++++++++++++
 vcl/source/font/fontselect.cxx             |    6 -
 vcl/source/gdi/embeddedfontshelper.cxx     |    2 
 vcl/source/gdi/font.cxx                    |    2 
 vcl/source/gdi/impfont.cxx                 |    2 
 vcl/source/gdi/pdffontcache.cxx            |    2 
 vcl/source/gdi/pdfwriter_impl.cxx          |  128 +++++++++++++--------------
 vcl/source/gdi/pdfwriter_impl.hxx          |    2 
 vcl/source/gdi/print.cxx                   |   30 +++---
 vcl/source/gdi/textlayout.cxx              |    2 
 vcl/source/gdi/virdev.cxx                  |   10 +-
 vcl/source/outdev/font.cxx                 |   94 ++++++++++----------
 vcl/source/outdev/outdev.cxx               |    6 -
 vcl/source/outdev/outdevstate.cxx          |    6 -
 vcl/source/outdev/text.cxx                 |   62 ++++++-------
 vcl/source/outdev/textline.cxx             |   92 +++++++++----------
 vcl/source/window/accessibility.cxx        |    2 
 vcl/source/window/window.cxx               |   12 +-
 vcl/source/window/window2.cxx              |    2 
 vcl/unx/generic/gdi/cairotextrender.cxx    |    2 
 vcl/win/gdi/salfont.cxx                    |    2 
 vcl/win/gdi/winlayout.cxx                  |   10 +-
 49 files changed, 548 insertions(+), 537 deletions(-)

New commits:
commit ad241f51fe6ae4f5dc37050cf3bea65fc4163084
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date:   Fri Jan 8 21:04:23 2016 +1100

    vcl: change ImplFontEntry to LogicalFontInstance
    
    There is a TODO in the code that suggests to do this, when I looked at the
    collaboration diagram on Doxygen things made a LOT more sense.
    
    Change-Id: If335498bb70872ffa5738cc5c17660faec84c35e
    Reviewed-on: https://gerrit.libreoffice.org/21257
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Chris Sherlock <chris.sherlock79 at gmail.com>

diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index 49028e5..c8e397b 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -58,7 +58,7 @@
 #include <vector>
 
 struct ImplOutDevData;
-class ImplFontEntry;
+class LogicalFontInstance;
 class OutDevState;
 struct SystemGraphicsData;
 struct SystemFontData;
@@ -356,7 +356,7 @@ private:
     mutable VclPtr<OutputDevice>    mpPrevGraphics;     ///< Previous output device in list
     mutable VclPtr<OutputDevice>    mpNextGraphics;     ///< Next output device in list
     GDIMetaFile*                    mpMetaFile;
-    mutable ImplFontEntry*          mpFontEntry;
+    mutable LogicalFontInstance*    mpFontInstance;
     mutable ImplFontCache*          mpFontCache;
     mutable PhysicalFontCollection* mpFontCollection;
     mutable ImplDeviceFontList*     mpDeviceFontList;
@@ -1322,7 +1322,7 @@ public:
 protected:
 
     virtual void                InitFont() const;
-    virtual void                SetFontOrientation( ImplFontEntry* const pFontEntry ) const;
+    virtual void                SetFontOrientation( LogicalFontInstance* const pFontInstance ) const;
     virtual long                GetFontExtLeading() const;
 
 
@@ -1371,7 +1371,7 @@ public:
                                                          vcl::TextLayoutCache const* = nullptr) const;
     SAL_DLLPRIVATE SalLayout*   ImplGlyphFallbackLayout( SalLayout*, ImplLayoutArgs& ) const;
     // tells whether this output device is RTL in an LTR UI or LTR in a RTL UI
-    SAL_DLLPRIVATE SalLayout*   getFallbackFont(ImplFontEntry &rFallbackFont,
+    SAL_DLLPRIVATE SalLayout*   getFallbackFont(LogicalFontInstance &rFallbackFont,
                                     FontSelectPattern &rFontSelData, int nFallbackLevel,
                                     ImplLayoutArgs& rLayoutArgs) const;
 
diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx
index 6340095..a3125c7 100644
--- a/include/vcl/print.hxx
+++ b/include/vcl/print.hxx
@@ -285,7 +285,7 @@ protected:
                                     sal_uInt16 nTransparencePercent ) override;
 
     virtual void                InitFont() const override;
-    virtual void                SetFontOrientation( ImplFontEntry* const pFontEntry ) const override;
+    virtual void                SetFontOrientation( LogicalFontInstance* const pFontInstance ) const override;
 
 public:
                                 Printer();
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 6f24942..f7a1a65 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -395,7 +395,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
     vcl/source/font/PhysicalFontFamily \
     vcl/source/font/fontattributes \
     vcl/source/font/fontselect \
-    vcl/source/font/fontentry \
+    vcl/source/font/fontinstance \
     vcl/source/font/fontcache \
     vcl/source/fontsubset/cff \
     vcl/source/fontsubset/fontsubset \
diff --git a/vcl/generic/fontmanager/fontconfig.cxx b/vcl/generic/fontmanager/fontconfig.cxx
index 6170ee8..531e622 100644
--- a/vcl/generic/fontmanager/fontconfig.cxx
+++ b/vcl/generic/fontmanager/fontconfig.cxx
@@ -24,7 +24,7 @@
 #include <vcl/sysdata.hxx>
 #include <vcl/vclenum.hxx>
 #include <vcl/wrkwin.hxx>
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include <i18nlangtag/languagetag.hxx>
 #include <i18nutil/unicode.hxx>
 #include <rtl/strbuf.hxx>
diff --git a/vcl/generic/fontmanager/fontsubst.cxx b/vcl/generic/fontmanager/fontsubst.cxx
index d4d2ba8..5f7bfb3 100644
--- a/vcl/generic/fontmanager/fontsubst.cxx
+++ b/vcl/generic/fontmanager/fontsubst.cxx
@@ -22,7 +22,7 @@
 #include "generic/glyphcache.hxx"
 
 #include "vcl/sysdata.hxx"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 
 #include "generic/printergfx.hxx"
 #include "salbmp.hxx"
diff --git a/vcl/generic/glyphs/gcach_ftyp.cxx b/vcl/generic/glyphs/gcach_ftyp.cxx
index c4c5754..0af7cd9 100644
--- a/vcl/generic/glyphs/gcach_ftyp.cxx
+++ b/vcl/generic/glyphs/gcach_ftyp.cxx
@@ -23,7 +23,7 @@
 #include "gcach_ftyp.hxx"
 
 #include "vcl/svapp.hxx"
-#include <fontentry.hxx>
+#include <fontinstance.hxx>
 #include <impfont.hxx>
 #include "fontattributes.hxx"
 
@@ -432,7 +432,7 @@ ImplFTSFontData::ImplFTSFontData( FreetypeFontInfo* pFI, const ImplFontAttribute
     SetOrientationFlag( true );
 }
 
-ImplFontEntry* ImplFTSFontData::CreateFontInstance( FontSelectPattern& rFSD ) const
+LogicalFontInstance* ImplFTSFontData::CreateFontInstance( FontSelectPattern& rFSD ) const
 {
     ImplServerFontEntry* pEntry = new ImplServerFontEntry( rFSD );
     return pEntry;
@@ -462,9 +462,9 @@ ServerFont::ServerFont( const FontSelectPattern& rFSD, FreetypeFontInfo* pFI )
     mbUseGamma( false ),
     mpLayoutEngine( nullptr )
 {
-    // TODO: move update of mpFontEntry into FontEntry class when
+    // TODO: move update of mpFontInstance into FontEntry class when
     // it becomes responsible for the ServerFont instantiation
-    static_cast<ImplServerFontEntry*>(rFSD.mpFontEntry)->SetServerFont( this );
+    static_cast<ImplServerFontEntry*>(rFSD.mpFontInstance)->SetServerFont( this );
 
     maFaceFT = pFI->GetFaceFT();
 
diff --git a/vcl/generic/glyphs/gcach_ftyp.hxx b/vcl/generic/glyphs/gcach_ftyp.hxx
index acd74ec..530b2d3 100644
--- a/vcl/generic/glyphs/gcach_ftyp.hxx
+++ b/vcl/generic/glyphs/gcach_ftyp.hxx
@@ -154,7 +154,7 @@ private:
 public:
                             ImplFTSFontData( FreetypeFontInfo*, const ImplFontAttributes& );
 
-    virtual ImplFontEntry*  CreateFontInstance( FontSelectPattern& ) const override;
+    virtual LogicalFontInstance*  CreateFontInstance( FontSelectPattern& ) const override;
     virtual PhysicalFontFace* Clone() const override   { return new ImplFTSFontData( *this ); }
     virtual sal_IntPtr      GetFontId() const override { return mpFreetypeFontInfo->GetFontId(); }
 };
diff --git a/vcl/generic/glyphs/glyphcache.cxx b/vcl/generic/glyphs/glyphcache.cxx
index 798b3e2..eab5277 100644
--- a/vcl/generic/glyphs/glyphcache.cxx
+++ b/vcl/generic/glyphs/glyphcache.cxx
@@ -23,7 +23,7 @@
 
 #include <vcl/svapp.hxx>
 #include <vcl/bitmap.hxx>
-#include <fontentry.hxx>
+#include <fontinstance.hxx>
 #include <fontattributes.hxx>
 
 #include <config_graphite.h>
@@ -354,7 +354,7 @@ void ServerFont::GarbageCollect( long nMinLruIndex )
 }
 
 ImplServerFontEntry::ImplServerFontEntry( FontSelectPattern& rFSD )
-:   ImplFontEntry( rFSD )
+:   LogicalFontInstance( rFSD )
 ,   mpServerFont( nullptr )
 ,   mbGotFontOptions( false )
 {}
diff --git a/vcl/generic/print/genpspgraphics.cxx b/vcl/generic/print/genpspgraphics.cxx
index d35816f..335f40c 100644
--- a/vcl/generic/print/genpspgraphics.cxx
+++ b/vcl/generic/print/genpspgraphics.cxx
@@ -50,7 +50,7 @@
 #include "generic/printergfx.hxx"
 #include "impfont.hxx"
 #include "langboost.hxx"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 #include "PhysicalFontCollection.hxx"
 #include "PhysicalFontFace.hxx"
@@ -550,7 +550,7 @@ public:
     explicit ImplPspFontData( const psp::FastPrintFontInfo& );
     virtual sal_IntPtr      GetFontId() const override { return mnFontId; }
     virtual PhysicalFontFace*   Clone() const override { return new ImplPspFontData( *this ); }
-    virtual ImplFontEntry*  CreateFontInstance( FontSelectPattern& ) const override;
+    virtual LogicalFontInstance*  CreateFontInstance( FontSelectPattern& ) const override;
 };
 
 ImplPspFontData::ImplPspFontData( const psp::FastPrintFontInfo& rInfo )
@@ -558,7 +558,7 @@ ImplPspFontData::ImplPspFontData( const psp::FastPrintFontInfo& rInfo )
     mnFontId( rInfo.m_nID )
 {}
 
-ImplFontEntry* ImplPspFontData::CreateFontInstance( FontSelectPattern& rFSD ) const
+LogicalFontInstance* ImplPspFontData::CreateFontInstance( FontSelectPattern& rFSD ) const
 {
     ImplServerFontEntry* pEntry = new ImplServerFontEntry( rFSD );
     return pEntry;
diff --git a/vcl/inc/PhysicalFontCollection.hxx b/vcl/inc/PhysicalFontCollection.hxx
index f283278..87f4181 100644
--- a/vcl/inc/PhysicalFontCollection.hxx
+++ b/vcl/inc/PhysicalFontCollection.hxx
@@ -22,7 +22,7 @@
 
 #include <vcl/dllapi.h>
 
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "PhysicalFontFamily.hxx"
 
 class ImplGlyphFallbackFontSubstitution;
diff --git a/vcl/inc/PhysicalFontFace.hxx b/vcl/inc/PhysicalFontFace.hxx
index 1f48577..cebb6a0 100644
--- a/vcl/inc/PhysicalFontFace.hxx
+++ b/vcl/inc/PhysicalFontFace.hxx
@@ -22,11 +22,11 @@
 
 #include <vcl/dllapi.h>
 
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 #include "fontselect.hxx"
 
-class ImplFontEntry;
+class LogicalFontInstance;
 struct FontMatchStatus;
 class FontSelectPattern;
 class PhysicalFontFamily;
@@ -71,9 +71,9 @@ public:
     virtual                ~PhysicalFontFace() {}
 
     // by using an PhysicalFontFace object as a factory for its corresponding
-    // ImplFontEntry an ImplFontEntry can be extended to cache device and
-    // font instance specific data
-    virtual ImplFontEntry*  CreateFontInstance( FontSelectPattern& ) const = 0;
+    // LogicalFontInstance can be extended to cache device and font instance
+    // specific data
+    virtual LogicalFontInstance*  CreateFontInstance( FontSelectPattern& ) const = 0;
     virtual PhysicalFontFace* Clone() const = 0;
 
     int                     GetHeight() const           { return mnHeight; }
diff --git a/vcl/inc/fontentry.hxx b/vcl/inc/fontinstance.hxx
similarity index 93%
rename from vcl/inc/fontentry.hxx
rename to vcl/inc/fontinstance.hxx
index d654788..01f4c59 100644
--- a/vcl/inc/fontentry.hxx
+++ b/vcl/inc/fontinstance.hxx
@@ -31,14 +31,13 @@
 class ImplFontCache;
 class ConvertChar;
 
-// TODO: rename ImplFontEntry to LogicalFontInstance
 // TODO: allow sharing of metrics for related fonts
 
-class VCL_PLUGIN_PUBLIC ImplFontEntry
+class VCL_PLUGIN_PUBLIC LogicalFontInstance
 {
 public:
-    explicit        ImplFontEntry( const FontSelectPattern& );
-    virtual         ~ImplFontEntry();
+    explicit        LogicalFontInstance( const FontSelectPattern& );
+    virtual         ~LogicalFontInstance();
 
 public: // TODO: make data members private
     ImplFontCache * m_pFontCache;
diff --git a/vcl/inc/fontselect.hxx b/vcl/inc/fontselect.hxx
index 595f3c9..0a23105 100644
--- a/vcl/inc/fontselect.hxx
+++ b/vcl/inc/fontselect.hxx
@@ -26,7 +26,7 @@
 #include <unordered_map>
 
 class PhysicalFontFace;
-class ImplFontEntry;
+class LogicalFontInstance;
 class ImplFontCache;
 namespace vcl { class Font; }
 class ConvertChar;
@@ -78,7 +78,7 @@ public:
 
 public: // TODO: change to private
     const PhysicalFontFace* mpFontData;         // a matching PhysicalFontFace object
-    ImplFontEntry*  mpFontEntry;                // pointer to the resulting FontCache entry
+    LogicalFontInstance*  mpFontInstance;                // pointer to the resulting FontCache entry
 
     void            copyAttributes(const FontSelectPatternAttributes &rAttributes);
 };
diff --git a/vcl/inc/generic/glyphcache.hxx b/vcl/inc/generic/glyphcache.hxx
index e051358..951c211 100644
--- a/vcl/inc/generic/glyphcache.hxx
+++ b/vcl/inc/generic/glyphcache.hxx
@@ -32,7 +32,7 @@
 #include <vcl/dllapi.h>
 #include <vcl/metric.hxx>
 
-#include <fontentry.hxx>
+#include <fontinstance.hxx>
 #include <sallayout.hxx>
 #include "fontattributes.hxx"
 
@@ -243,7 +243,7 @@ private:
 };
 
 // a class for cache entries for physical font instances that are based on serverfonts
-class VCL_DLLPUBLIC ImplServerFontEntry : public ImplFontEntry
+class VCL_DLLPUBLIC ImplServerFontEntry : public LogicalFontInstance
 {
 public:
                             ImplServerFontEntry( FontSelectPattern& );
diff --git a/vcl/inc/impfont.hxx b/vcl/inc/impfont.hxx
index 13ee4ec..904c9eb 100644
--- a/vcl/inc/impfont.hxx
+++ b/vcl/inc/impfont.hxx
@@ -27,7 +27,7 @@
 #include <vcl/dllapi.h>
 #include <vcl/vclenum.hxx>
 #include <vcl/fntstyle.hxx>
-#include <fontentry.hxx>
+#include <fontinstance.hxx>
 
 #include <boost/intrusive_ptr.hpp>
 
diff --git a/vcl/inc/outdev.h b/vcl/inc/outdev.h
index 88a7f5c..9310cfe 100644
--- a/vcl/inc/outdev.h
+++ b/vcl/inc/outdev.h
@@ -27,7 +27,7 @@
 #include <tools/gen.hxx>
 #include <vcl/vclptr.hxx>
 
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "PhysicalFontFace.hxx"
 
 class Size;
@@ -129,13 +129,13 @@ public:
 class ImplFontCache
 {
 private:
-    ImplFontEntry*      mpFirstEntry;
-    int                 mnRef0Count;    // number of unreferenced ImplFontEntries
+    LogicalFontInstance* mpFirstEntry;
+    int                  mnRef0Count;    // number of unreferenced LogicalFontInstances
 
     // cache of recently used font instances
     struct IFSD_Equal { bool operator()( const FontSelectPattern&, const FontSelectPattern& ) const; };
     struct IFSD_Hash { size_t operator()( const FontSelectPattern& ) const; };
-    typedef std::unordered_map<FontSelectPattern,ImplFontEntry*,IFSD_Hash,IFSD_Equal > FontInstanceList;
+    typedef std::unordered_map<FontSelectPattern,LogicalFontInstance*,IFSD_Hash,IFSD_Equal > FontInstanceList;
     FontInstanceList    maFontInstanceList;
 
     int                 CountUnreferencedEntries() const;
@@ -144,16 +144,16 @@ public:
                         ImplFontCache();
                         ~ImplFontCache();
 
-    ImplFontEntry*      GetFontEntry( PhysicalFontCollection*,
+    LogicalFontInstance* GetFontInstance( PhysicalFontCollection*,
                              const vcl::Font&, const Size& rPixelSize, float fExactHeight);
-    ImplFontEntry*      GetFontEntry( PhysicalFontCollection*, FontSelectPattern& );
-    ImplFontEntry*      GetGlyphFallbackFont( PhysicalFontCollection*, FontSelectPattern&,
+    LogicalFontInstance* GetFontInstance( PhysicalFontCollection*, FontSelectPattern& );
+    LogicalFontInstance* GetGlyphFallbackFont( PhysicalFontCollection*, FontSelectPattern&,
                             int nFallbackLevel, OUString& rMissingCodes );
 
-    /// Increase the refcount of the given ImplFontEntry.
-    void                Acquire(ImplFontEntry*);
+    /// Increase the refcount of the given LogicalFontInstance.
+    void                Acquire(LogicalFontInstance*);
     /// Decrease the refcount and potentially cleanup the entries with zero refcount from the cache.
-    void                Release(ImplFontEntry*);
+    void                Release(LogicalFontInstance*);
 
     void                Invalidate();
 };
diff --git a/vcl/inc/pch/precompiled_vcl.hxx b/vcl/inc/pch/precompiled_vcl.hxx
index 45c5dc6..99ba746 100644
--- a/vcl/inc/pch/precompiled_vcl.hxx
+++ b/vcl/inc/pch/precompiled_vcl.hxx
@@ -13,7 +13,7 @@
  manual changes will be rewritten by the next run of update_pch.sh (which presumably
  also fixes all possible problems, so it's usually better to use it).
 
- Generated on 2016-01-07 18:28:08 using:
+ Generated on 2016-01-08 23:14:46 using:
  ./bin/update_pch vcl vcl --cutoff=6 --exclude:system --include:module --include:local
 
  If after updating build fails, use the following command to locate conflicting headers:
@@ -27,6 +27,7 @@
 #include <config_features.h>
 #include <config_folders.h>
 #include <config_global.h>
+#include <config_graphite.h>
 #include <cstddef>
 #include <cstdlib>
 #include <cstring>
@@ -35,7 +36,6 @@
 #include <functional>
 #include <iomanip>
 #include <limits.h>
-#include <map>
 #include <math.h>
 #include <memory>
 #include <new>
@@ -56,7 +56,6 @@
 #include <window.h>
 #include <boost/dynamic_bitset.hpp>
 #include <boost/functional/hash.hpp>
-#include <boost/intrusive_ptr.hpp>
 #include <boost/math/special_functions/sinc.hpp>
 #include <boost/multi_array.hpp>
 #include <boost/optional.hpp>
@@ -130,12 +129,14 @@
 #include <salsys.hxx>
 #include <saltimer.hxx>
 #include <salvd.hxx>
+#include <vcl/FilterConfigItem.hxx>
 #include <vcl/alpha.hxx>
 #include <vcl/bitmap.hxx>
 #include <vcl/bitmapex.hxx>
 #include <vcl/bmpacc.hxx>
 #include <vcl/button.hxx>
 #include <vcl/canvastools.hxx>
+#include <vcl/combobox.hxx>
 #include <vcl/configsettings.hxx>
 #include <vcl/ctrl.hxx>
 #include <vcl/cursor.hxx>
@@ -147,10 +148,13 @@
 #include <vcl/dockwin.hxx>
 #include <vcl/edit.hxx>
 #include <vcl/event.hxx>
+#include <vcl/field.hxx>
 #include <vcl/fixed.hxx>
 #include <vcl/floatwin.hxx>
+#include <vcl/fltcall.hxx>
 #include <vcl/fntstyle.hxx>
 #include <vcl/font.hxx>
+#include <vcl/fontcharmap.hxx>
 #include <vcl/gdimtf.hxx>
 #include <vcl/gradient.hxx>
 #include <vcl/graph.hxx>
@@ -178,6 +182,7 @@
 #include <vcl/salnativewidgets.hxx>
 #include <vcl/scrbar.hxx>
 #include <vcl/settings.hxx>
+#include <vcl/spinfld.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/syswin.hxx>
 #include <vcl/tabctrl.hxx>
@@ -194,6 +199,7 @@
 #include <GL/glew.h>
 #include <PhysicalFontCollection.hxx>
 #include <PhysicalFontFace.hxx>
+#include <PhysicalFontFamily.hxx>
 #include <basegfx/basegfxdllapi.h>
 #include <basegfx/color/bcolor.hxx>
 #include <basegfx/matrix/b2dhommatrix.hxx>
@@ -215,6 +221,10 @@
 #include <brdwin.hxx>
 #include <com/sun/star/awt/Key.hpp>
 #include <com/sun/star/awt/KeyGroup.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XPropertyAccess.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
 #include <com/sun/star/datatransfer/dnd/XDropTarget.hpp>
@@ -225,6 +235,7 @@
 #include <com/sun/star/lang/XComponent.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/task/XStatusIndicator.hpp>
 #include <com/sun/star/uno/Any.h>
 #include <com/sun/star/uno/Any.hxx>
 #include <com/sun/star/uno/Reference.h>
@@ -260,7 +271,8 @@
 #include <cppuhelper/weakagg.hxx>
 #include <cppuhelper/weakref.hxx>
 #include <dndlcon.hxx>
-#include <fontentry.hxx>
+#include <fontattributes.hxx>
+#include <fontinstance.hxx>
 #include <helpwin.hxx>
 #include <i18nlangtag/i18nlangtagdllapi.h>
 #include <i18nlangtag/lang.h>
diff --git a/vcl/inc/quartz/salgdi.h b/vcl/inc/quartz/salgdi.h
index 506895c..836eee2 100644
--- a/vcl/inc/quartz/salgdi.h
+++ b/vcl/inc/quartz/salgdi.h
@@ -38,7 +38,7 @@
 #include <vcl/fontcapabilities.hxx>
 #include <vcl/metric.hxx>
 
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "PhysicalFontFace.hxx"
 #include "salgdi.hxx"
 
@@ -61,7 +61,7 @@ public:
     virtual                         ~CoreTextFontData();
 
     PhysicalFontFace*               Clone() const override;
-    ImplFontEntry*                  CreateFontInstance( FontSelectPattern& ) const override;
+    LogicalFontInstance*            CreateFontInstance( FontSelectPattern& ) const override;
     sal_IntPtr                      GetFontId() const override;
 
     int                             GetFontTable( const char pTagName[5], unsigned char* ) const;
diff --git a/vcl/inc/win/salgdi.h b/vcl/inc/win/salgdi.h
index c6dbd60..f1c8c3a 100644
--- a/vcl/inc/win/salgdi.h
+++ b/vcl/inc/win/salgdi.h
@@ -23,7 +23,7 @@
 #include "sallayout.hxx"
 #include "salgeom.hxx"
 #include "salgdi.hxx"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 #include "PhysicalFontFace.hxx"
 #include "impfont.hxx"
@@ -79,8 +79,8 @@ public:
                                 BYTE nPitchAndFamily  );
     virtual                 ~ImplWinFontData();
 
-    virtual PhysicalFontFace*   Clone() const override;
-    virtual ImplFontEntry*  CreateFontInstance( FontSelectPattern& ) const override;
+    virtual PhysicalFontFace* Clone() const override;
+    virtual LogicalFontInstance* CreateFontInstance( FontSelectPattern& ) const override;
     virtual sal_IntPtr      GetFontId() const override;
     void                    SetFontId( sal_IntPtr nId ) { mnId = nId; }
     void                    UpdateFromHDC( HDC ) const;
diff --git a/vcl/quartz/ctfonts.cxx b/vcl/quartz/ctfonts.cxx
index d516d76..4d847ba 100644
--- a/vcl/quartz/ctfonts.cxx
+++ b/vcl/quartz/ctfonts.cxx
@@ -31,7 +31,7 @@
 #include "osx/saldata.hxx"
 #include "osx/salinst.h"
 #endif
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 #include "PhysicalFontCollection.hxx"
 #include "quartz/salgdi.h"
@@ -240,9 +240,9 @@ PhysicalFontFace* CoreTextFontData::Clone() const
     return new CoreTextFontData( *this);
 }
 
-ImplFontEntry* CoreTextFontData::CreateFontInstance( /*const*/ FontSelectPattern& rFSD ) const
+LogicalFontInstance* CoreTextFontData::CreateFontInstance( /*const*/ FontSelectPattern& rFSD ) const
 {
-    return new ImplFontEntry( rFSD);
+    return new LogicalFontInstance( rFSD);
 }
 
 int CoreTextFontData::GetFontTable( const char pTagName[5], unsigned char* pResultBuf ) const
diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx
index 5eeaf99..33d08dd 100644
--- a/vcl/source/app/svmain.cxx
+++ b/vcl/source/app/svmain.cxx
@@ -63,7 +63,7 @@
 #include "accmgr.hxx"
 #include "idlemgr.hxx"
 #include "outdev.h"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "PhysicalFontCollection.hxx"
 #include "print.h"
 #include "salgdi.hxx"
diff --git a/vcl/source/font/PhysicalFontCollection.cxx b/vcl/source/font/PhysicalFontCollection.cxx
index fbe484f..bcfd9a7 100644
--- a/vcl/source/font/PhysicalFontCollection.cxx
+++ b/vcl/source/font/PhysicalFontCollection.cxx
@@ -32,7 +32,7 @@
 
 #include "magic.h"
 #include "outdev.h"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 #include "PhysicalFontFace.hxx"
 
@@ -211,7 +211,7 @@ PhysicalFontFamily* PhysicalFontCollection::GetGlyphFallbackFont( FontSelectPatt
         while( nStrIndex < rMissingCodes.getLength() )
         {
             cChar = rMissingCodes.iterateCodePoints( &nStrIndex );
-            bCached = rFontSelData.mpFontEntry->GetFallbackForUnicode( cChar, rFontSelData.GetWeight(), &rFontSelData.maSearchName );
+            bCached = rFontSelData.mpFontInstance->GetFallbackForUnicode( cChar, rFontSelData.GetWeight(), &rFontSelData.maSearchName );
 
             // ignore entries which don't have a fallback
             if( !bCached || !rFontSelData.maSearchName.isEmpty() )
@@ -229,7 +229,7 @@ PhysicalFontFamily* PhysicalFontCollection::GetGlyphFallbackFont( FontSelectPatt
             while( nStrIndex < rMissingCodes.getLength() )
             {
                 cChar = rMissingCodes.iterateCodePoints( &nStrIndex );
-                bCached = rFontSelData.mpFontEntry->GetFallbackForUnicode( cChar, rFontSelData.GetWeight(), &aFontName );
+                bCached = rFontSelData.mpFontInstance->GetFallbackForUnicode( cChar, rFontSelData.GetWeight(), &aFontName );
                 if( !bCached || (rFontSelData.maSearchName != aFontName) )
                     pRemainingCodes[ nRemainingLength++ ] = cChar;
             }
@@ -257,8 +257,8 @@ PhysicalFontFamily* PhysicalFontCollection::GetGlyphFallbackFont( FontSelectPatt
             {
                 for(;;)
                 {
-                     if( !rFontSelData.mpFontEntry->GetFallbackForUnicode( cChar, rFontSelData.GetWeight(), &rFontSelData.maSearchName ) )
-                         rFontSelData.mpFontEntry->AddFallbackForUnicode( cChar, rFontSelData.GetWeight(), rFontSelData.maSearchName );
+                     if( !rFontSelData.mpFontInstance->GetFallbackForUnicode( cChar, rFontSelData.GetWeight(), &rFontSelData.maSearchName ) )
+                         rFontSelData.mpFontInstance->AddFallbackForUnicode( cChar, rFontSelData.GetWeight(), rFontSelData.maSearchName );
                      if( nStrIndex >= aOldMissingCodes.getLength() )
                          break;
                      cChar = aOldMissingCodes.iterateCodePoints( &nStrIndex );
@@ -269,7 +269,7 @@ PhysicalFontFamily* PhysicalFontCollection::GetGlyphFallbackFont( FontSelectPatt
                     for( nStrIndex = 0; nStrIndex < rMissingCodes.getLength(); )
                     {
                         cChar = rMissingCodes.iterateCodePoints( &nStrIndex );
-                        rFontSelData.mpFontEntry->IgnoreFallbackForUnicode( cChar, rFontSelData.GetWeight(), rFontSelData.maSearchName );
+                        rFontSelData.mpFontInstance->IgnoreFallbackForUnicode( cChar, rFontSelData.GetWeight(), rFontSelData.maSearchName );
                     }
                 }
             }
diff --git a/vcl/source/font/PhysicalFontFace.cxx b/vcl/source/font/PhysicalFontFace.cxx
index de03113..c5194fb 100644
--- a/vcl/source/font/PhysicalFontFace.cxx
+++ b/vcl/source/font/PhysicalFontFace.cxx
@@ -21,7 +21,7 @@
 
 #include <tools/fontenum.hxx>
 
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 
 #include "PhysicalFontFace.hxx"
diff --git a/vcl/source/font/fontattributes.cxx b/vcl/source/font/fontattributes.cxx
index c27be5b..d823748 100644
--- a/vcl/source/font/fontattributes.cxx
+++ b/vcl/source/font/fontattributes.cxx
@@ -33,7 +33,7 @@
 
 #include "impfont.hxx"
 #include "outdata.hxx"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 
 #include "outdev.h"
diff --git a/vcl/source/font/fontcache.cxx b/vcl/source/font/fontcache.cxx
index 1b4b110..d9e0dff 100644
--- a/vcl/source/font/fontcache.cxx
+++ b/vcl/source/font/fontcache.cxx
@@ -33,7 +33,7 @@
 
 #include "impfont.hxx"
 #include "outdata.hxx"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 
 #include "outdev.h"
@@ -135,39 +135,39 @@ ImplFontCache::~ImplFontCache()
     FontInstanceList::iterator it = maFontInstanceList.begin();
     for(; it != maFontInstanceList.end(); ++it )
     {
-        ImplFontEntry* pEntry = (*it).second;
-        delete pEntry;
+        LogicalFontInstance* pFontInstance = (*it).second;
+        delete pFontInstance;
     }
 }
 
-ImplFontEntry* ImplFontCache::GetFontEntry( PhysicalFontCollection* pFontList,
+LogicalFontInstance* ImplFontCache::GetFontInstance( PhysicalFontCollection* pFontList,
     const vcl::Font& rFont, const Size& rSize, float fExactHeight )
 {
     OUString aSearchName = rFont.GetName();
 
     // initialize internal font request object
     FontSelectPattern aFontSelData( rFont, aSearchName, rSize, fExactHeight );
-    return GetFontEntry( pFontList, aFontSelData );
+    return GetFontInstance( pFontList, aFontSelData );
 }
 
-ImplFontEntry* ImplFontCache::GetFontEntry( PhysicalFontCollection* pFontList,
+LogicalFontInstance* ImplFontCache::GetFontInstance( PhysicalFontCollection* pFontList,
     FontSelectPattern& aFontSelData )
 {
     // check if a directly matching logical font instance is already cached,
     // the most recently used font usually has a hit rate of >50%
-    ImplFontEntry *pEntry = nullptr;
+    LogicalFontInstance *pFontInstance = nullptr;
     PhysicalFontFamily* pFontFamily = nullptr;
     IFSD_Equal aIFSD_Equal;
     if( mpFirstEntry && aIFSD_Equal( aFontSelData, mpFirstEntry->maFontSelData ) )
-        pEntry = mpFirstEntry;
+        pFontInstance = mpFirstEntry;
     else
     {
         FontInstanceList::iterator it = maFontInstanceList.find( aFontSelData );
         if( it != maFontInstanceList.end() )
-            pEntry = (*it).second;
+            pFontInstance = (*it).second;
     }
 
-    if( !pEntry ) // no direct cache hit
+    if( !pFontInstance ) // no direct cache hit
     {
         // find the best matching logical font family and update font selector accordingly
         pFontFamily = pFontList->FindFontFamilyByFont( aFontSelData );
@@ -180,13 +180,13 @@ ImplFontEntry* ImplFontCache::GetFontEntry( PhysicalFontCollection* pFontList,
         if( it != maFontInstanceList.end() )
         {
             // we have an indirect cache hit
-            pEntry = (*it).second;
+            pFontInstance = (*it).second;
         }
     }
 
     PhysicalFontFace* pFontData = nullptr;
 
-    if (!pEntry && pFontFamily)// no cache hit => find the best matching physical font face
+    if (!pFontInstance && pFontFamily)// no cache hit => find the best matching physical font face
     {
         bool bOrigWasSymbol = aFontSelData.mpFontData && aFontSelData.mpFontData->IsSymbolFont();
         pFontData = pFontFamily->FindBestFontFace( aFontSelData );
@@ -203,51 +203,51 @@ ImplFontEntry* ImplFontCache::GetFontEntry( PhysicalFontCollection* pFontList,
             // wasn't a candidate
             FontInstanceList::iterator it = maFontInstanceList.find( aFontSelData );
             if( it != maFontInstanceList.end() )
-                pEntry = (*it).second;
+                pFontInstance = (*it).second;
         }
     }
 
-    if( pEntry ) // cache hit => use existing font instance
+    if( pFontInstance ) // cache hit => use existing font instance
     {
         // increase the font instance's reference count
-        Acquire(pEntry);
+        Acquire(pFontInstance);
     }
 
-    if (!pEntry && pFontData)// still no cache hit => create a new font instance
+    if (!pFontInstance && pFontData)// still no cache hit => create a new font instance
     {
         // create a new logical font instance from this physical font face
-        pEntry = pFontData->CreateFontInstance( aFontSelData );
-        pEntry->m_pFontCache = this;
+        pFontInstance = pFontData->CreateFontInstance( aFontSelData );
+        pFontInstance->m_pFontCache = this;
 
         // if we're subtituting from or to a symbol font we may need a symbol
         // conversion table
         if( pFontData->IsSymbolFont() || aFontSelData.IsSymbolFont() )
         {
             if( aFontSelData.maTargetName != aFontSelData.maSearchName )
-                pEntry->mpConversion = ConvertChar::GetRecodeData( aFontSelData.maTargetName, aFontSelData.maSearchName );
+                pFontInstance->mpConversion = ConvertChar::GetRecodeData( aFontSelData.maTargetName, aFontSelData.maSearchName );
         }
 
 #ifdef MACOSX
         //It might be better to dig out the font version of the target font
         //to see if it's a modern re-coded apple symbol font in case that
         //font shows up on a different platform
-        if (!pEntry->mpConversion &&
+        if (!pFontInstance->mpConversion &&
             aFontSelData.maTargetName.equalsIgnoreAsciiCase("symbol") &&
             aFontSelData.maSearchName.equalsIgnoreAsciiCase("symbol"))
         {
-            pEntry->mpConversion = ConvertChar::GetRecodeData( "Symbol", "AppleSymbol" );
+            pFontInstance->mpConversion = ConvertChar::GetRecodeData( "Symbol", "AppleSymbol" );
         }
 #endif
 
         // add the new entry to the cache
-        maFontInstanceList[ aFontSelData ] = pEntry;
+        maFontInstanceList[ aFontSelData ] = pFontInstance;
     }
 
-    mpFirstEntry = pEntry;
-    return pEntry;
+    mpFirstEntry = pFontInstance;
+    return pFontInstance;
 }
 
-ImplFontEntry* ImplFontCache::GetGlyphFallbackFont( PhysicalFontCollection* pFontCollection,
+LogicalFontInstance* ImplFontCache::GetGlyphFallbackFont( PhysicalFontCollection* pFontCollection,
     FontSelectPattern& rFontSelData, int nFallbackLevel, OUString& rMissingCodes )
 {
     // get a candidate font for glyph fallback
@@ -278,24 +278,24 @@ ImplFontEntry* ImplFontCache::GetGlyphFallbackFont( PhysicalFontCollection* pFon
         rFontSelData.maSearchName.clear();
     }
 
-    ImplFontEntry* pFallbackFont = GetFontEntry( pFontCollection, rFontSelData );
+    LogicalFontInstance* pFallbackFont = GetFontInstance( pFontCollection, rFontSelData );
     return pFallbackFont;
 }
 
-void ImplFontCache::Acquire(ImplFontEntry* pEntry)
+void ImplFontCache::Acquire(LogicalFontInstance* pFontInstance)
 {
-    assert(pEntry->m_pFontCache == this);
+    assert(pFontInstance->m_pFontCache == this);
 
-    if (0 == pEntry->mnRefCount++)
+    if (0 == pFontInstance->mnRefCount++)
         --mnRef0Count;
 }
 
-void ImplFontCache::Release(ImplFontEntry* pEntry)
+void ImplFontCache::Release(LogicalFontInstance* pFontInstance)
 {
     static const int FONTCACHE_MAX = getenv("LO_TESTNAME") ? 1 : 50;
 
-    assert(pEntry->mnRefCount > 0 && "ImplFontCache::Release() - font refcount underflow");
-    if( --pEntry->mnRefCount > 0 )
+    assert(pFontInstance->mnRefCount > 0 && "ImplFontCache::Release() - font refcount underflow");
+    if( --pFontInstance->mnRefCount > 0 )
         return;
 
     if (++mnRef0Count < FONTCACHE_MAX)
@@ -308,7 +308,7 @@ void ImplFontCache::Release(ImplFontEntry* pEntry)
     while( it_next != maFontInstanceList.end() )
     {
         FontInstanceList::iterator it = it_next++;
-        ImplFontEntry* pFontEntry = (*it).second;
+        LogicalFontInstance* pFontEntry = (*it).second;
         if( pFontEntry->mnRefCount > 0 )
             continue;
 
@@ -331,7 +331,7 @@ int ImplFontCache::CountUnreferencedEntries() const
     for (FontInstanceList::const_iterator it = maFontInstanceList.begin();
          it != maFontInstanceList.end(); ++it)
     {
-        const ImplFontEntry* pFontEntry = it->second;
+        const LogicalFontInstance* pFontEntry = it->second;
         if (pFontEntry->mnRefCount > 0)
             continue;
         ++nCount;
@@ -347,7 +347,7 @@ void ImplFontCache::Invalidate()
     FontInstanceList::iterator it = maFontInstanceList.begin();
     for(; it != maFontInstanceList.end(); ++it )
     {
-        ImplFontEntry* pFontEntry = (*it).second;
+        LogicalFontInstance* pFontEntry = (*it).second;
         if( pFontEntry->mnRefCount > 0 )
             continue;
 
diff --git a/vcl/source/font/fontentry.cxx b/vcl/source/font/fontinstance.cxx
similarity index 84%
rename from vcl/source/font/fontentry.cxx
rename to vcl/source/font/fontinstance.cxx
index ebcf556..2da9b38 100644
--- a/vcl/source/font/fontentry.cxx
+++ b/vcl/source/font/fontinstance.cxx
@@ -33,7 +33,7 @@
 
 #include "impfont.hxx"
 #include "outdata.hxx"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 
 #include "outdev.h"
@@ -63,7 +63,7 @@ using namespace ::com::sun::star::uno;
 using namespace ::rtl;
 using namespace ::utl;
 
-// extend std namespace to add custom hash needed for ImplFontEntry
+// extend std namespace to add custom hash needed for LogicalFontInstance
 
 namespace std
 {
@@ -79,7 +79,7 @@ namespace std
 }
 
 
-ImplFontEntry::ImplFontEntry( const FontSelectPattern& rFontSelData )
+LogicalFontInstance::LogicalFontInstance( const FontSelectPattern& rFontSelData )
     : m_pFontCache(nullptr)
     , maFontSelData( rFontSelData )
     , maFontAttributes( rFontSelData )
@@ -92,23 +92,23 @@ ImplFontEntry::ImplFontEntry( const FontSelectPattern& rFontSelData )
     , mbInit( false )
     , mpUnicodeFallbackList( nullptr )
 {
-    maFontSelData.mpFontEntry = this;
+    maFontSelData.mpFontInstance = this;
 }
 
-ImplFontEntry::~ImplFontEntry()
+LogicalFontInstance::~LogicalFontInstance()
 {
     delete mpUnicodeFallbackList;
     m_pFontCache = nullptr;
 }
 
-void ImplFontEntry::AddFallbackForUnicode( sal_UCS4 cChar, FontWeight eWeight, const OUString& rFontName )
+void LogicalFontInstance::AddFallbackForUnicode( sal_UCS4 cChar, FontWeight eWeight, const OUString& rFontName )
 {
     if( !mpUnicodeFallbackList )
         mpUnicodeFallbackList = new UnicodeFallbackList;
     (*mpUnicodeFallbackList)[ std::pair< sal_UCS4, FontWeight >(cChar,eWeight) ] = rFontName;
 }
 
-bool ImplFontEntry::GetFallbackForUnicode( sal_UCS4 cChar, FontWeight eWeight, OUString* pFontName ) const
+bool LogicalFontInstance::GetFallbackForUnicode( sal_UCS4 cChar, FontWeight eWeight, OUString* pFontName ) const
 {
     if( !mpUnicodeFallbackList )
         return false;
@@ -121,7 +121,7 @@ bool ImplFontEntry::GetFallbackForUnicode( sal_UCS4 cChar, FontWeight eWeight, O
     return true;
 }
 
-void ImplFontEntry::IgnoreFallbackForUnicode( sal_UCS4 cChar, FontWeight eWeight, const OUString& rFontName )
+void LogicalFontInstance::IgnoreFallbackForUnicode( sal_UCS4 cChar, FontWeight eWeight, const OUString& rFontName )
 {
     UnicodeFallbackList::iterator it = mpUnicodeFallbackList->find( std::pair< sal_UCS4,FontWeight >(cChar,eWeight) );
     if( it == mpUnicodeFallbackList->end() )
diff --git a/vcl/source/font/fontselect.cxx b/vcl/source/font/fontselect.cxx
index 5bcc3e4..e1b8757 100644
--- a/vcl/source/font/fontselect.cxx
+++ b/vcl/source/font/fontselect.cxx
@@ -33,7 +33,7 @@
 
 #include "impfont.hxx"
 #include "outdata.hxx"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 
 #include "outdev.h"
@@ -67,7 +67,7 @@ FontSelectPattern::FontSelectPattern( const vcl::Font& rFont,
     const OUString& rSearchName, const Size& rSize, float fExactHeight)
     : FontSelectPatternAttributes(rFont, rSearchName, rSize, fExactHeight)
     , mpFontData( nullptr )
-    , mpFontEntry( nullptr )
+    , mpFontInstance( nullptr )
 {
 }
 
@@ -93,7 +93,7 @@ FontSelectPattern::FontSelectPattern( const PhysicalFontFace& rFontData,
     const Size& rSize, float fExactHeight, int nOrientation, bool bVertical )
     : FontSelectPatternAttributes(rFontData, rSize, fExactHeight, nOrientation, bVertical)
     , mpFontData( &rFontData )
-    , mpFontEntry( NULL )
+    , mpFontInstance( NULL )
 {
 }
 #endif
diff --git a/vcl/source/gdi/embeddedfontshelper.cxx b/vcl/source/gdi/embeddedfontshelper.cxx
index 6f52df9..7b08e92b 100644
--- a/vcl/source/gdi/embeddedfontshelper.cxx
+++ b/vcl/source/gdi/embeddedfontshelper.cxx
@@ -17,7 +17,7 @@
 
 #include "fontsubset.hxx"
 #include "outdev.h"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "PhysicalFontCollection.hxx"
 #include "salgdi.hxx"
 #include "sft.hxx"
diff --git a/vcl/source/gdi/font.cxx b/vcl/source/gdi/font.cxx
index 58ecc0a..d6b561e 100644
--- a/vcl/source/gdi/font.cxx
+++ b/vcl/source/gdi/font.cxx
@@ -27,7 +27,7 @@
 #include "vcl/font.hxx"
 
 #include "impfont.hxx"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 #include "sft.hxx"
 
diff --git a/vcl/source/gdi/impfont.cxx b/vcl/source/gdi/impfont.cxx
index ade5b85..4061a40 100644
--- a/vcl/source/gdi/impfont.cxx
+++ b/vcl/source/gdi/impfont.cxx
@@ -16,7 +16,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 #include <vcl/fontcharmap.hxx>
-#include <fontentry.hxx>
+#include <fontinstance.hxx>
 #include <impfont.hxx>
 
 #include <vector>
diff --git a/vcl/source/gdi/pdffontcache.cxx b/vcl/source/gdi/pdffontcache.cxx
index 8aa0ad2..9c1b271 100644
--- a/vcl/source/gdi/pdffontcache.cxx
+++ b/vcl/source/gdi/pdffontcache.cxx
@@ -21,7 +21,7 @@
 
 #include <sal/types.h>
 
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "PhysicalFontFace.hxx"
 #include "salgdi.hxx"
 #include "sallayout.hxx"
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 14cfa6c..2159bc6 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -2265,9 +2265,9 @@ ImplPdfBuiltinFontData::ImplPdfBuiltinFontData( const PDFWriterImpl::BuiltinFont
     mrBuiltin( rBuiltin )
 {}
 
-ImplFontEntry* ImplPdfBuiltinFontData::CreateFontInstance( FontSelectPattern& rFSD ) const
+LogicalFontInstance* ImplPdfBuiltinFontData::CreateFontInstance( FontSelectPattern& rFSD ) const
 {
-    ImplFontEntry* pEntry = new ImplFontEntry( rFSD );
+    LogicalFontInstance* pEntry = new LogicalFontInstance( rFSD );
     return pEntry;
 }
 
@@ -8379,7 +8379,7 @@ sal_Int32 PDFWriterImpl::getSystemFont( const vcl::Font& i_rFont )
     getReferenceDevice()->SetFont( i_rFont );
     getReferenceDevice()->ImplNewFont();
 
-    const PhysicalFontFace* pDevFont = m_pReferenceDevice->mpFontEntry->maFontSelData.mpFontData;
+    const PhysicalFontFace* pDevFont = m_pReferenceDevice->mpFontInstance->maFontSelData.mpFontData;
     sal_Int32 nFontID = 0;
     FontEmbedData::iterator it = m_aSystemFonts.find( pDevFont );
     if( it != m_aSystemFonts.end() )
@@ -8411,7 +8411,7 @@ bool PDFWriterImpl::registerGlyphs( int nGlyphs,
     if (!pGraphics)
         return false;
 
-    const PhysicalFontFace* pDevFont = m_pReferenceDevice->mpFontEntry->maFontSelData.mpFontData;
+    const PhysicalFontFace* pDevFont = m_pReferenceDevice->mpFontInstance->maFontSelData.mpFontData;
     sal_Ucs* pCurUnicode = pUnicodes;
     for( int i = 0; i < nGlyphs; pCurUnicode += pUnicodesPerGlyph[i] , i++ )
     {
@@ -8620,7 +8620,7 @@ void PDFWriterImpl::drawShadow( SalLayout& rLayout, const OUString& rText, bool
     setOverlineColor( rFont.GetColor() );
     updateGraphicsState();
 
-    long nOff = 1 + ((m_pReferenceDevice->mpFontEntry->mnLineHeight-24)/24);
+    long nOff = 1 + ((m_pReferenceDevice->mpFontInstance->mnLineHeight-24)/24);
     if( rFont.IsOutline() )
         nOff++;
     rLayout.DrawBase() += Point( nOff, nOff );
@@ -8846,7 +8846,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool
     int nMinCharPos = 0, nMaxCharPos = rText.getLength()-1;
     double fXScale = 1.0;
     double fSkew = 0.0;
-    sal_Int32 nPixelFontHeight = m_pReferenceDevice->mpFontEntry->maFontSelData.mnHeight;
+    sal_Int32 nPixelFontHeight = m_pReferenceDevice->mpFontInstance->maFontSelData.mnHeight;
     TextAlign eAlign = m_aCurrentPDFState.m_aFont.GetAlign();
 
     // transform font height back to current units
@@ -8870,8 +8870,8 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool
     // perform artificial italics if necessary
     if( ( m_aCurrentPDFState.m_aFont.GetItalic() == ITALIC_NORMAL ||
           m_aCurrentPDFState.m_aFont.GetItalic() == ITALIC_OBLIQUE ) &&
-        !( m_pReferenceDevice->mpFontEntry->maFontSelData.mpFontData->GetSlantType() == ITALIC_NORMAL ||
-           m_pReferenceDevice->mpFontEntry->maFontSelData.mpFontData->GetSlantType() == ITALIC_OBLIQUE )
+        !( m_pReferenceDevice->mpFontInstance->maFontSelData.mpFontData->GetSlantType() == ITALIC_NORMAL ||
+           m_pReferenceDevice->mpFontInstance->maFontSelData.mpFontData->GetSlantType() == ITALIC_OBLIQUE )
         )
     {
         fSkew = M_PI/12.0;
@@ -8898,8 +8898,8 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool
     bool bPop = false;
     bool bABold = false;
     // artificial bold necessary ?
-    if( m_pReferenceDevice->mpFontEntry->maFontSelData.mpFontData->GetWeight() <= WEIGHT_MEDIUM &&
-        m_pReferenceDevice->mpFontEntry->maFontSelData.GetWeight() > WEIGHT_MEDIUM )
+    if( m_pReferenceDevice->mpFontInstance->maFontSelData.mpFontData->GetWeight() <= WEIGHT_MEDIUM &&
+        m_pReferenceDevice->mpFontInstance->maFontSelData.GetWeight() > WEIGHT_MEDIUM )
     {
         if( ! bPop )
             aLine.append( "q " );
@@ -9152,7 +9152,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool
                                                  nEmphWidth,
                                                  nEmphMark,
                                                  m_pReferenceDevice->ImplDevicePixelToLogicWidth(nEmphHeight),
-                                                 m_pReferenceDevice->mpFontEntry->mnOrientation );
+                                                 m_pReferenceDevice->mpFontInstance->mnOrientation );
         if ( bEmphPolyLine )
         {
             setLineColor( m_aCurrentPDFState.m_aFont.GetColor() );
@@ -9168,18 +9168,18 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool
         Point aOffset = Point(0,0);
 
         if ( nEmphMark & EMPHASISMARK_POS_BELOW )
-            aOffset.Y() += m_pReferenceDevice->mpFontEntry->maFontAttributes.GetDescent() + nEmphYOff;
+            aOffset.Y() += m_pReferenceDevice->mpFontInstance->maFontAttributes.GetDescent() + nEmphYOff;
         else
-            aOffset.Y() -= m_pReferenceDevice->mpFontEntry->maFontAttributes.GetAscent() + nEmphYOff;
+            aOffset.Y() -= m_pReferenceDevice->mpFontInstance->maFontAttributes.GetAscent() + nEmphYOff;
 
         long nEmphWidth2     = nEmphWidth / 2;
         long nEmphHeight2    = nEmphHeight / 2;
         aOffset += Point( nEmphWidth2, nEmphHeight2 );
 
         if ( eAlign == ALIGN_BOTTOM )
-            aOffset.Y() -= m_pReferenceDevice->mpFontEntry->maFontAttributes.GetDescent();
+            aOffset.Y() -= m_pReferenceDevice->mpFontInstance->maFontAttributes.GetDescent();
         else if ( eAlign == ALIGN_TOP )
-            aOffset.Y() += m_pReferenceDevice->mpFontEntry->maFontAttributes.GetAscent();
+            aOffset.Y() += m_pReferenceDevice->mpFontInstance->maFontAttributes.GetAscent();
 
         for( int nStart = 0;;)
         {
@@ -9487,8 +9487,8 @@ void PDFWriterImpl::drawLine( const Point& rStart, const Point& rStop, const Lin
 
 void PDFWriterImpl::drawWaveTextLine( OStringBuffer& aLine, long nWidth, FontUnderline eTextLine, Color aColor, bool bIsAbove )
 {
-    // note: units in pFontEntry are ref device pixel
-    ImplFontEntry*  pFontEntry = m_pReferenceDevice->mpFontEntry;
+    // note: units in pFontInstance are ref device pixel
+    LogicalFontInstance*  pFontInstance = m_pReferenceDevice->mpFontInstance;
     long            nLineHeight = 0;
     long            nLinePos = 0;
 
@@ -9497,17 +9497,17 @@ void PDFWriterImpl::drawWaveTextLine( OStringBuffer& aLine, long nWidth, FontUnd
 
     if ( bIsAbove )
     {
-        if ( !pFontEntry->maFontAttributes.GetAboveWavelineUnderlineSize() )
+        if ( !pFontInstance->maFontAttributes.GetAboveWavelineUnderlineSize() )
             m_pReferenceDevice->ImplInitAboveTextLineSize();
-        nLineHeight = HCONV( pFontEntry->maFontAttributes.GetAboveWavelineUnderlineSize() );
-        nLinePos = HCONV( pFontEntry->maFontAttributes.GetAboveWavelineUnderlineOffset() );
+        nLineHeight = HCONV( pFontInstance->maFontAttributes.GetAboveWavelineUnderlineSize() );
+        nLinePos = HCONV( pFontInstance->maFontAttributes.GetAboveWavelineUnderlineOffset() );
     }
     else
     {
-        if ( !pFontEntry->maFontAttributes.GetWavelineUnderlineSize() )
+        if ( !pFontInstance->maFontAttributes.GetWavelineUnderlineSize() )
             m_pReferenceDevice->ImplInitTextLineSize();
-        nLineHeight = HCONV( pFontEntry->maFontAttributes.GetWavelineUnderlineSize() );
-        nLinePos = HCONV( pFontEntry->maFontAttributes.GetWavelineUnderlineOffset() );
+        nLineHeight = HCONV( pFontInstance->maFontAttributes.GetWavelineUnderlineSize() );
+        nLinePos = HCONV( pFontInstance->maFontAttributes.GetWavelineUnderlineOffset() );
     }
     if ( (eTextLine == UNDERLINE_SMALLWAVE) && (nLineHeight > 3) )
         nLineHeight = 3;
@@ -9557,8 +9557,8 @@ void PDFWriterImpl::drawWaveTextLine( OStringBuffer& aLine, long nWidth, FontUnd
 
 void PDFWriterImpl::drawStraightTextLine( OStringBuffer& aLine, long nWidth, FontUnderline eTextLine, Color aColor, bool bIsAbove )
 {
-    // note: units in pFontEntry are ref device pixel
-    ImplFontEntry*  pFontEntry = m_pReferenceDevice->mpFontEntry;
+    // note: units in pFontInstance are ref device pixel
+    LogicalFontInstance*  pFontInstance = m_pReferenceDevice->mpFontInstance;
     long            nLineHeight = 0;
     long            nLinePos  = 0;
     long            nLinePos2 = 0;
@@ -9576,17 +9576,17 @@ void PDFWriterImpl::drawStraightTextLine( OStringBuffer& aLine, long nWidth, Fon
         case UNDERLINE_DASHDOTDOT:
             if ( bIsAbove )
             {
-                if ( !pFontEntry->maFontAttributes.GetAboveUnderlineSize() )
+                if ( !pFontInstance->maFontAttributes.GetAboveUnderlineSize() )
                     m_pReferenceDevice->ImplInitAboveTextLineSize();
-                nLineHeight = HCONV( pFontEntry->maFontAttributes.GetAboveUnderlineSize() );
-                nLinePos    = HCONV( pFontEntry->maFontAttributes.GetAboveUnderlineOffset() );
+                nLineHeight = HCONV( pFontInstance->maFontAttributes.GetAboveUnderlineSize() );
+                nLinePos    = HCONV( pFontInstance->maFontAttributes.GetAboveUnderlineOffset() );
             }
             else
             {
-                if ( !pFontEntry->maFontAttributes.GetUnderlineSize() )
+                if ( !pFontInstance->maFontAttributes.GetUnderlineSize() )
                     m_pReferenceDevice->ImplInitTextLineSize();
-                nLineHeight = HCONV( pFontEntry->maFontAttributes.GetUnderlineSize() );
-                nLinePos    = HCONV( pFontEntry->maFontAttributes.GetUnderlineOffset() );
+                nLineHeight = HCONV( pFontInstance->maFontAttributes.GetUnderlineSize() );
+                nLinePos    = HCONV( pFontInstance->maFontAttributes.GetUnderlineOffset() );
             }
             break;
         case UNDERLINE_BOLD:
@@ -9597,36 +9597,36 @@ void PDFWriterImpl::drawStraightTextLine( OStringBuffer& aLine, long nWidth, Fon
         case UNDERLINE_BOLDDASHDOTDOT:
             if ( bIsAbove )
             {
-                if ( !pFontEntry->maFontAttributes.GetAboveBoldUnderlineSize() )
+                if ( !pFontInstance->maFontAttributes.GetAboveBoldUnderlineSize() )
                     m_pReferenceDevice->ImplInitAboveTextLineSize();
-                nLineHeight = HCONV( pFontEntry->maFontAttributes.GetAboveBoldUnderlineSize() );
-                nLinePos    = HCONV( pFontEntry->maFontAttributes.GetAboveBoldUnderlineOffset() );
+                nLineHeight = HCONV( pFontInstance->maFontAttributes.GetAboveBoldUnderlineSize() );
+                nLinePos    = HCONV( pFontInstance->maFontAttributes.GetAboveBoldUnderlineOffset() );
             }
             else
             {
-                if ( !pFontEntry->maFontAttributes.GetBoldUnderlineSize() )
+                if ( !pFontInstance->maFontAttributes.GetBoldUnderlineSize() )
                     m_pReferenceDevice->ImplInitTextLineSize();
-                nLineHeight = HCONV( pFontEntry->maFontAttributes.GetBoldUnderlineSize() );
-                nLinePos    = HCONV( pFontEntry->maFontAttributes.GetBoldUnderlineOffset() );
+                nLineHeight = HCONV( pFontInstance->maFontAttributes.GetBoldUnderlineSize() );
+                nLinePos    = HCONV( pFontInstance->maFontAttributes.GetBoldUnderlineOffset() );
                 nLinePos += nLineHeight/2;
             }
             break;
         case UNDERLINE_DOUBLE:
             if ( bIsAbove )
             {
-                if ( !pFontEntry->maFontAttributes.GetAboveDoubleUnderlineSize() )
+                if ( !pFontInstance->maFontAttributes.GetAboveDoubleUnderlineSize() )
                     m_pReferenceDevice->ImplInitAboveTextLineSize();
-                nLineHeight = HCONV( pFontEntry->maFontAttributes.GetAboveDoubleUnderlineSize() );
-                nLinePos    = HCONV( pFontEntry->maFontAttributes.GetAboveDoubleUnderlineOffset1() );
-                nLinePos2   = HCONV( pFontEntry->maFontAttributes.GetAboveDoubleUnderlineOffset2() );
+                nLineHeight = HCONV( pFontInstance->maFontAttributes.GetAboveDoubleUnderlineSize() );
+                nLinePos    = HCONV( pFontInstance->maFontAttributes.GetAboveDoubleUnderlineOffset1() );
+                nLinePos2   = HCONV( pFontInstance->maFontAttributes.GetAboveDoubleUnderlineOffset2() );
             }
             else
             {
-                if ( !pFontEntry->maFontAttributes.GetDoubleUnderlineSize() )
+                if ( !pFontInstance->maFontAttributes.GetDoubleUnderlineSize() )
                     m_pReferenceDevice->ImplInitTextLineSize();
-                nLineHeight = HCONV( pFontEntry->maFontAttributes.GetDoubleUnderlineSize() );
-                nLinePos    = HCONV( pFontEntry->maFontAttributes.GetDoubleUnderlineOffset1() );
-                nLinePos2   = HCONV( pFontEntry->maFontAttributes.GetDoubleUnderlineOffset2() );
+                nLineHeight = HCONV( pFontInstance->maFontAttributes.GetDoubleUnderlineSize() );
+                nLinePos    = HCONV( pFontInstance->maFontAttributes.GetDoubleUnderlineOffset1() );
+                nLinePos2   = HCONV( pFontInstance->maFontAttributes.GetDoubleUnderlineOffset2() );
             }
             break;
         default:
@@ -9727,8 +9727,8 @@ void PDFWriterImpl::drawStraightTextLine( OStringBuffer& aLine, long nWidth, Fon
 
 void PDFWriterImpl::drawStrikeoutLine( OStringBuffer& aLine, long nWidth, FontStrikeout eStrikeout, Color aColor )
 {
-    // note: units in pFontEntry are ref device pixel
-    ImplFontEntry*  pFontEntry = m_pReferenceDevice->mpFontEntry;
+    // note: units in pFontInstance are ref device pixel
+    LogicalFontInstance*  pFontInstance = m_pReferenceDevice->mpFontInstance;
     long            nLineHeight = 0;
     long            nLinePos  = 0;
     long            nLinePos2 = 0;
@@ -9739,23 +9739,23 @@ void PDFWriterImpl::drawStrikeoutLine( OStringBuffer& aLine, long nWidth, FontSt
     switch ( eStrikeout )
     {
         case STRIKEOUT_SINGLE:
-            if ( !pFontEntry->maFontAttributes.GetStrikeoutSize() )
+            if ( !pFontInstance->maFontAttributes.GetStrikeoutSize() )
                 m_pReferenceDevice->ImplInitTextLineSize();
-            nLineHeight = HCONV( pFontEntry->maFontAttributes.GetStrikeoutSize() );
-            nLinePos    = HCONV( pFontEntry->maFontAttributes.GetStrikeoutOffset() );
+            nLineHeight = HCONV( pFontInstance->maFontAttributes.GetStrikeoutSize() );
+            nLinePos    = HCONV( pFontInstance->maFontAttributes.GetStrikeoutOffset() );
             break;
         case STRIKEOUT_BOLD:
-            if ( !pFontEntry->maFontAttributes.GetBoldStrikeoutSize() )
+            if ( !pFontInstance->maFontAttributes.GetBoldStrikeoutSize() )
                 m_pReferenceDevice->ImplInitTextLineSize();
-            nLineHeight = HCONV( pFontEntry->maFontAttributes.GetBoldStrikeoutSize() );
-            nLinePos    = HCONV( pFontEntry->maFontAttributes.GetBoldStrikeoutOffset() );
+            nLineHeight = HCONV( pFontInstance->maFontAttributes.GetBoldStrikeoutSize() );
+            nLinePos    = HCONV( pFontInstance->maFontAttributes.GetBoldStrikeoutOffset() );
             break;
         case STRIKEOUT_DOUBLE:
-            if ( !pFontEntry->maFontAttributes.GetDoubleStrikeoutSize() )
+            if ( !pFontInstance->maFontAttributes.GetDoubleStrikeoutSize() )
                 m_pReferenceDevice->ImplInitTextLineSize();
-            nLineHeight = HCONV( pFontEntry->maFontAttributes.GetDoubleStrikeoutSize() );
-            nLinePos    = HCONV( pFontEntry->maFontAttributes.GetDoubleStrikeoutOffset1() );
-            nLinePos2   = HCONV( pFontEntry->maFontAttributes.GetDoubleStrikeoutOffset2() );
+            nLineHeight = HCONV( pFontInstance->maFontAttributes.GetDoubleStrikeoutSize() );
+            nLinePos    = HCONV( pFontInstance->maFontAttributes.GetDoubleStrikeoutOffset1() );
+            nLinePos2   = HCONV( pFontInstance->maFontAttributes.GetDoubleStrikeoutOffset2() );
             break;
         default:
             break;
@@ -9824,11 +9824,11 @@ void PDFWriterImpl::drawStrikeoutChar( const Point& rPos, long nWidth, FontStrik
     aRect.Bottom() = rPos.Y()+aRefDevFontMetric.GetDescent();
     aRect.Top() = rPos.Y()-aRefDevFontMetric.GetAscent();
 
-    ImplFontEntry* pFontEntry = m_pReferenceDevice->mpFontEntry;
-    if (pFontEntry->mnOrientation)
+    LogicalFontInstance* pFontInstance = m_pReferenceDevice->mpFontInstance;
+    if (pFontInstance->mnOrientation)
     {
         tools::Polygon aPoly( aRect );
-        aPoly.Rotate( rPos, pFontEntry->mnOrientation);
+        aPoly.Rotate( rPos, pFontInstance->mnOrientation);
         aRect = aPoly.GetBoundRect();
     }
 
@@ -9858,8 +9858,8 @@ void PDFWriterImpl::drawTextLine( const Point& rPos, long nWidth, FontStrikeout
     MARK( "drawTextLine" );
     updateGraphicsState();
 
-    // note: units in pFontEntry are ref device pixel
-    ImplFontEntry*  pFontEntry = m_pReferenceDevice->mpFontEntry;
+    // note: units in pFontInstance are ref device pixel
+    LogicalFontInstance* pFontInstance = m_pReferenceDevice->mpFontInstance;
     Color           aUnderlineColor = m_aCurrentPDFState.m_aTextLineColor;
     Color           aOverlineColor  = m_aCurrentPDFState.m_aOverlineColor;
     Color           aStrikeoutColor = m_aCurrentPDFState.m_aFont.GetColor();
@@ -9876,9 +9876,9 @@ void PDFWriterImpl::drawTextLine( const Point& rPos, long nWidth, FontStrikeout
     Point aPos( rPos );
     TextAlign eAlign = m_aCurrentPDFState.m_aFont.GetAlign();
     if( eAlign == ALIGN_TOP )
-        aPos.Y() += HCONV( pFontEntry->maFontAttributes.GetAscent() );
+        aPos.Y() += HCONV( pFontInstance->maFontAttributes.GetAscent() );
     else if( eAlign == ALIGN_BOTTOM )
-        aPos.Y() -= HCONV( pFontEntry->maFontAttributes.GetDescent() );
+        aPos.Y() -= HCONV( pFontInstance->maFontAttributes.GetDescent() );
 
     OStringBuffer aLine( 512 );
     // save GS
diff --git a/vcl/source/gdi/pdfwriter_impl.hxx b/vcl/source/gdi/pdfwriter_impl.hxx
index 0e8ab54..4e4ff47 100644
--- a/vcl/source/gdi/pdfwriter_impl.hxx
+++ b/vcl/source/gdi/pdfwriter_impl.hxx
@@ -1266,7 +1266,7 @@ public:
     const PDFWriterImpl::BuiltinFont&   GetBuiltinFont() const  { return mrBuiltin; }
 
     virtual PhysicalFontFace*           Clone() const override { return new ImplPdfBuiltinFontData(*this); }
-    virtual ImplFontEntry*              CreateFontInstance( FontSelectPattern& ) const override;
+    virtual LogicalFontInstance*        CreateFontInstance( FontSelectPattern& ) const override;
     virtual sal_IntPtr                  GetFontId() const override { return reinterpret_cast<sal_IntPtr>(&mrBuiltin); }
 };
 
diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx
index 38d9c71..fa3a065 100644
--- a/vcl/source/gdi/print.cxx
+++ b/vcl/source/gdi/print.cxx
@@ -630,10 +630,10 @@ void Printer::ImplReleaseFonts()
     mbNewFont = true;
     mbInitFont = true;
 
-    if ( mpFontEntry )
+    if ( mpFontInstance )
     {
-        mpFontCache->Release( mpFontEntry );
-        mpFontEntry = nullptr;
+        mpFontCache->Release( mpFontInstance );
+        mpFontInstance = nullptr;
     }
 
     if ( mpDeviceFontList )
@@ -1008,10 +1008,10 @@ void Printer::dispose()
         // OutputDevice Dtor is trying the same thing; that why we need to set
         // the FontEntry to NULL here
         // TODO: consolidate duplicate cleanup by Printer and OutputDevice
-        if ( mpFontEntry )
+        if ( mpFontInstance )
         {
-            mpFontCache->Release( mpFontEntry );
-            mpFontEntry = nullptr;
+            mpFontCache->Release( mpFontInstance );
+            mpFontInstance = nullptr;
         }
         if ( mpDeviceFontList )
         {
@@ -1162,10 +1162,10 @@ bool Printer::SetPrinterProps( const Printer* pPrinter )
         {
             ReleaseGraphics();
             pSVData->mpDefInst->DestroyInfoPrinter( mpInfoPrinter );
-            if ( mpFontEntry )
+            if ( mpFontInstance )
             {
-                mpFontCache->Release( mpFontEntry );
-                mpFontEntry = nullptr;
+                mpFontCache->Release( mpFontInstance );
+                mpFontInstance = nullptr;
             }
             if ( mpDeviceFontList )
             {
@@ -1205,10 +1205,10 @@ bool Printer::SetPrinterProps( const Printer* pPrinter )
         {
             pSVData->mpDefInst->DestroyInfoPrinter( mpInfoPrinter );
 
-            if ( mpFontEntry )
+            if ( mpFontInstance )
             {
-                mpFontCache->Release( mpFontEntry );
-                mpFontEntry = nullptr;
+                mpFontCache->Release( mpFontInstance );
+                mpFontInstance = nullptr;
             }
             if ( mpDeviceFontList )
             {
@@ -1804,18 +1804,18 @@ void Printer::InitFont() const
 {
     DBG_TESTSOLARMUTEX();
 
-    if (!mpFontEntry)
+    if (!mpFontInstance)
         return;
 
     if ( mbInitFont )
     {
         // select font in the device layers
-        mpFontEntry->mnSetFontFlags = mpGraphics->SetFont( &(mpFontEntry->maFontSelData), 0 );
+        mpFontInstance->mnSetFontFlags = mpGraphics->SetFont( &(mpFontInstance->maFontSelData), 0 );
         mbInitFont = false;
     }
 }
 
-void Printer::SetFontOrientation( ImplFontEntry* const pFontEntry ) const
+void Printer::SetFontOrientation( LogicalFontInstance* const pFontEntry ) const
 {
     pFontEntry->mnOrientation = pFontEntry->maFontAttributes.GetOrientation();
 }
diff --git a/vcl/source/gdi/textlayout.cxx b/vcl/source/gdi/textlayout.cxx
index ab9d69e..872b0bd 100644
--- a/vcl/source/gdi/textlayout.cxx
+++ b/vcl/source/gdi/textlayout.cxx
@@ -20,7 +20,7 @@
 #include "vcl/ctrl.hxx"
 #include "vcl/outdev.hxx"
 
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "textlayout.hxx"
 
 #include <com/sun/star/i18n/ScriptDirection.hpp>
diff --git a/vcl/source/gdi/virdev.cxx b/vcl/source/gdi/virdev.cxx
index 4f493b4..abd8a2e 100644
--- a/vcl/source/gdi/virdev.cxx
+++ b/vcl/source/gdi/virdev.cxx
@@ -509,10 +509,10 @@ void VirtualDevice::ImplSetReferenceDevice( RefDevMode i_eRefDevMode, sal_Int32
 
     // the reference device should have only scalable fonts
     // => clean up the original font lists before getting new ones
-    if ( mpFontEntry )
+    if ( mpFontInstance )
     {
-        mpFontCache->Release( mpFontEntry );
-        mpFontEntry = nullptr;
+        mpFontCache->Release( mpFontInstance );
+        mpFontInstance = nullptr;
     }
     if ( mpDeviceFontList )
     {
@@ -563,8 +563,8 @@ long VirtualDevice::GetFontExtLeading() const
         return 0;
 #endif
 
-    ImplFontEntry*      pEntry = mpFontEntry;
-    ImplFontAttributes* pFontAttributes = &(pEntry->maFontAttributes);
+    LogicalFontInstance* pFontInstance = mpFontInstance;
+    ImplFontAttributes* pFontAttributes = &(pFontInstance->maFontAttributes);
 
     return pFontAttributes->GetExternalLeading();
 }
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index 6a0faa9..5032cbb 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -33,7 +33,7 @@
 
 #include "impfont.hxx"
 #include "outdata.hxx"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "fontattributes.hxx"
 
 #include "outdev.h"
@@ -189,8 +189,8 @@ FontMetric OutputDevice::GetFontMetric() const
     if( mbNewFont && !ImplNewFont() )
         return aMetric;
 
-    ImplFontEntry*      pEntry = mpFontEntry;
-    ImplFontAttributes* pFontAttributes = &(pEntry->maFontAttributes);
+    LogicalFontInstance* pFontInstance = mpFontInstance;
+    ImplFontAttributes* pFontAttributes = &(pFontInstance->maFontAttributes);
 
     // prepare metric
     aMetric.Font::operator=( maFont );
@@ -205,11 +205,11 @@ FontMetric OutputDevice::GetFontMetric() const
     aMetric.SetWeight( pFontAttributes->GetWeight() );
     aMetric.SetItalic( pFontAttributes->GetSlantType() );
     aMetric.SetWidthType( pFontAttributes->GetWidthType() );
-    if ( pEntry->mnOwnOrientation )
-        aMetric.SetOrientation( pEntry->mnOwnOrientation );
+    if ( pFontInstance->mnOwnOrientation )
+        aMetric.SetOrientation( pFontInstance->mnOwnOrientation );
     else
         aMetric.SetOrientation( pFontAttributes->GetOrientation() );
-    if( !pEntry->maFontAttributes.IsKernable() )
+    if( !pFontInstance->maFontAttributes.IsKernable() )
          aMetric.SetKerning( maFont.GetKerning() & ~FontKerning::FontSpecific );
 
     // set remaining metric fields
@@ -253,7 +253,7 @@ bool OutputDevice::GetFontCharMap( FontCharMapPtr& rFontCharMap ) const
         ImplNewFont();
     if( mbInitFont )
         InitFont();
-    if( !mpFontEntry )
+    if( !mpFontInstance )
         return false;
 
     FontCharMapPtr pFontCharMap ( mpGraphics->GetFontCharMap() );
@@ -280,7 +280,7 @@ bool OutputDevice::GetFontCapabilities( vcl::FontCapabilities& rFontCapabilities
         ImplNewFont();
     if( mbInitFont )
         InitFont();
-    if( !mpFontEntry )
+    if( !mpFontInstance )
         return false;
 
     return mpGraphics->GetFontCapabilities(rFontCapabilities);
@@ -485,8 +485,8 @@ FontEmphasisMark OutputDevice::ImplGetEmphasisMarkStyle( const vcl::Font& rFont
 
 long OutputDevice::GetFontExtLeading() const
 {
-    ImplFontEntry*      pEntry = mpFontEntry;
-    ImplFontAttributes* pFontAttributes = &(pEntry->maFontAttributes);
+    LogicalFontInstance*      pFontInstance = mpFontInstance;
+    ImplFontAttributes* pFontAttributes = &(pFontInstance->maFontAttributes);
 
     return pFontAttributes->GetExternalLeading();
 }
@@ -494,10 +494,10 @@ long OutputDevice::GetFontExtLeading() const
 void OutputDevice::ImplClearFontData( const bool bNewFontLists )
 {
     // the currently selected logical font is no longer needed
-    if ( mpFontEntry )
+    if ( mpFontInstance )
     {
-        mpFontCache->Release( mpFontEntry );
-        mpFontEntry = nullptr;
+        mpFontCache->Release( mpFontInstance );
+        mpFontInstance = nullptr;
     }
 
     mbInitFont = true;
@@ -921,13 +921,13 @@ vcl::Font OutputDevice::GetDefaultFont( DefaultFontType nType, LanguageType eLan
 
                     // get the name of the first available font
                     float fExactHeight = static_cast<float>(aSize.Height());
-                    ImplFontEntry* pEntry = pOutDev->mpFontCache->GetFontEntry( pOutDev->mpFontCollection, aFont, aSize, fExactHeight );
-                    if (pEntry)
+                    LogicalFontInstance* pFontInstance = pOutDev->mpFontCache->GetFontInstance( pOutDev->mpFontCollection, aFont, aSize, fExactHeight );
+                    if (pFontInstance)
                     {
-                        if( pEntry->maFontSelData.mpFontData )
-                            aFont.SetName( pEntry->maFontSelData.mpFontData->GetFamilyName() );
+                        if( pFontInstance->maFontSelData.mpFontData )
+                            aFont.SetName( pFontInstance->maFontSelData.mpFontData->GetFamilyName() );
                         else
-                            aFont.SetName( pEntry->maFontSelData.maTargetName );
+                            aFont.SetName( pFontInstance->maFontSelData.maTargetName );
                     }
                 }
             }
@@ -1041,7 +1041,7 @@ void OutputDevice::InitFont() const
 {
     DBG_TESTSOLARMUTEX();
 
-    if (!mpFontEntry)
+    if (!mpFontInstance)
         return;
 
     if ( mbInitFont )
@@ -1052,12 +1052,12 @@ void OutputDevice::InitFont() const
         {
             const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
             bNonAntialiased |= bool(rStyleSettings.GetDisplayOptions() & DisplayOptions::AADisable);
-            bNonAntialiased |= (int(rStyleSettings.GetAntialiasingMinPixelHeight()) > mpFontEntry->maFontSelData.mnHeight);
+            bNonAntialiased |= (int(rStyleSettings.GetAntialiasingMinPixelHeight()) > mpFontInstance->maFontSelData.mnHeight);
         }
-        mpFontEntry->maFontSelData.mbNonAntialiased = bNonAntialiased;
+        mpFontInstance->maFontSelData.mbNonAntialiased = bNonAntialiased;
 
         // select font in the device layers
-        mpFontEntry->mnSetFontFlags = mpGraphics->SetFont( &(mpFontEntry->maFontSelData), 0 );
+        mpFontInstance->mnSetFontFlags = mpGraphics->SetFont( &(mpFontInstance->maFontSelData), 0 );
         mbInitFont = false;
     }
 }
@@ -1106,22 +1106,22 @@ bool OutputDevice::ImplNewFont() const
         aSize.Width() = 1;
 
     // get font entry
-    ImplFontEntry* pOldEntry = mpFontEntry;
-    mpFontEntry = mpFontCache->GetFontEntry( mpFontCollection, maFont, aSize, fExactHeight );
-    if( pOldEntry )
-        mpFontCache->Release( pOldEntry );
+    LogicalFontInstance* pOldFontInstance = mpFontInstance;
+    mpFontInstance = mpFontCache->GetFontInstance( mpFontCollection, maFont, aSize, fExactHeight );
+    if( pOldFontInstance )
+        mpFontCache->Release( pOldFontInstance );
 
-    ImplFontEntry* pFontEntry = mpFontEntry;
+    LogicalFontInstance* pFontEntry = mpFontInstance;
 
     if (!pFontEntry)
     {
-        SAL_WARN("vcl.gdi", "OutputDevice::ImplNewFont(): no ImplFontEntry, no Font");
+        SAL_WARN("vcl.gdi", "OutputDevice::ImplNewFont(): no LogicalFontInstance, no Font");
         return false;
     }
 
     // mark when lower layers need to get involved
     mbNewFont = false;
-    if( pFontEntry != pOldEntry )
+    if( pFontEntry != pOldFontInstance )
         mbInitFont = true;
 
     // select font when it has not been initialized yet
@@ -1233,7 +1233,7 @@ bool OutputDevice::ImplNewFont() const
     return true;
 }
 
-void OutputDevice::SetFontOrientation( ImplFontEntry* const pFontEntry ) const
+void OutputDevice::SetFontOrientation( LogicalFontInstance* const pFontEntry ) const
 {
     if( pFontEntry->maFontSelData.mnOrientation && !pFontEntry->maFontAttributes.GetOrientation() )
     {
@@ -1316,7 +1316,7 @@ void OutputDevice::ImplDrawEmphasisMarks( SalLayout& rSalLayout )
                          aRect1, aRect2,
                          nEmphasisYOff, nEmphasisWidth,
                          nEmphasisMark,
-                         nEmphasisHeight, mpFontEntry->mnOrientation );
+                         nEmphasisHeight, mpFontInstance->mnOrientation );
 
     if ( bPolyLine )
     {
@@ -1332,9 +1332,9 @@ void OutputDevice::ImplDrawEmphasisMarks( SalLayout& rSalLayout )
     Point aOffset = Point(0,0);
 
     if ( nEmphasisMark & EMPHASISMARK_POS_BELOW )
-        aOffset.Y() += mpFontEntry->maFontAttributes.GetDescent() + nEmphasisYOff;
+        aOffset.Y() += mpFontInstance->maFontAttributes.GetDescent() + nEmphasisYOff;
     else
-        aOffset.Y() -= mpFontEntry->maFontAttributes.GetAscent() + nEmphasisYOff;
+        aOffset.Y() -= mpFontInstance->maFontAttributes.GetAscent() + nEmphasisYOff;
 
     long nEmphasisWidth2  = nEmphasisWidth / 2;
     long nEmphasisHeight2 = nEmphasisHeight / 2;
@@ -1355,10 +1355,10 @@ void OutputDevice::ImplDrawEmphasisMarks( SalLayout& rSalLayout )
         {
             Point aAdjPoint = aOffset;
             aAdjPoint.X() += aRectangle.Left() + (aRectangle.GetWidth() - nEmphasisWidth) / 2;
-            if ( mpFontEntry->mnOrientation )
+            if ( mpFontInstance->mnOrientation )
             {
                 Point aOriginPt(0, 0);
-                aOriginPt.RotateAround( aAdjPoint.X(), aAdjPoint.Y(), mpFontEntry->mnOrientation );
+                aOriginPt.RotateAround( aAdjPoint.X(), aAdjPoint.Y(), mpFontInstance->mnOrientation );
             }
             aOutPoint += aAdjPoint;
             aOutPoint -= Point( nEmphasisWidth2, nEmphasisHeight2 );
@@ -1374,7 +1374,7 @@ void OutputDevice::ImplDrawEmphasisMarks( SalLayout& rSalLayout )
     mpMetaFile = pOldMetaFile;
 }
 
-SalLayout* OutputDevice::getFallbackFont(ImplFontEntry &rFallbackFont,
+SalLayout* OutputDevice::getFallbackFont(LogicalFontInstance &rFallbackFont,
     FontSelectPattern &rFontSelData, int nFallbackLevel,
     ImplLayoutArgs& rLayoutArgs) const
 {
@@ -1405,13 +1405,13 @@ SalLayout* OutputDevice::getFallbackFont(ImplFontEntry &rFallbackFont,
 
 SalLayout* OutputDevice::ImplGlyphFallbackLayout( SalLayout* pSalLayout, ImplLayoutArgs& rLayoutArgs ) const
 {
-    // This function relies on a valid mpFontEntry, if it doesn't exist bail out
+    // This function relies on a valid mpFontInstance, if it doesn't exist bail out
     // - we'd have crashed later on anyway. At least here we can catch the error in debug
     // mode.
-    if ( !mpFontEntry )
+    if ( !mpFontInstance )
     {
         SAL_WARN ("vcl.gdi", "No font entry set in OutputDevice");
-        assert(mpFontEntry);
+        assert(mpFontInstance);
         return nullptr;
     }
 
@@ -1430,29 +1430,29 @@ SalLayout* OutputDevice::ImplGlyphFallbackLayout( SalLayout* pSalLayout, ImplLay
     rLayoutArgs.ResetPos();
     OUString aMissingCodes = aMissingCodeBuf.makeStringAndClear();
 
-    FontSelectPattern aFontSelData = mpFontEntry->maFontSelData;
+    FontSelectPattern aFontSelData = mpFontInstance->maFontSelData;
 
     // try if fallback fonts support the missing unicodes
     for( int nFallbackLevel = 1; nFallbackLevel < MAX_FALLBACK; ++nFallbackLevel )
     {
         // find a font family suited for glyph fallback
-        // GetGlyphFallbackFont() needs a valid aFontSelData.mpFontEntry
+        // GetGlyphFallbackFont() needs a valid aFontSelData.mpFontInstance
         // if the system-specific glyph fallback is active
-        aFontSelData.mpFontEntry = mpFontEntry; // reset the fontentry to base-level
+        aFontSelData.mpFontInstance = mpFontInstance; // reset the fontinstance to base-level
 
-        ImplFontEntry* pFallbackFont = mpFontCache->GetGlyphFallbackFont( mpFontCollection,
+        LogicalFontInstance* pFallbackFont = mpFontCache->GetGlyphFallbackFont( mpFontCollection,
             aFontSelData, nFallbackLevel, aMissingCodes );
         if( !pFallbackFont )
             break;
 
-        aFontSelData.mpFontEntry = pFallbackFont;
+        aFontSelData.mpFontInstance = pFallbackFont;
         aFontSelData.mpFontData = pFallbackFont->maFontSelData.mpFontData;
         if( nFallbackLevel < MAX_FALLBACK-1)
         {
             // ignore fallback font if it is the same as the original font
             // unless we are looking for a substituion for 0x202F, in which
             // case we'll just use a normal space
-            if( mpFontEntry->maFontSelData.mpFontData == aFontSelData.mpFontData &&
+            if( mpFontInstance->maFontSelData.mpFontData == aFontSelData.mpFontData &&
                 aMissingCodes.indexOf(0x202F) == -1 )
             {
                 mpFontCache->Release( pFallbackFont );
@@ -1495,8 +1495,8 @@ long OutputDevice::GetMinKashida() const
     if( mbNewFont && !ImplNewFont() )
         return 0;
 
-    ImplFontEntry*      pEntry = mpFontEntry;
-    ImplFontAttributes* pFontAttributes = &(pEntry->maFontAttributes);
+    LogicalFontInstance* pFontInstance = mpFontInstance;
+    ImplFontAttributes* pFontAttributes = &(pFontInstance->maFontAttributes);
     return ImplDevicePixelToLogicWidth( pFontAttributes->GetMinKashida() );
 }
 
diff --git a/vcl/source/outdev/outdev.cxx b/vcl/source/outdev/outdev.cxx
index ebcd6c0..26346ed 100644
--- a/vcl/source/outdev/outdev.cxx
+++ b/vcl/source/outdev/outdev.cxx
@@ -93,7 +93,7 @@ OutputDevice::OutputDevice() :
     mpPrevGraphics                  = nullptr;
     mpNextGraphics                  = nullptr;
     mpMetaFile                      = nullptr;
-    mpFontEntry                     = nullptr;
+    mpFontInstance                     = nullptr;
     mpFontCache                     = nullptr;
     mpFontCollection                = nullptr;
     mpDeviceFontList                = nullptr;
@@ -234,8 +234,8 @@ void OutputDevice::dispose()
     mpOutDevStateStack = nullptr;
 
     // release the active font instance
-    if( mpFontEntry )
-        mpFontCache->Release( mpFontEntry );
+    if( mpFontInstance )
+        mpFontCache->Release( mpFontInstance );
 
     // remove cached results of GetDevFontList/GetDevSizeList
     // TODO: use smart pointers for them
diff --git a/vcl/source/outdev/outdevstate.cxx b/vcl/source/outdev/outdevstate.cxx
index 6f9d708..354d6d0 100644
--- a/vcl/source/outdev/outdevstate.cxx
+++ b/vcl/source/outdev/outdevstate.cxx
@@ -633,10 +633,10 @@ void OutputDevice::ImplReleaseFonts()
     mbNewFont = true;
     mbInitFont = true;
 
-    if ( mpFontEntry )
+    if ( mpFontInstance )
     {
-        mpFontCache->Release( mpFontEntry );
-        mpFontEntry = nullptr;
+        mpFontCache->Release( mpFontInstance );
+        mpFontInstance = nullptr;
     }
 
     if ( mpDeviceFontList )
diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx
index 762e33a..e62ea7c 100644
--- a/vcl/source/outdev/text.cxx
+++ b/vcl/source/outdev/text.cxx
@@ -109,7 +109,7 @@ void OutputDevice::ImplDrawTextRect( long nBaseX, long nBaseY,
     long nX = nDistX;
     long nY = nDistY;
 
-    short nOrientation = mpFontEntry->mnOrientation;
+    short nOrientation = mpFontInstance->mnOrientation;
     if ( nOrientation )
     {
         // Rotate rect without rounding problems for 90 degree rotations
@@ -150,7 +150,7 @@ void OutputDevice::ImplDrawTextRect( long nBaseX, long nBaseY,
             // inflate because polygons are drawn smaller
             Rectangle aRect( Point( nX, nY ), Size( nWidth+1, nHeight+1 ) );
             tools::Polygon   aPoly( aRect );
-            aPoly.Rotate( Point( nBaseX, nBaseY ), mpFontEntry->mnOrientation );
+            aPoly.Rotate( Point( nBaseX, nBaseY ), mpFontInstance->mnOrientation );
             ImplDrawPolygon( aPoly );
             return;
         }
@@ -177,9 +177,9 @@ void OutputDevice::ImplDrawTextBackground( const SalLayout& rSalLayout )
     mpGraphics->SetFillColor( ImplColorToSal( GetTextFillColor() ) );
     mbInitFillColor = true;
 
-    ImplDrawTextRect( nX, nY, 0, -(mpFontEntry->maFontAttributes.GetAscent() + mnEmphasisAscent),
+    ImplDrawTextRect( nX, nY, 0, -(mpFontInstance->maFontAttributes.GetAscent() + mnEmphasisAscent),
                       nWidth,
-                      mpFontEntry->mnLineHeight+mnEmphasisAscent+mnEmphasisDescent );
+                      mpFontInstance->mnLineHeight+mnEmphasisAscent+mnEmphasisDescent );
 }
 
 Rectangle OutputDevice::ImplGetTextBoundRect( const SalLayout& rSalLayout )
@@ -189,21 +189,21 @@ Rectangle OutputDevice::ImplGetTextBoundRect( const SalLayout& rSalLayout )
     long nY = aPoint.Y();
 
     long nWidth = rSalLayout.GetTextWidth();
-    long nHeight = mpFontEntry->mnLineHeight + mnEmphasisAscent + mnEmphasisDescent;
+    long nHeight = mpFontInstance->mnLineHeight + mnEmphasisAscent + mnEmphasisDescent;
 
-    nY -= mpFontEntry->maFontAttributes.GetAscent() + mnEmphasisAscent;
+    nY -= mpFontInstance->maFontAttributes.GetAscent() + mnEmphasisAscent;
 
-    if ( mpFontEntry->mnOrientation )
+    if ( mpFontInstance->mnOrientation )
     {
         long nBaseX = nX, nBaseY = nY;
-        if ( !(mpFontEntry->mnOrientation % 900) )
+        if ( !(mpFontInstance->mnOrientation % 900) )
         {
             long nX2 = nX+nWidth;
             long nY2 = nY+nHeight;
 
             Point aBasePt( nBaseX, nBaseY );
-            aBasePt.RotateAround( nX, nY, mpFontEntry->mnOrientation );
-            aBasePt.RotateAround( nX2, nY2, mpFontEntry->mnOrientation );
+            aBasePt.RotateAround( nX, nY, mpFontInstance->mnOrientation );
+            aBasePt.RotateAround( nX2, nY2, mpFontInstance->mnOrientation );
             nWidth = nX2-nX;
             nHeight = nY2-nY;
         }
@@ -212,7 +212,7 @@ Rectangle OutputDevice::ImplGetTextBoundRect( const SalLayout& rSalLayout )
             // inflate by +1+1 because polygons are drawn smaller
             Rectangle aRect( Point( nX, nY ), Size( nWidth+1, nHeight+1 ) );
             tools::Polygon   aPoly( aRect );
-            aPoly.Rotate( Point( nBaseX, nBaseY ), mpFontEntry->mnOrientation );
+            aPoly.Rotate( Point( nBaseX, nBaseY ), mpFontInstance->mnOrientation );
             return aPoly.GetBoundRect();
         }
     }
@@ -232,8 +232,8 @@ bool OutputDevice::ImplDrawRotateText( SalLayout& rSalLayout )
     {
         // guess vertical text extents if GetBoundRect failed
         int nRight = rSalLayout.GetTextWidth();
-        int nTop = mpFontEntry->maFontAttributes.GetAscent() + mnEmphasisAscent;
-        long nHeight = mpFontEntry->mnLineHeight + mnEmphasisAscent + mnEmphasisDescent;
+        int nTop = mpFontInstance->maFontAttributes.GetAscent() + mnEmphasisAscent;
+        long nHeight = mpFontInstance->mnLineHeight + mnEmphasisAscent + mnEmphasisDescent;
         aBoundRect = Rectangle( 0, -nTop, nRight, nHeight - nTop );
     }
 
@@ -248,7 +248,7 @@ bool OutputDevice::ImplDrawRotateText( SalLayout& rSalLayout )
 
     vcl::Font aFont( GetFont() );
     aFont.SetOrientation( 0 );
-    aFont.SetSize( Size( mpFontEntry->maFontSelData.mnWidth, mpFontEntry->maFontSelData.mnHeight ) );
+    aFont.SetSize( Size( mpFontInstance->maFontSelData.mnWidth, mpFontInstance->maFontSelData.mnHeight ) );
     pVDev->SetFont( aFont );
     pVDev->SetTextColor( Color( COL_BLACK ) );
     pVDev->SetTextFillColor();
@@ -261,12 +261,12 @@ bool OutputDevice::ImplDrawRotateText( SalLayout& rSalLayout )
     rSalLayout.DrawText( *static_cast<OutputDevice*>(pVDev)->mpGraphics );
 
     Bitmap aBmp = pVDev->GetBitmap( Point(), aBoundRect.GetSize() );
-    if ( !aBmp || !aBmp.Rotate( mpFontEntry->mnOwnOrientation, COL_WHITE ) )
+    if ( !aBmp || !aBmp.Rotate( mpFontInstance->mnOwnOrientation, COL_WHITE ) )
         return false;
 
     // calculate rotation offset
     tools::Polygon aPoly( aBoundRect );
-    aPoly.Rotate( Point(), mpFontEntry->mnOwnOrientation );
+    aPoly.Rotate( Point(), mpFontInstance->mnOwnOrientation );
     Point aPoint = aPoly.GetBoundRect().TopLeft();
     aPoint += Point( nX, nY );
 
@@ -295,7 +295,7 @@ bool OutputDevice::ImplDrawTextDirect( SalLayout& rSalLayout,
                                        bool bTextLines,
                                        sal_uInt32 flags )
 {
-    if( mpFontEntry->mnOwnOrientation )
+    if( mpFontInstance->mnOwnOrientation )
         if( ImplDrawRotateText( rSalLayout ) )
             return true;
 
@@ -415,7 +415,7 @@ void OutputDevice::ImplDrawSpecialText( SalLayout& rSalLayout )
     {
         if ( maFont.IsShadow() )
         {
-            long nOff = 1 + ((mpFontEntry->mnLineHeight-24)/24);
+            long nOff = 1 + ((mpFontInstance->mnLineHeight-24)/24);
             if ( maFont.IsOutline() )
                 nOff++;
             SetTextLineColor();
@@ -947,7 +947,7 @@ long OutputDevice::GetTextHeight() const
         if( !ImplNewFont() )
             return 0;
 
-    long nHeight = mpFontEntry->mnLineHeight + mnEmphasisAscent + mnEmphasisDescent;
+    long nHeight = mpFontInstance->mnLineHeight + mnEmphasisAscent + mnEmphasisDescent;
 
     if ( mbMap )
         nHeight = ImplDevicePixelToLogicHeight( nHeight );
@@ -1315,7 +1315,7 @@ ImplLayoutArgs OutputDevice::ImplPrepareLayoutArgs( OUString& rStr,
     // set layout options
     ImplLayoutArgs aLayoutArgs(rStr, nMinIndex, nEndIndex, nLayoutFlags, maFont.GetLanguageTag(), pLayoutCache);
 
-    int nOrientation = mpFontEntry ? mpFontEntry->mnOrientation : 0;
+    int nOrientation = mpFontInstance ? mpFontInstance->mnOrientation : 0;
     aLayoutArgs.SetOrientation( nOrientation );
 
     aLayoutArgs.SetLayoutWidth( nPixelWidth );
@@ -1355,8 +1355,8 @@ SalLayout* OutputDevice::ImplLayout(const OUString& rOrigStr,
 
     // convert from logical units to physical units
     // recode string if needed
-    if( mpFontEntry->mpConversion ) {
-        mpFontEntry->mpConversion->RecodeString( aStr, 0, aStr.getLength() );
+    if( mpFontInstance->mpConversion ) {
+        mpFontInstance->mpConversion->RecodeString( aStr, 0, aStr.getLength() );
         pLayoutCache = nullptr; // don't use cache with modified string!
     }
     DeviceCoordinate nPixelWidth = (DeviceCoordinate)nLogicalWidth;
@@ -1414,7 +1414,7 @@ SalLayout* OutputDevice::ImplLayout(const OUString& rOrigStr,
 
     // do glyph fallback if needed
     // #105768# avoid fallback for very small font sizes
-    if (aLayoutArgs.NeedFallback() && mpFontEntry->maFontSelData.mnHeight >= 3)
+    if (aLayoutArgs.NeedFallback() && mpFontInstance->maFontSelData.mnHeight >= 3)
         pSalLayout = ImplGlyphFallbackLayout(pSalLayout, aLayoutArgs);
 
     // position, justify, etc. the layout
@@ -2518,7 +2518,7 @@ bool OutputDevice::GetTextBoundRect( Rectangle& rRect,
         pSalLayout->Release();
     }
 
-    if( bRet || (OUTDEV_PRINTER == meOutDevType) || !mpFontEntry )
+    if( bRet || (OUTDEV_PRINTER == meOutDevType) || !mpFontInstance )
         return bRet;
 
     // fall back to bitmap method to get the bounding rectangle,
@@ -2529,7 +2529,7 @@ bool OutputDevice::GetTextBoundRect( Rectangle& rRect,
     aFont.SetOutline( false );
     aFont.SetRelief( RELIEF_NONE );
     aFont.SetOrientation( 0 );
-    aFont.SetSize( Size( mpFontEntry->maFontSelData.mnWidth, mpFontEntry->maFontSelData.mnHeight ) );
+    aFont.SetSize( Size( mpFontInstance->maFontSelData.mnWidth, mpFontInstance->maFontSelData.mnHeight ) );
     aVDev->SetFont( aFont );
     aVDev->SetTextAlign( ALIGN_TOP );
 
@@ -2541,7 +2541,7 @@ bool OutputDevice::GetTextBoundRect( Rectangle& rRect,
     // make the bitmap big enough
     // TODO: use factors when it would get too big
     long nWidth = pSalLayout->GetTextWidth();
-    long nHeight = mpFontEntry->mnLineHeight + mnEmphasisAscent + mnEmphasisDescent;
+    long nHeight = mpFontInstance->mnLineHeight + mnEmphasisAscent + mnEmphasisDescent;
     Point aOffset( nWidth/2, 8 );
     Size aOutSize( nWidth + 2*aOffset.X(), nHeight + 2*aOffset.Y() );
     if( !nWidth || !aVDev->SetOutputSizePixel( aOutSize ) )
@@ -2621,7 +2621,7 @@ bool OutputDevice::GetTextBoundRect( Rectangle& rRect,
         Point aTopLeft( nLeft, nTop );
         aTopLeft -= aOffset;
         // adjust to text alignment
-        aTopLeft.Y()+= mnTextOffY - (mpFontEntry->maFontAttributes.GetAscent() + mnEmphasisAscent);
+        aTopLeft.Y()+= mnTextOffY - (mpFontInstance->maFontAttributes.GetAscent() + mnEmphasisAscent);
         // convert to logical coordinates
         aSize = PixelToLogic( aSize );
         aTopLeft.X() = ImplDevicePixelToLogicWidth( aTopLeft.X() );
@@ -2648,7 +2648,7 @@ bool OutputDevice::GetTextOutlines( basegfx::B2DPolyPolygonVector& rVector,
         ImplNewFont();
     if( mbInitFont )
         InitFont();
-    if( !mpFontEntry )
+    if( !mpFontInstance )
         return false;
 
     bool bRet = false;
@@ -2728,7 +2728,7 @@ bool OutputDevice::GetTextOutlines( basegfx::B2DPolyPolygonVector& rVector,
         const_cast<OutputDevice&>(*this).mbNewFont = true;
     }
 
-    if( bRet || (OUTDEV_PRINTER == meOutDevType) || !mpFontEntry )
+    if( bRet || (OUTDEV_PRINTER == meOutDevType) || !mpFontInstance )
         return bRet;
 
     // reset work done (tdf#81876)
@@ -2743,7 +2743,7 @@ bool OutputDevice::GetTextOutlines( basegfx::B2DPolyPolygonVector& rVector,
     if (pSalLayout == nullptr)
         return false;
     long nOrgWidth = pSalLayout->GetTextWidth();
-    long nOrgHeight = mpFontEntry->mnLineHeight + mnEmphasisAscent
+    long nOrgHeight = mpFontInstance->mnLineHeight + mnEmphasisAscent
         + mnEmphasisDescent;
     pSalLayout->Release();
 
@@ -2768,7 +2768,7 @@ bool OutputDevice::GetTextOutlines( basegfx::B2DPolyPolygonVector& rVector,
     if (pSalLayout == nullptr)
         return false;
     long nWidth = pSalLayout->GetTextWidth();
-    long nHeight = aVDev->mpFontEntry->mnLineHeight + aVDev->mnEmphasisAscent +
+    long nHeight = aVDev->mpFontInstance->mnLineHeight + aVDev->mnEmphasisAscent +
                    aVDev->mnEmphasisDescent;
     pSalLayout->Release();
 
diff --git a/vcl/source/outdev/textline.cxx b/vcl/source/outdev/textline.cxx
index ca8c45d..3ced7c8 100644
--- a/vcl/source/outdev/textline.cxx
+++ b/vcl/source/outdev/textline.cxx
@@ -56,12 +56,12 @@ bool OutputDevice::ImplIsUnderlineAbove( const vcl::Font& rFont )
 
 void OutputDevice::ImplInitTextLineSize()
 {
-    mpFontEntry->maFontAttributes.ImplInitTextLineSize( this );
+    mpFontInstance->maFontAttributes.ImplInitTextLineSize( this );
 }
 
 void OutputDevice::ImplInitAboveTextLineSize()
 {
-    mpFontEntry->maFontAttributes.ImplInitAboveTextLineSize();
+    mpFontInstance->maFontAttributes.ImplInitAboveTextLineSize();
 }
 
 void OutputDevice::ImplDrawWavePixel( long nOriginX, long nOriginY,
@@ -215,19 +215,19 @@ void OutputDevice::ImplDrawWaveTextLine( long nBaseX, long nBaseY,
                                          Color aColor,
                                          bool bIsAbove )
 {
-    ImplFontEntry*  pFontEntry = mpFontEntry;
+    LogicalFontInstance* pFontInstance = mpFontInstance;
     long            nLineHeight;
     long            nLinePos;
 
     if ( bIsAbove )
     {
-        nLineHeight = pFontEntry->maFontAttributes.GetAboveWavelineUnderlineSize();
-        nLinePos = pFontEntry->maFontAttributes.GetAboveWavelineUnderlineOffset();
+        nLineHeight = pFontInstance->maFontAttributes.GetAboveWavelineUnderlineSize();
+        nLinePos = pFontInstance->maFontAttributes.GetAboveWavelineUnderlineOffset();
     }
     else
     {
-        nLineHeight = pFontEntry->maFontAttributes.GetWavelineUnderlineSize();
-        nLinePos = pFontEntry->maFontAttributes.GetWavelineUnderlineOffset();
+        nLineHeight = pFontInstance->maFontAttributes.GetWavelineUnderlineSize();
+        nLinePos = pFontInstance->maFontAttributes.GetWavelineUnderlineOffset();
     }
     if ( (eTextLine == UNDERLINE_SMALLWAVE) && (nLineHeight > 3) )
         nLineHeight = 3;
@@ -264,16 +264,16 @@ void OutputDevice::ImplDrawWaveTextLine( long nBaseX, long nBaseY,
 
         nLinePos -= nLineWidthHeight-nLineDY2;
         ImplDrawWaveLine( nBaseX, nBaseY, nDistX, nLinePos, nWidth, nLineHeight,
-                          nLineWidth, mpFontEntry->mnOrientation, aColor );
+                          nLineWidth, mpFontInstance->mnOrientation, aColor );
         nLinePos += nLineWidthHeight+nLineDY;
         ImplDrawWaveLine( nBaseX, nBaseY, nDistX, nLinePos, nWidth, nLineHeight,
-                          nLineWidth, mpFontEntry->mnOrientation, aColor );
+                          nLineWidth, mpFontInstance->mnOrientation, aColor );
     }
     else
     {
         nLinePos -= nLineWidthHeight/2;
         ImplDrawWaveLine( nBaseX, nBaseY, nDistX, nLinePos, nWidth, nLineHeight,
-                          nLineWidth, mpFontEntry->mnOrientation, aColor );
+                          nLineWidth, mpFontInstance->mnOrientation, aColor );
     }
 }
 
@@ -283,7 +283,7 @@ void OutputDevice::ImplDrawStraightTextLine( long nBaseX, long nBaseY,
                                              Color aColor,
                                              bool bIsAbove )
 {
-    ImplFontEntry*  pFontEntry = mpFontEntry;
+    LogicalFontInstance*  pFontInstance = mpFontInstance;
     long            nLineHeight = 0;
     long            nLinePos  = 0;
     long            nLinePos2 = 0;
@@ -303,13 +303,13 @@ void OutputDevice::ImplDrawStraightTextLine( long nBaseX, long nBaseY,
     case UNDERLINE_DASHDOTDOT:
         if ( bIsAbove )
         {
-            nLineHeight = pFontEntry->maFontAttributes.GetAboveUnderlineSize();
-            nLinePos    = nY + pFontEntry->maFontAttributes.GetAboveUnderlineOffset();
+            nLineHeight = pFontInstance->maFontAttributes.GetAboveUnderlineSize();
+            nLinePos    = nY + pFontInstance->maFontAttributes.GetAboveUnderlineOffset();
         }
         else
         {
-            nLineHeight = pFontEntry->maFontAttributes.GetUnderlineSize();
-            nLinePos    = nY + pFontEntry->maFontAttributes.GetUnderlineOffset();
+            nLineHeight = pFontInstance->maFontAttributes.GetUnderlineSize();
+            nLinePos    = nY + pFontInstance->maFontAttributes.GetUnderlineOffset();
         }
         break;
     case UNDERLINE_BOLD:
@@ -320,27 +320,27 @@ void OutputDevice::ImplDrawStraightTextLine( long nBaseX, long nBaseY,
     case UNDERLINE_BOLDDASHDOTDOT:
         if ( bIsAbove )
         {
-            nLineHeight = pFontEntry->maFontAttributes.GetAboveBoldUnderlineSize();
-            nLinePos    = nY + pFontEntry->maFontAttributes.GetAboveBoldUnderlineOffset();
+            nLineHeight = pFontInstance->maFontAttributes.GetAboveBoldUnderlineSize();
+            nLinePos    = nY + pFontInstance->maFontAttributes.GetAboveBoldUnderlineOffset();
         }
         else
         {
-            nLineHeight = pFontEntry->maFontAttributes.GetBoldUnderlineSize();
-            nLinePos    = nY + pFontEntry->maFontAttributes.GetBoldUnderlineOffset();
+            nLineHeight = pFontInstance->maFontAttributes.GetBoldUnderlineSize();
+            nLinePos    = nY + pFontInstance->maFontAttributes.GetBoldUnderlineOffset();
         }
         break;
     case UNDERLINE_DOUBLE:
         if ( bIsAbove )
         {
-            nLineHeight = pFontEntry->maFontAttributes.GetAboveDoubleUnderlineSize();
-            nLinePos    = nY + pFontEntry->maFontAttributes.GetAboveDoubleUnderlineOffset1();
-            nLinePos2   = nY + pFontEntry->maFontAttributes.GetAboveDoubleUnderlineOffset2();
+            nLineHeight = pFontInstance->maFontAttributes.GetAboveDoubleUnderlineSize();
+            nLinePos    = nY + pFontInstance->maFontAttributes.GetAboveDoubleUnderlineOffset1();
+            nLinePos2   = nY + pFontInstance->maFontAttributes.GetAboveDoubleUnderlineOffset2();
         }
         else
         {
-            nLineHeight = pFontEntry->maFontAttributes.GetDoubleUnderlineSize();
-            nLinePos    = nY + pFontEntry->maFontAttributes.GetDoubleUnderlineOffset1();
-            nLinePos2   = nY + pFontEntry->maFontAttributes.GetDoubleUnderlineOffset2();
+            nLineHeight = pFontInstance->maFontAttributes.GetDoubleUnderlineSize();
+            nLinePos    = nY + pFontInstance->maFontAttributes.GetDoubleUnderlineOffset1();
+            nLinePos2   = nY + pFontInstance->maFontAttributes.GetDoubleUnderlineOffset2();
         }
         break;
     default:
@@ -525,7 +525,7 @@ void OutputDevice::ImplDrawStrikeoutLine( long nBaseX, long nBaseY,
                                           FontStrikeout eStrikeout,
                                           Color aColor )
 {
-    ImplFontEntry*  pFontEntry = mpFontEntry;
+    LogicalFontInstance*  pFontInstance = mpFontInstance;
     long            nLineHeight = 0;
     long            nLinePos  = 0;
     long            nLinePos2 = 0;
@@ -538,17 +538,17 @@ void OutputDevice::ImplDrawStrikeoutLine( long nBaseX, long nBaseY,
     switch ( eStrikeout )
     {
     case STRIKEOUT_SINGLE:
-        nLineHeight = pFontEntry->maFontAttributes.GetStrikeoutSize();
-        nLinePos    = nY + pFontEntry->maFontAttributes.GetStrikeoutOffset();
+        nLineHeight = pFontInstance->maFontAttributes.GetStrikeoutSize();
+        nLinePos    = nY + pFontInstance->maFontAttributes.GetStrikeoutOffset();
         break;
     case STRIKEOUT_BOLD:
-        nLineHeight = pFontEntry->maFontAttributes.GetBoldStrikeoutSize();
-        nLinePos    = nY + pFontEntry->maFontAttributes.GetBoldStrikeoutOffset();
+        nLineHeight = pFontInstance->maFontAttributes.GetBoldStrikeoutSize();
+        nLinePos    = nY + pFontInstance->maFontAttributes.GetBoldStrikeoutOffset();
         break;
     case STRIKEOUT_DOUBLE:
-        nLineHeight = pFontEntry->maFontAttributes.GetDoubleStrikeoutSize();
-        nLinePos    = nY + pFontEntry->maFontAttributes.GetDoubleStrikeoutOffset1();
-        nLinePos2   = nY + pFontEntry->maFontAttributes.GetDoubleStrikeoutOffset2();
+        nLineHeight = pFontInstance->maFontAttributes.GetDoubleStrikeoutSize();
+        nLinePos    = nY + pFontInstance->maFontAttributes.GetDoubleStrikeoutOffset1();
+        nLinePos2   = nY + pFontInstance->maFontAttributes.GetDoubleStrikeoutOffset2();
         break;
     default:
         break;
@@ -624,10 +624,10 @@ void OutputDevice::ImplDrawStrikeoutChar( long nBaseX, long nBaseY,
 
     const OUString aStrikeoutText(aChars, nStrikeStrLen);
 
-    if( mpFontEntry->mnOrientation )
+    if( mpFontInstance->mnOrientation )
     {
         Point aOriginPt(0, 0);
-        aOriginPt.RotateAround( nDistX, nDistY, mpFontEntry->mnOrientation );
+        aOriginPt.RotateAround( nDistX, nDistY, mpFontInstance->mnOrientation );
     }
 
     nBaseX += nDistX;
@@ -652,13 +652,13 @@ void OutputDevice::ImplDrawStrikeoutChar( long nBaseX, long nBaseY,
     Rectangle aPixelRect;
     aPixelRect.Left() = nBaseX+mnTextOffX;
     aPixelRect.Right() = aPixelRect.Left()+nWidth;
-    aPixelRect.Bottom() = nBaseY+mpFontEntry->maFontAttributes.GetDescent();
-    aPixelRect.Top() = nBaseY-mpFontEntry->maFontAttributes.GetAscent();
+    aPixelRect.Bottom() = nBaseY+mpFontInstance->maFontAttributes.GetDescent();
+    aPixelRect.Top() = nBaseY-mpFontInstance->maFontAttributes.GetAscent();
 
-    if (mpFontEntry->mnOrientation)
+    if (mpFontInstance->mnOrientation)
     {
         tools::Polygon aPoly( aPixelRect );
-        aPoly.Rotate( Point(nBaseX+mnTextOffX, nBaseY+mnTextOffY), mpFontEntry->mnOrientation);
+        aPoly.Rotate( Point(nBaseX+mnTextOffX, nBaseY+mnTextOffY), mpFontInstance->mnOrientation);
         aPixelRect = aPoly.GetBoundRect();
     }
 
@@ -697,8 +697,8 @@ void OutputDevice::ImplDrawTextLine( long nX, long nY,
     {
         // --- RTL --- mirror at basex
         long nXAdd = nWidth - nDistX;
-        if( mpFontEntry->mnOrientation )
-            nXAdd = FRound( nXAdd * cos( mpFontEntry->mnOrientation * F_PI1800 ) );
+        if( mpFontInstance->mnOrientation )
+            nXAdd = FRound( nXAdd * cos( mpFontInstance->mnOrientation * F_PI1800 ) );
 
         nX += nXAdd - 1;
     }
@@ -771,10 +771,10 @@ void OutputDevice::ImplDrawTextLines( SalLayout& rSalLayout, FontStrikeout eStri
                 {
                     // get the distance to the base point (as projected to baseline)
                     nDist = aPos.X() - aStartPt.X();
-                    if( mpFontEntry->mnOrientation )
+                    if( mpFontInstance->mnOrientation )
                     {
                         const long nDY = aPos.Y() - aStartPt.Y();
-                        const double fRad = mpFontEntry->mnOrientation * F_PI1800;
+                        const double fRad = mpFontInstance->mnOrientation * F_PI1800;
                         nDist = FRound( nDist*cos(fRad) - nDY*sin(fRad) );
                     }
                 }
@@ -1042,10 +1042,10 @@ void OutputDevice::DrawWaveLine( const Point& rStartPos, const Point& rEndPos )
     }
 
     // #109280# make sure the waveline does not exceed the descent to avoid paint problems
-    ImplFontEntry* pFontEntry = mpFontEntry;
-    if( nWaveHeight > pFontEntry->maFontAttributes.GetWavelineUnderlineSize() )
+    LogicalFontInstance* pFontInstance = mpFontInstance;
+    if( nWaveHeight > pFontInstance->maFontAttributes.GetWavelineUnderlineSize() )
     {
-        nWaveHeight = pFontEntry->maFontAttributes.GetWavelineUnderlineSize();
+        nWaveHeight = pFontInstance->maFontAttributes.GetWavelineUnderlineSize();
     }
     ImplDrawWaveLine(nStartX, nStartY, 0, 0,
                      nEndX-nStartX, nWaveHeight,
diff --git a/vcl/source/window/accessibility.cxx b/vcl/source/window/accessibility.cxx
index c8e2d88..a36f0aa 100644
--- a/vcl/source/window/accessibility.cxx
+++ b/vcl/source/window/accessibility.cxx
@@ -63,7 +63,7 @@
 #include "salgdi.hxx"
 #include "svdata.hxx"
 #include "dbggui.hxx"
-#include "fontentry.hxx"
+#include "fontinstance.hxx"
 #include "window.h"
 #include "toolbox.h"
 #include "outdev.h"
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index 0974d2f..d508719 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -1884,7 +1884,7 @@ void Window::ImplNewInputContext()
     SalInputContext         aNewContext;
     const vcl::Font&        rFont = rInputContext.GetFont();
     const OUString&         rFontName = rFont.GetName();
-    ImplFontEntry*          pFontEntry = nullptr;

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list