external/pdfium/UnpackedTarball_pdfium.mk |    1 
 external/pdfium/getfontdictobjnum.patch.1 |   32 +++++++++++++
 include/vcl/filter/PDFiumLibrary.hxx      |    2 
 include/vcl/filter/embedfontinfo.hxx      |   44 ++++++++++++++++++
 include/vcl/gfxlink.hxx                   |    8 +++
 svx/source/inc/svdpdf.hxx                 |   18 +------
 svx/source/svdraw/svdpdf.cxx              |   72 ++++++++++++++++++------------
 vcl/source/pdf/PDFiumLibrary.cxx          |    4 +
 8 files changed, 137 insertions(+), 44 deletions(-)

New commits:
commit c1b5912675ba6c77c27d23db38c7c2881fa40435
Author:     Caolán McNamara <[email protected]>
AuthorDate: Fri Oct 24 10:46:18 2025 +0100
Commit:     Caolán McNamara <[email protected]>
CommitDate: Sun Oct 26 12:08:55 2025 +0100

    only import fonts once from a pdf
    
    typically there's one pdf that multiple Graphics back on to, one per
    page, so we only need to import the fonts once for those to be
    available. But we do need to know the mappings that were extracted.
    
    Change-Id: Icb27cee4b6e94585aaa0f751a3388b34566b610a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192994
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Jenkins

diff --git a/include/vcl/filter/embedfontinfo.hxx 
b/include/vcl/filter/embedfontinfo.hxx
new file mode 100644
index 000000000000..5ca51c4ce302
--- /dev/null
+++ b/include/vcl/filter/embedfontinfo.hxx
@@ -0,0 +1,44 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; 
fill-column: 100 -*- */
+/*
+ * 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/.
+ */
+#pragma once
+
+#include <rtl/ustring.hxx>
+#include <o3tl/sorted_vector.hxx>
+#include <tools/fontenum.hxx>
+
+// A description of an imported font as LibreOffice sees it
+// e.g. "Name SemiBold"
+struct OfficeFontInfo
+{
+    sal_Int32 nUniqueIdent;
+    OUString sFontName;
+    FontWeight eFontWeight;
+};
+
+struct OfficeFontInfoCmp
+{
+    bool operator()(const OfficeFontInfo& rA, const OfficeFontInfo& rB) const
+    {
+        return rA.nUniqueIdent < rB.nUniqueIdent;
+    }
+
+    bool operator()(int nAUniqueIdent, const OfficeFontInfo& rB) const
+    {
+        return nAUniqueIdent < rB.nUniqueIdent;
+    }
+
+    bool operator()(const OfficeFontInfo& rA, int nBUniqueIdent) const
+    {
+        return rA.nUniqueIdent < nBUniqueIdent;
+    }
+};
+
+typedef o3tl::sorted_vector<OfficeFontInfo, OfficeFontInfoCmp> ImportedFontMap;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/include/vcl/gfxlink.hxx b/include/vcl/gfxlink.hxx
index 1f0e0cf99f53..55e294aba70e 100644
--- a/include/vcl/gfxlink.hxx
+++ b/include/vcl/gfxlink.hxx
@@ -23,6 +23,7 @@
 #include <tools/gen.hxx>
 #include <vcl/dllapi.h>
 #include <vcl/mapmod.hxx>
+#include <vcl/filter/embedfontinfo.hxx>
 #include <vcl/BinaryDataContainer.hxx>
 
 class SvStream;
@@ -63,6 +64,10 @@ private:
     GfxLinkType     meType;
     sal_uInt32      mnUserId;
     BinaryDataContainer maDataContainer;
+    /// Useful for PDF, where multiple Graphics referring to individual pages
+    /// of a single PDF share a GfxLink, to describe PDF fonts that are already
+    /// imported from the PDF.
+    std::shared_ptr<ImportedFontMap> mxImportedFonts;
     mutable size_t  maHash;
     MapMode         maPrefMapMode;
     Size            maPrefSize;
@@ -101,6 +106,9 @@ public:
     void                SetPrefMapMode( const MapMode& rPrefMapMode );
     bool                IsPrefMapModeValid() const { return 
mbPrefMapModeValid;}
 
