include/vcl/outdev.hxx                        |    4 -
 vcl/CppunitTest_vcl_font.mk                   |    8 +-
 vcl/inc/PhysicalFontCollection.hxx            |    2 
 vcl/inc/PhysicalFontFamily.hxx                |    7 +
 vcl/inc/font/PhysicalFontFaceCollection.hxx   |   50 ++++++++++++
 vcl/inc/outdev.h                              |   14 ---
 vcl/qa/cppunit/physicalfontfacecollection.cxx |  101 ++++++++++++++++++++++++++
 vcl/source/font/PhysicalFontCollection.cxx    |    5 -
 vcl/source/font/PhysicalFontFamily.cxx        |    3 
 vcl/source/gdi/embeddedfontshelper.cxx        |    3 
 vcl/source/gdi/print.cxx                      |    9 +-
 vcl/source/gdi/virdev.cxx                     |    3 
 vcl/source/outdev/font.cxx                    |   17 ++--
 vcl/source/outdev/outdev.cxx                  |    5 -
 vcl/win/gdi/salfont.cxx                       |    3 
 15 files changed, 194 insertions(+), 40 deletions(-)

New commits:
commit d596eb99c887b52ab99c38665cf1cacbcd24b029
Author:     Chris Sherlock <chris.sherloc...@gmail.com>
AuthorDate: Sun Sep 5 13:35:13 2021 +1000
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Sat Sep 18 07:52:10 2021 +0200

    vcl: rename ImplDeviceFontList to PhysicalFontFaceCollection and test
    
    - renamed ImplDeviceFontList to PhysicalFontFaceCollection and moved to
      own header file
    - wrote unit test for PhysicalFontFaceCollection
    
    Note that this is part of a series of patches where I also move font
    files into the relevant font directories, and into the vcl::font
    namespace.
    
    Change-Id: I43669137bcd9a9b2a9417b2369a5cb1b93b93733
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121663
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins

diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index b70ad6664038..54703cb88d34 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -70,7 +70,6 @@ class LogicalFontInstance;
 struct SystemGraphicsData;
 class ImplFontCache;
 class PhysicalFontCollection;
-class ImplDeviceFontList;
 class ImplDeviceFontSizeList;
 class ImplMultiTextLineInfo;
 class SalGraphics;