+    void setImportedFonts(const std::shared_ptr<ImportedFontMap>& 
rImportedFonts) { mxImportedFonts = rImportedFonts; }
+    const std::shared_ptr<ImportedFontMap>& getImportedFonts() const { return 
mxImportedFonts; }
+
     bool                IsNative() const;
 
     bool LoadNative(Graphic& rGraphic, sal_Int32 nPageNum = -1) const;
diff --git a/svx/source/inc/svdpdf.hxx b/svx/source/inc/svdpdf.hxx
index 3af9e5b1d3de..bb0dac7adbdc 100644
--- a/svx/source/inc/svdpdf.hxx
+++ b/svx/source/inc/svdpdf.hxx
@@ -78,24 +78,11 @@ struct EmbeddedFontInfo
     FontWeight eFontWeight;
 };
 
-// A description of such a final font as LibreOffice sees it
-// e.g. "Name SemiBold"
-struct OfficeFontInfo
-{
-    OUString sFontName;
-    FontWeight eFontWeight;
-};
-
 // Helper Class to import PDF
 class ImpSdrPdfImport final
 {
     std::vector<rtl::Reference<SdrObject>> maTmpList;
 
-    std::map<sal_Int32, OfficeFontInfo> maImportedFonts;
-    std::map<OUString, SubSetInfo> maDifferentSubsetsForFont;
-    // map of PostScriptName->Merged Font File for that font
-    std::map<OUString, EmbeddedFontInfo> maEmbeddedFonts;
-
     ScopedVclPtr<VirtualDevice> mpVD;
     tools::Rectangle maScaleRect;
     size_t mnMapScalingOfs; // from here on, not edited with MapScaling
@@ -103,6 +90,7 @@ class ImpSdrPdfImport final
     std::unique_ptr<SfxItemSet> mpFillAttr;
     std::unique_ptr<SfxItemSet> mpTextAttr;
     SdrModel* mpModel;
+    std::shared_ptr<ImportedFontMap> mxImportedFonts;
     SdrLayerID mnLayer;
     sal_Int32 mnLineWidth;
     static constexpr css::drawing::LineCap gaLineCap = 
css::drawing::LineCap_BUTT;
@@ -181,11 +169,11 @@ class ImpSdrPdfImport final
 
     void DoObjects(SvdProgressInfo* pProgrInfo, sal_uInt32* pActionsToReport, 
int nPageIndex);
 
-    void CollectFonts();
+    static ImportedFontMap CollectFonts(sal_Int64 nPrefix, 
vcl::pdf::PDFiumDocument& rPdfDocument);
 
     sal_Int64 getPrefix() const { return reinterpret_cast<sal_Int64>(this); }
 
-    static EmbeddedFontInfo convertToOTF(sal_Int64 prefix, SubSetInfo& 
rSubSetInfo,
+    static EmbeddedFontInfo convertToOTF(sal_Int64 nPrefix, SubSetInfo& 
rSubSetInfo,
                                          const OUString& fileUrl, const 
OUString& fontName,
                                          const OUString& baseFontName,
                                          std::u16string_view fontFileName,
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index ddafdca5ddef..2e1909bfb1bb 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -110,7 +110,7 @@ ImpSdrPdfImport::ImpSdrPdfImport(SdrModel& rModel, 
SdrLayerID nLay, const tools:
 
     // Load the buffer using pdfium.
     auto const& rVectorGraphicData = rGraphic.getVectorGraphicData();
-    auto* pData = rVectorGraphicData->getBinaryDataContainer().getData();
+    const auto* pData = rVectorGraphicData->getBinaryDataContainer().getData();
     sal_Int32 nSize = rVectorGraphicData->getBinaryDataContainer().getSize();
     mpPdfDocument = mpPDFium ? mpPDFium->openDocument(pData, nSize, OString()) 
: nullptr;
     if (!mpPdfDocument)
@@ -118,7 +118,16 @@ ImpSdrPdfImport::ImpSdrPdfImport(SdrModel& rModel, 
SdrLayerID nLay, const tools:
 
     mnPageCount = mpPdfDocument->getPageCount();
 
-    CollectFonts();
+    const std::shared_ptr<GfxLink> xGrfLink = rGraphic.GetSharedGfxLink();
+    if (xGrfLink)
+        mxImportedFonts = xGrfLink->getImportedFonts();
+    if (!mxImportedFonts)
+    {
+        mxImportedFonts
+            = std::make_shared<ImportedFontMap>(CollectFonts(getPrefix(), 
*mpPdfDocument));
+        if (xGrfLink)
+            xGrfLink->setImportedFonts(mxImportedFonts);
+    }
 
     // Same as SdModule
     mpVD = VclPtr<VirtualDevice>::Create();
@@ -222,13 +231,20 @@ OUString getFileUrlForTemporaryFont(sal_Int64 prefix, 
std::u16string_view name,
 
 // Possibly there is some alternative route to query pdfium for all fonts 
without
 // iterating through every object to see what font each uses
-void ImpSdrPdfImport::CollectFonts()
+ImportedFontMap ImpSdrPdfImport::CollectFonts(sal_Int64 nPrefix,
+                                              vcl::pdf::PDFiumDocument& 
rPdfDocument)
 {
-    const int nPageCount = mpPdfDocument->getPageCount();
+    ImportedFontMap aImportedFonts;
+
+    std::map<OUString, SubSetInfo> aDifferentSubsetsForFont;
+    // map of PostScriptName->Merged Font File for that font
+    std::map<OUString, EmbeddedFontInfo> aEmbeddedFonts;
+
+    const int nPageCount = rPdfDocument.getPageCount();
 
     for (int nPageIndex = 0; nPageIndex < nPageCount; ++nPageIndex)
     {
-        auto pPdfPage = mpPdfDocument->openPage(nPageIndex);
+        auto pPdfPage = rPdfDocument.openPage(nPageIndex);
         if (!pPdfPage)
         {
             SAL_WARN("sd.filter", "ImpSdrPdfImport missing page: " << 
nPageIndex);
@@ -254,8 +270,8 @@ void ImpSdrPdfImport::CollectFonts()
             if (!font)
                 continue;
 
-            auto itImportedFont = 
maImportedFonts.find(font->getFontDictObjNum());
-            if (itImportedFont == maImportedFonts.end())
+            auto itImportedFont = 
aImportedFonts.find(font->getFontDictObjNum());
+            if (itImportedFont == aImportedFonts.end())
             {
                 OUString sPostScriptName = 
GetPostScriptName(pPageObject->getBaseFontName());
 
@@ -276,8 +292,8 @@ void ImpSdrPdfImport::CollectFonts()
                 {
                     SAL_WARN("sd.filter", "skipping not embedded font, map: "
                                               << sFontName << " to " << 
sPostScriptFontFamily);
-                    maImportedFonts.emplace(font->getFontDictObjNum(),
-                                            OfficeFontInfo{ 
sPostScriptFontFamily, eFontWeight });
+                    aImportedFonts.insert(OfficeFontInfo{ 
font->getFontDictObjNum(),
+                                                          
sPostScriptFontFamily, eFontWeight });
                     continue;
                 }
 
@@ -291,9 +307,9 @@ void ImpSdrPdfImport::CollectFonts()
                 SubSetInfo* pSubSetInfo;
 
                 SAL_INFO("sd.filter", "importing font: " << font);
-                auto itFontName = 
maDifferentSubsetsForFont.find(sPostScriptName);
+                auto itFontName = 
aDifferentSubsetsForFont.find(sPostScriptName);
                 OUString sFontFileName = sPostScriptName;
-                if (itFontName != maDifferentSubsetsForFont.end())
+                if (itFontName != aDifferentSubsetsForFont.end())
                 {
                     sFontFileName += 
OUString::number(itFontName->second.aComponents.size());
                     itFontName->second.aComponents.emplace_back();
@@ -305,14 +321,14 @@ void ImpSdrPdfImport::CollectFonts()
                     SubSetInfo aSubSetInfo;
                     aSubSetInfo.aComponents.emplace_back();
                     auto result
-                        = maDifferentSubsetsForFont.emplace(sPostScriptName, 
aSubSetInfo).first;
+                        = aDifferentSubsetsForFont.emplace(sPostScriptName, 
aSubSetInfo).first;
                     pSubSetInfo = &result->second;
                 }
                 bool bTTF = EmbeddedFontsManager::analyzeTTF(aFontData.data(), 
aFontData.size(),
                                                              eFontWeight);
                 SAL_INFO_IF(!bTTF, "sd.filter", "not ttf/otf, converting");
-                OUString fileUrl = getFileUrlForTemporaryFont(getPrefix(), 
sFontFileName,
-                                                              bTTF ? u".ttf" : 
u".t1");
+                OUString fileUrl
+                    = getFileUrlForTemporaryFont(nPrefix, sFontFileName, bTTF 
? u".ttf" : u".t1");
                 if (!writeFontFile(fileUrl, aFontData))
                     SAL_WARN("sd.filter", "ttf not written");
                 else
@@ -323,8 +339,8 @@ void ImpSdrPdfImport::CollectFonts()
                 if (!bTTF || !aToUnicodeData.empty())
                 {
                     EmbeddedFontInfo fontInfo
-                        = convertToOTF(getPrefix(), *pSubSetInfo, fileUrl, 
sFontName,
-                                       sPostScriptName, sFontFileName, 
aToUnicodeData, *font);
+                        = convertToOTF(nPrefix, *pSubSetInfo, fileUrl, 
sFontName, sPostScriptName,
+                                       sFontFileName, aToUnicodeData, *font);
                     fileUrl = fontInfo.sFontFile;
                     sFontName = fontInfo.sFontName;
                     eFontWeight = fontInfo.eFontWeight;
@@ -332,30 +348,32 @@ void ImpSdrPdfImport::CollectFonts()
 
                 if (fileUrl.getLength())
                 {
-                    maImportedFonts.emplace(font->getFontDictObjNum(),
-                                            OfficeFontInfo{ sFontName, 
eFontWeight });
-                    maEmbeddedFonts[sPostScriptName]
+                    aImportedFonts.insert(
+                        OfficeFontInfo{ font->getFontDictObjNum(), sFontName, 
eFontWeight });
+                    aEmbeddedFonts[sPostScriptName]
                         = EmbeddedFontInfo{ sFontName, fileUrl, eFontWeight };
                 }
             }
             else
             {
                 SAL_INFO("sd.filter", "already saw font " << font << " and 
used "
-                                                          << 
itImportedFont->second.sFontName
+                                                          << 
itImportedFont->sFontName
                                                           << " as name");
             }
         }
     }
 
-    if (!maEmbeddedFonts.empty())
+    if (!aEmbeddedFonts.empty())
     {
-        EmbeddedFontsManager aEmbeddedFontsManager(nullptr); //TODO get model 
we want fonts in
-        for (const auto& fontinfo : maEmbeddedFonts)
+        EmbeddedFontsManager aEmbeddedFontsManager(nullptr);
+        for (const auto& fontinfo : aEmbeddedFonts)
         {
             aEmbeddedFontsManager.addEmbeddedFont(fontinfo.second.sFontFile,
                                                   fontinfo.second.sFontName, 
true);
         }
     }
+
+    return aImportedFonts;
 }
 
 void ImpSdrPdfImport::DoObjects(SvdProgressInfo* pProgrInfo, sal_uInt32* 
pActionsToReport,
@@ -1891,13 +1909,13 @@ void 
ImpSdrPdfImport::ImportText(std::unique_ptr<vcl::pdf::PDFiumPageObject> con
     FontWeight eFontWeight(WEIGHT_DONTKNOW);
     auto xFont = pPageObject->getFont();
     auto itImportedFont
-        = xFont ? maImportedFonts.find(xFont->getFontDictObjNum()) : 
maImportedFonts.end();
-    if (itImportedFont != maImportedFonts.end())
+        = xFont ? mxImportedFonts->find(xFont->getFontDictObjNum()) : 
mxImportedFonts->end();
+    if (itImportedFont != mxImportedFonts->end())
     {
         // We expand a name like "Foo" with non-traditional styles like
         // "SemiBold" to "Foo SemiBold";
-        sFontName = itImportedFont->second.sFontName;
-        eFontWeight = itImportedFont->second.eFontWeight;
+        sFontName = itImportedFont->sFontName;
+        eFontWeight = itImportedFont->eFontWeight;
     }
     else
     {
commit a1c3cdbd5aea7b5a0d8ea5c8d86e33a47e3cc176
Author:     Caolán McNamara <[email protected]>
AuthorDate: Fri Oct 24 12:33:26 2025 +0100
Commit:     Caolán McNamara <[email protected]>
CommitDate: Sun Oct 26 12:08:47 2025 +0100

    font dict obj num
    
    Change-Id: I40a5575bd26eedae99c8010638ae5602f65af2bc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192993
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Caolán McNamara <[email protected]>

diff --git a/external/pdfium/UnpackedTarball_pdfium.mk 
b/external/pdfium/UnpackedTarball_pdfium.mk
index f3a3c9e8d62b..5badc9d66044 100644
--- a/external/pdfium/UnpackedTarball_pdfium.mk
+++ b/external/pdfium/UnpackedTarball_pdfium.mk
@@ -20,6 +20,7 @@ pdfium_patches += system-abseil.diff
 # expose this mapping information
 pdfium_patches += tounicodeinfo.patch.1
 pdfium_patches += charcodetoglyphindex.patch.1
+pdfium_patches += getfontdictobjnum.patch.1
 
 pdfium_patches += system-fast_float.diff
 
diff --git a/external/pdfium/getfontdictobjnum.patch.1 
b/external/pdfium/getfontdictobjnum.patch.1
new file mode 100644
index 000000000000..b2d0512245cb
--- /dev/null
+++ b/external/pdfium/getfontdictobjnum.patch.1
@@ -0,0 +1,32 @@
+--- pdfium.orig/public/fpdf_edit.h
++++ pdfium/public/fpdf_edit.h
+@@ -1627,6 +1627,11 @@
+ FPDFFont_GetGlyphIndexFromCharCode(FPDF_FONT font, uint32_t charcode);
+ 
+ // Experimental API.
++// Get FontDictObjNum of the PDF character code
++FPDF_EXPORT int FPDF_CALLCONV
++FPDFFont_GetFontDictObjNum(FPDF_FONT font);
++
++// Experimental API.
+ // Get number of segments inside glyphpath.
+ //
+ // glyphpath - handle to a glyph path.
+--- pdfium.orig/fpdfsdk/fpdf_edittext.cpp
++++ pdfium/fpdfsdk/fpdf_edittext.cpp
+@@ -1173,6 +1173,15 @@
+   return FPDFGlyphPathFromCFXPath(pPath);
+ }
+ 
++FPDF_EXPORT int FPDF_CALLCONV
++FPDFFont_GetFontDictObjNum(FPDF_FONT font) {
++  auto* pFont = CPDFFontFromFPDFFont(font);
++  if (!pFont)
++    return -1;
++
++  return pFont->GetFontDictObjNum();
++}
++
+ FPDF_EXPORT uint32_t FPDF_CALLCONV
+ FPDFFont_GetGlyphIndexFromCharCode(FPDF_FONT font, uint32_t char_code) {
+   auto* pFont = CPDFFontFromFPDFFont(font);
diff --git a/include/vcl/filter/PDFiumLibrary.hxx 
b/include/vcl/filter/PDFiumLibrary.hxx
index 8e17ee7b4144..ef305387389c 100644
--- a/include/vcl/filter/PDFiumLibrary.hxx
+++ b/include/vcl/filter/PDFiumLibrary.hxx
@@ -69,7 +69,7 @@ public:
     // A return of 0 represents not-found.
     virtual sal_uInt32 getGlyphIndexFromCharCode(const sal_uInt32 nCharCode) 
const = 0;
 
-    virtual sal_Int64 getUniqueId() const = 0;
+    virtual sal_Int32 getFontDictObjNum() const = 0;
 };
 
 class VCL_DLLPUBLIC PDFium
diff --git a/svx/source/inc/svdpdf.hxx b/svx/source/inc/svdpdf.hxx
index e2bc3acf7895..3af9e5b1d3de 100644
--- a/svx/source/inc/svdpdf.hxx
+++ b/svx/source/inc/svdpdf.hxx
@@ -91,7 +91,7 @@ class ImpSdrPdfImport final
 {
     std::vector<rtl::Reference<SdrObject>> maTmpList;
 
-    std::map<sal_Int64, OfficeFontInfo> maImportedFonts;
+    std::map<sal_Int32, OfficeFontInfo> maImportedFonts;
     std::map<OUString, SubSetInfo> maDifferentSubsetsForFont;
     // map of PostScriptName->Merged Font File for that font
     std::map<OUString, EmbeddedFontInfo> maEmbeddedFonts;
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index fb94b2a3ea87..ddafdca5ddef 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -254,7 +254,7 @@ void ImpSdrPdfImport::CollectFonts()
             if (!font)
                 continue;
 
-            auto itImportedFont = maImportedFonts.find(font->getUniqueId());
+            auto itImportedFont = 
maImportedFonts.find(font->getFontDictObjNum());
             if (itImportedFont == maImportedFonts.end())
             {
                 OUString sPostScriptName = 
GetPostScriptName(pPageObject->getBaseFontName());
@@ -276,7 +276,7 @@ void ImpSdrPdfImport::CollectFonts()
                 {
                     SAL_WARN("sd.filter", "skipping not embedded font, map: "
                                               << sFontName << " to " << 
sPostScriptFontFamily);
-                    maImportedFonts.emplace(font->getUniqueId(),
+                    maImportedFonts.emplace(font->getFontDictObjNum(),
                                             OfficeFontInfo{ 
sPostScriptFontFamily, eFontWeight });
                     continue;
                 }
@@ -332,7 +332,7 @@ void ImpSdrPdfImport::CollectFonts()
 
                 if (fileUrl.getLength())
                 {
-                    maImportedFonts.emplace(font->getUniqueId(),
+                    maImportedFonts.emplace(font->getFontDictObjNum(),
                                             OfficeFontInfo{ sFontName, 
eFontWeight });
                     maEmbeddedFonts[sPostScriptName]
                         = EmbeddedFontInfo{ sFontName, fileUrl, eFontWeight };
@@ -1891,7 +1891,7 @@ void 
ImpSdrPdfImport::ImportText(std::unique_ptr<vcl::pdf::PDFiumPageObject> con
     FontWeight eFontWeight(WEIGHT_DONTKNOW);
     auto xFont = pPageObject->getFont();
     auto itImportedFont
-        = xFont ? maImportedFonts.find(xFont->getUniqueId()) : 
maImportedFonts.end();
+        = xFont ? maImportedFonts.find(xFont->getFontDictObjNum()) : 
maImportedFonts.end();
     if (itImportedFont != maImportedFonts.end())
     {
         // We expand a name like "Foo" with non-traditional styles like
diff --git a/vcl/source/pdf/PDFiumLibrary.cxx b/vcl/source/pdf/PDFiumLibrary.cxx
index 8c709a7c1ff6..9f23053b967d 100644
--- a/vcl/source/pdf/PDFiumLibrary.cxx
+++ b/vcl/source/pdf/PDFiumLibrary.cxx
@@ -453,7 +453,7 @@ public:
 
     sal_uInt32 getGlyphIndexFromCharCode(const sal_uInt32 nCharCode) const 
override;
 
-    sal_Int64 getUniqueId() const override { return 
reinterpret_cast<sal_Int64>(mpFont); }
+    sal_Int32 getFontDictObjNum() const override;
 };
 
 class PDFiumSearchHandleImpl final : public PDFiumSearchHandle
@@ -1317,6 +1317,8 @@ sal_uInt32 
PDFiumFontImpl::getGlyphIndexFromCharCode(const sal_uInt32 nCharCode)
     return FPDFFont_GetGlyphIndexFromCharCode(mpFont, nCharCode);
 }
 
+sal_Int32 PDFiumFontImpl::getFontDictObjNum() const { return 
FPDFFont_GetFontDictObjNum(mpFont); }
+
 bool PDFiumPageObjectImpl::getFontProperties(FontWeight& weight)
 {
     // FPDFFont_GetWeight turns out not to be that useful. It seems to just

Reply via email to