@@ -107,6 +106,7 @@ namespace vcl
     class WindowOutputDevice;
     namespace font {
         struct Feature;
+        class PhysicalFontFaceCollection;
     }
 
     namespace text {
@@ -183,7 +183,7 @@ private:
     mutable VclPtr<OutputDevice>    mpNextGraphics;     ///< Next output 
device in list
     GDIMetaFile*                    mpMetaFile;
     mutable rtl::Reference<LogicalFontInstance> mpFontInstance;
-    mutable std::unique_ptr<ImplDeviceFontList>     mpDeviceFontList;
+    mutable std::unique_ptr<vcl::font::PhysicalFontFaceCollection>  
mpFontFaceCollection;
     mutable std::unique_ptr<ImplDeviceFontSizeList> mpDeviceFontSizeList;
     std::vector<OutDevState>        maOutDevStateStack;
     std::unique_ptr<ImplOutDevData> mpOutDevData;
diff --git a/vcl/CppunitTest_vcl_font.mk b/vcl/CppunitTest_vcl_font.mk
index 8b66a989fa50..55a850e044a6 100644
--- a/vcl/CppunitTest_vcl_font.mk
+++ b/vcl/CppunitTest_vcl_font.mk
@@ -16,15 +16,21 @@ $(eval $(call gb_CppunitTest_set_include,vcl_font,\
 
 $(eval $(call gb_CppunitTest_add_exception_objects,vcl_font, \
        vcl/qa/cppunit/font \
+       vcl/qa/cppunit/physicalfontfacecollection \
 ))
 
-$(eval $(call gb_CppunitTest_use_externals,vcl_font,boost_headers))
+$(eval $(call gb_CppunitTest_use_externals,vcl_font,\
+       boost_headers \
+       harfbuzz \
+       graphite \
+))
 
 $(eval $(call gb_CppunitTest_use_libraries,vcl_font, \
        comphelper \
        cppu \
        cppuhelper \
        sal \
+       salhelper \
        svt \
        test \
        tl \
diff --git a/vcl/inc/PhysicalFontCollection.hxx 
b/vcl/inc/PhysicalFontCollection.hxx
index 38e591600467..c3ccdb69d438 100644
--- a/vcl/inc/PhysicalFontCollection.hxx
+++ b/vcl/inc/PhysicalFontCollection.hxx
@@ -67,7 +67,7 @@ public:
 
     // misc utilities
     std::shared_ptr<PhysicalFontCollection> Clone() const;
-    std::unique_ptr<ImplDeviceFontList> GetDeviceFontList() const;
+    std::unique_ptr<vcl::font::PhysicalFontFaceCollection> 
GetFontFaceCollection() const;
     std::unique_ptr<ImplDeviceFontSizeList> GetDeviceFontSizeList( const 
OUString& rFontName ) const;
 
 private:
diff --git a/vcl/inc/PhysicalFontFamily.hxx b/vcl/inc/PhysicalFontFamily.hxx
index 0137aca3b7c4..77f0938ebead 100644
--- a/vcl/inc/PhysicalFontFamily.hxx
+++ b/vcl/inc/PhysicalFontFamily.hxx
@@ -30,7 +30,10 @@
 
 #include "PhysicalFontFace.hxx"
 
-class ImplDeviceFontList;
+namespace vcl::font
+{
+class PhysicalFontFaceCollection;
+}
 class PhysicalFontFace;
 class PhysicalFontCollection;
 
@@ -74,7 +77,7 @@ public:
 
     PhysicalFontFace*   FindBestFontFace( const FontSelectPattern& rFSD ) 
const;
 
-    void                UpdateDevFontList( ImplDeviceFontList& ) const;
+    void                
UpdateDevFontList(vcl::font::PhysicalFontFaceCollection&) const;
     void                UpdateCloneFontList(PhysicalFontCollection&) const;
 
 static void             CalcType( ImplFontAttrs& rType, FontWeight& rWeight, 
FontWidth& rWidth,
diff --git a/vcl/inc/font/PhysicalFontFaceCollection.hxx 
b/vcl/inc/font/PhysicalFontFaceCollection.hxx
new file mode 100644
index 000000000000..9b4622690bfb
--- /dev/null
+++ b/vcl/inc/font/PhysicalFontFaceCollection.hxx
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#pragma once
+
+#include <sal/config.h>
+
+#include <vcl/dllapi.h>
+
+#include <PhysicalFontFace.hxx>
+
+#include <vector>
+
+/**
+    A PhysicalFontFaceCollection is created by a PhysicalFontCollection and
+    becomes invalid when original PhysicalFontCollection is modified.
+ */
+
+namespace vcl::font
+{
+class PhysicalFontFaceCollection
+{
+private:
+    std::vector<rtl::Reference<PhysicalFontFace>> maDevFontVector;
+
+public:
+    PhysicalFontFaceCollection() { maDevFontVector.reserve(1024); }
+    void Add(PhysicalFontFace* pFace) { maDevFontVector.push_back(pFace); }
+    PhysicalFontFace* Get(int nIndex) const { return 
maDevFontVector[nIndex].get(); }
+    int Count() const { return maDevFontVector.size(); }
+};
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/vcl/inc/outdev.h b/vcl/inc/outdev.h
index 16871789bb22..4e050cf52665 100644
--- a/vcl/inc/outdev.h
+++ b/vcl/inc/outdev.h
@@ -35,20 +35,6 @@ class VirtualDevice;
 class PhysicalFontCollection;
 enum class AddFontSubstituteFlags;
 
-// an ImplDeviceFontList is created by a PhysicalFontCollection
-// it becomes invalid when original PhysicalFontCollection is modified
-class ImplDeviceFontList
-{
-private:
-    std::vector<rtl::Reference<PhysicalFontFace>> maDevFontVector;
-
-public:
-                        ImplDeviceFontList()        { 
maDevFontVector.reserve(1024); }
-    void                Add( PhysicalFontFace* pFace )  { 
maDevFontVector.push_back( pFace ); }
-    PhysicalFontFace*   Get( int nIndex ) const     { return maDevFontVector[ 
nIndex ].get(); }
-    int                 Count() const               { return 
maDevFontVector.size(); }
-};
-
 class ImplDeviceFontSizeList
 {
 private:
diff --git a/vcl/qa/cppunit/physicalfontfacecollection.cxx 
b/vcl/qa/cppunit/physicalfontfacecollection.cxx
new file mode 100644
index 000000000000..829729c3a185
--- /dev/null
+++ b/vcl/qa/cppunit/physicalfontfacecollection.cxx
@@ -0,0 +1,101 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <sal/config.h>
+
+#include <test/bootstrapfixture.hxx>
+#include <cppunit/TestAssert.h>
+
+#include <rtl/ref.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+
+#include <vcl/fontcapabilities.hxx>
+#include <vcl/fontcharmap.hxx>
+#include <vcl/glyphitem.hxx>
+#include <vcl/virdev.hxx>
+
+#include <PhysicalFontFace.hxx>
+#include <font/PhysicalFontFaceCollection.hxx>
+#include <fontattributes.hxx>
+#include <fontinstance.hxx>
+#include <fontselect.hxx>
+
+class VclPhysicalFontFaceCollectionTest : public test::BootstrapFixture
+{
+public:
+    VclPhysicalFontFaceCollectionTest()
+        : BootstrapFixture(true, false)
+    {
+    }
+
+    void testShouldGetFontId();
+
+    CPPUNIT_TEST_SUITE(VclPhysicalFontFaceCollectionTest);
+    CPPUNIT_TEST(testShouldGetFontId);
+    CPPUNIT_TEST_SUITE_END();
+};
+
+namespace
+{
+class TestFontInstance : public LogicalFontInstance
+{
+public:
+    TestFontInstance(PhysicalFontFace const& rFontFace, FontSelectPattern 
const& rFontSelectPattern)
+        : LogicalFontInstance(rFontFace, rFontSelectPattern)
+    {
+    }
+
+    bool GetGlyphOutline(sal_GlyphId, basegfx::B2DPolyPolygon&, bool) const 
override
+    {
+        return true;
+    }
+
+protected:
+    bool ImplGetGlyphBoundRect(sal_GlyphId, tools::Rectangle&, bool) const 
override { return true; }
+};
+
+class TestFontFace : public PhysicalFontFace
+{
+public:
+    TestFontFace(sal_uIntPtr nId)
+        : PhysicalFontFace(FontAttributes())
+        , mnFontId(nId)
+    {
+    }
+
+    rtl::Reference<LogicalFontInstance>
+    CreateFontInstance(FontSelectPattern const& rFontSelectPattern) const 
override
+    {
+        return new TestFontInstance(*this, rFontSelectPattern);
+    }
+
+    sal_IntPtr GetFontId() const override { return mnFontId; }
+    FontCharMapRef GetFontCharMap() const override { return 
FontCharMap::GetDefaultMap(false); }
+    bool GetFontCapabilities(vcl::FontCapabilities&) const override { return 
true; }
+
+private:
+    sal_IntPtr mnFontId;
+};
+}
+
+void VclPhysicalFontFaceCollectionTest::testShouldGetFontId()
+{
+    vcl::font::PhysicalFontFaceCollection aCollection;
+    aCollection.Add(new TestFontFace(1988756));
+
+    rtl::Reference<PhysicalFontFace> pActual(new TestFontFace(1988756));
+    rtl::Reference<PhysicalFontFace> pExpected = aCollection.Get(0);
+
+    CPPUNIT_ASSERT_EQUAL(pExpected->GetFontId(), pActual->GetFontId());
+    CPPUNIT_ASSERT_EQUAL(1, aCollection.Count());
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(VclPhysicalFontFaceCollectionTest);
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/font/PhysicalFontCollection.cxx 
b/vcl/source/font/PhysicalFontCollection.cxx
index 7161e5b35c49..698e3a91c48e 100644
--- a/vcl/source/font/PhysicalFontCollection.cxx
+++ b/vcl/source/font/PhysicalFontCollection.cxx
@@ -27,6 +27,7 @@
 #include <unotools/fontdefs.hxx>
 #include <o3tl/sorted_vector.hxx>
 #include <outdev.h>
+#include <font/PhysicalFontFaceCollection.hxx>
 #include <PhysicalFontCollection.hxx>
 
 static ImplFontAttrs lcl_IsCJKFont( const OUString& rFontName )
@@ -887,9 +888,9 @@ std::shared_ptr<PhysicalFontCollection> 
PhysicalFontCollection::Clone() const
     return xClonedCollection;
 }
 
-std::unique_ptr<ImplDeviceFontList> 
PhysicalFontCollection::GetDeviceFontList() const
+std::unique_ptr<vcl::font::PhysicalFontFaceCollection> 
PhysicalFontCollection::GetFontFaceCollection() const
 {
-    std::unique_ptr<ImplDeviceFontList> pDeviceFontList(new 
ImplDeviceFontList);
+    std::unique_ptr<vcl::font::PhysicalFontFaceCollection> pDeviceFontList(new 
vcl::font::PhysicalFontFaceCollection);
 
     for (auto const& family : maPhysicalFontFamilies)
     {
diff --git a/vcl/source/font/PhysicalFontFamily.cxx 
b/vcl/source/font/PhysicalFontFamily.cxx
index cd8634aeb0ed..31caca8dcd31 100644
--- a/vcl/source/font/PhysicalFontFamily.cxx
+++ b/vcl/source/font/PhysicalFontFamily.cxx
@@ -23,6 +23,7 @@
 #include <unotools/fontdefs.hxx>
 
 #include <outdev.h>
+#include <font/PhysicalFontFaceCollection.hxx>
 #include <PhysicalFontCollection.hxx>
 
 void PhysicalFontFamily::CalcType( ImplFontAttrs& rType, FontWeight& rWeight, 
FontWidth& rWidth,
@@ -232,7 +233,7 @@ PhysicalFontFace* PhysicalFontFamily::FindBestFontFace( 
const FontSelectPattern&
 
 // update device font list with unique font faces, with uniqueness
 // meaning different font attributes, but not different fonts sizes
-void PhysicalFontFamily::UpdateDevFontList( ImplDeviceFontList& rDevFontList ) 
const
+void PhysicalFontFamily::UpdateDevFontList( 
vcl::font::PhysicalFontFaceCollection& rDevFontList ) const
 {
     PhysicalFontFace* pPrevFace = nullptr;
     for (auto const& font : maFontFaces)
diff --git a/vcl/source/gdi/embeddedfontshelper.cxx 
b/vcl/source/gdi/embeddedfontshelper.cxx
index cbe4ceed3454..ebcedb45b6a4 100644
--- a/vcl/source/gdi/embeddedfontshelper.cxx
+++ b/vcl/source/gdi/embeddedfontshelper.cxx
@@ -21,6 +21,7 @@
 #include <com/sun/star/io/XInputStream.hpp>
 
 #include <outdev.h>
+#include <font/PhysicalFontFaceCollection.hxx>
 #include <PhysicalFontCollection.hxx>
 #include <salgdi.hxx>
 #include <sft.hxx>
@@ -258,7 +259,7 @@ OUString EmbeddedFontsHelper::fontFileUrl( 
std::u16string_view familyName, FontF
     SalGraphics* graphics = Application::GetDefaultDevice()->GetGraphics();
     PhysicalFontCollection fonts;
     graphics->GetDevFontList( &fonts );
-    std::unique_ptr< ImplDeviceFontList > fontInfo( fonts.GetDeviceFontList());
+    std::unique_ptr< vcl::font::PhysicalFontFaceCollection > fontInfo( 
fonts.GetFontFaceCollection());
     PhysicalFontFace* selected = nullptr;
     for( int i = 0;
          i < fontInfo->Count();
diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx
index f46d6ed03ec5..36aa93f6ec37 100644
--- a/vcl/source/gdi/print.cxx
+++ b/vcl/source/gdi/print.cxx
@@ -35,6 +35,7 @@
 #include <outdev.h>
 #include <print.h>
 #include <PhysicalFontCollection.hxx>
+#include <font/PhysicalFontFaceCollection.hxx>
 #include <print.hrc>
 #include <salgdi.hxx>
 #include <salinst.hxx>
@@ -560,7 +561,7 @@ void Printer::ImplReleaseFonts()
     mbInitFont = true;
 
     mpFontInstance.clear();
-    mpDeviceFontList.reset();
+    mpFontFaceCollection.reset();
     mpDeviceFontSizeList.reset();
 }
 
@@ -922,7 +923,7 @@ void Printer::dispose()
         // the FontEntry to NULL here
         // TODO: consolidate duplicate cleanup by Printer and OutputDevice
         mpFontInstance.clear();
-        mpDeviceFontList.reset();
+        mpFontFaceCollection.reset();
         mpDeviceFontSizeList.reset();
         mxFontCache.reset();
         // font list deleted by OutputDevice dtor
@@ -1069,7 +1070,7 @@ bool Printer::SetPrinterProps( const Printer* pPrinter )
             ReleaseGraphics();
             pSVData->mpDefInst->DestroyInfoPrinter( mpInfoPrinter );
             mpFontInstance.clear();
-            mpDeviceFontList.reset();
+            mpFontFaceCollection.reset();
             mpDeviceFontSizeList.reset();
             // clean up font list
             mxFontCache.reset();
@@ -1098,7 +1099,7 @@ bool Printer::SetPrinterProps( const Printer* pPrinter )
             pSVData->mpDefInst->DestroyInfoPrinter( mpInfoPrinter );
 
             mpFontInstance.clear();
-            mpDeviceFontList.reset();
+            mpFontFaceCollection.reset();
             mpDeviceFontSizeList.reset();
             mxFontCache.reset();
             mxFontCollection.reset();
diff --git a/vcl/source/gdi/virdev.cxx b/vcl/source/gdi/virdev.cxx
index 8f5a1d96f329..77f364aded4d 100644
--- a/vcl/source/gdi/virdev.cxx
+++ b/vcl/source/gdi/virdev.cxx
@@ -26,6 +26,7 @@
 #include <vcl/virdev.hxx>
 
 #include <outdev.h>
+#include <font/PhysicalFontFaceCollection.hxx>
 #include <PhysicalFontCollection.hxx>
 #include <salinst.hxx>
 #include <salgdi.hxx>
@@ -470,7 +471,7 @@ 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
     mpFontInstance.clear();
-    mpDeviceFontList.reset();
+    mpFontFaceCollection.reset();
     mpDeviceFontSizeList.reset();
 
     // preserve global font lists
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index 4161ea8ce236..ed6f5be095b8 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -38,6 +38,7 @@
 #include <window.h>
 
 #include <ImplLayoutArgs.hxx>
+#include <font/PhysicalFontFaceCollection.hxx>
 #include <PhysicalFontCollection.hxx>
 #include <drawmode.hxx>
 #include <font/FeatureCollector.hxx>
@@ -103,7 +104,7 @@ FontMetric OutputDevice::GetDevFont( int nDevFontIndex ) 
const
     int nCount = GetDevFontCount();
     if( nDevFontIndex < nCount )
     {
-        const PhysicalFontFace& rData = *mpDeviceFontList->Get( nDevFontIndex 
);
+        const PhysicalFontFace& rData = *mpFontFaceCollection->Get( 
nDevFontIndex );
         aFontMetric.SetFamilyName( rData.GetFamilyName() );
         aFontMetric.SetStyleName( rData.GetStyleName() );
         aFontMetric.SetCharSet( rData.GetCharSet() );
@@ -121,22 +122,22 @@ FontMetric OutputDevice::GetDevFont( int nDevFontIndex ) 
const
 
 int OutputDevice::GetDevFontCount() const
 {
-    if( !mpDeviceFontList )
+    if( !mpFontFaceCollection )
     {
         if (!mxFontCollection)
         {
             return 0;
         }
 
-        mpDeviceFontList = mxFontCollection->GetDeviceFontList();
+        mpFontFaceCollection = mxFontCollection->GetFontFaceCollection();
 
-        if (!mpDeviceFontList->Count())
+        if (!mpFontFaceCollection->Count())
         {
-            mpDeviceFontList.reset();
+            mpFontFaceCollection.reset();
             return 0;
         }
     }
-    return mpDeviceFontList->Count();
+    return mpFontFaceCollection->Count();
 }
 
 bool OutputDevice::IsFontAvailable( const OUString& rFontName ) const
@@ -512,7 +513,7 @@ void OutputDevice::ImplClearFontData( const bool 
bNewFontLists )
 
     if ( bNewFontLists )
     {
-        mpDeviceFontList.reset();
+        mpFontFaceCollection.reset();
         mpDeviceFontSizeList.reset();
 
         // release all physically selected fonts on this device
@@ -1487,7 +1488,7 @@ void OutputDevice::ImplReleaseFonts()
     mbInitFont = true;
 
     mpFontInstance.clear();
-    mpDeviceFontList.reset();
+    mpFontFaceCollection.reset();
     mpDeviceFontSizeList.reset();
 }
 
diff --git a/vcl/source/outdev/outdev.cxx b/vcl/source/outdev/outdev.cxx
index 574fd89b91c2..85a82fac0d03 100644
--- a/vcl/source/outdev/outdev.cxx
+++ b/vcl/source/outdev/outdev.cxx
@@ -32,6 +32,7 @@
 #include <vcl/lazydelete.hxx>
 #include <comphelper/processfactory.hxx>
 
+#include <font/PhysicalFontFaceCollection.hxx>
 #include <salgdi.hxx>
 #include <window.h>
 #include <outdev.h>
@@ -68,7 +69,7 @@ OutputDevice::OutputDevice(OutDevType eOutDevType) :
     mpNextGraphics                  = nullptr;
     mpMetaFile                      = nullptr;
     mpFontInstance                     = nullptr;
-    mpDeviceFontList                = nullptr;
+    mpFontFaceCollection                = nullptr;
     mpDeviceFontSizeList            = nullptr;
     mpAlphaVDev                     = nullptr;
     mpExtOutDevData                 = nullptr;
@@ -169,7 +170,7 @@ void OutputDevice::dispose()
     mpFontInstance.clear();
 
     // remove cached results of GetDevFontList/GetDevSizeList
-    mpDeviceFontList.reset();
+    mpFontFaceCollection.reset();
     mpDeviceFontSizeList.reset();
 
     // release ImplFontCache specific to this OutputDevice
diff --git a/vcl/win/gdi/salfont.cxx b/vcl/win/gdi/salfont.cxx
index e07680c87dec..6c199de9c18f 100644
--- a/vcl/win/gdi/salfont.cxx
+++ b/vcl/win/gdi/salfont.cxx
@@ -53,6 +53,7 @@
 
 #include <fontsubset.hxx>
 #include <outdev.h>
+#include <font/PhysicalFontFaceCollection.hxx>
 #include <PhysicalFontCollection.hxx>
 #include <PhysicalFontFace.hxx>
 #include <sft.hxx>
@@ -329,7 +330,7 @@ bool 
WinGlyphFallbackSubstititution::FindFontSubstitute(FontSelectPattern& rFont
     }
 
     // last level fallback, check each font type face one by one
-    std::unique_ptr<ImplDeviceFontList> pTestFontList = 
pFontCollection->GetDeviceFontList();
+    std::unique_ptr<vcl::font::PhysicalFontFaceCollection> pTestFontList = 
pFontCollection->GetFontFaceCollection();
     // limit the count of fonts to be checked to prevent hangs
     static const int MAX_GFBFONT_COUNT = 600;
     int nTestFontCount = pTestFontList->Count();

Reply via email to