55 friend class PdfCommon;
86 const PdfFontCreateParams&
params = { });
94 const PdfFontCreateParams&
params = { });
102 const PdfFontCreateParams&
params = { });
109 const PdfFontCreateParams&
params = { });
116 const PdfFontCreateParams&
params = { });
122 PdfFont& GetOrCreateFont(PdfFontMetricsConstPtr metrics,
123 const PdfFontCreateParams& params = { });
128 PdfFont* GetCachedFont(
const PdfReference& ref);
136 const PdfFontSearchParams&
params = { });
138#if defined(_WIN32) && defined(PODOFO_HAVE_WIN32GDI)
142#ifdef PODOFO_HAVE_FONTCONFIG
148 static void SetFontConfigWrapper(
const std::shared_ptr<PdfFontConfigWrapper>& fontConfig);
150 static PdfFontConfigWrapper& GetFontConfigWrapper();
160 PdfFontManager(PdfDocument& doc);
163 const PdfFont* GetLoadedFont(
const PdfResources& resources,
const std::string_view& name);
170 PdfFont* AddImported(std::unique_ptr<PdfFont>&& font);
173 std::string GenerateSubsetPrefix();
175 static void AddFontDirectory(
const std::string_view& path);
179 static PdfFontMetricsConstPtr SearchFontMetrics(
const std::string_view& fontPattern,
180 const PdfFontSearchParams& params,
const PdfFontMetrics& metrics,
bool skipNormalization);
186 Descriptor(
const std::string_view& name, PdfStandard14FontType stdType,
187 const PdfEncoding& encoding,
bool hasFontStyle, PdfFontStyle style);
189 Descriptor(
const Descriptor& rhs) =
default;
191 const std::string Name;
192 const PdfStandard14FontType StdType;
193 const unsigned EncodingId;
194 const bool HasFontStyle;
195 const PdfFontStyle Style;
198 struct PathDescriptor
200 PathDescriptor(
const std::string_view& filepath,
unsigned faceIndex,
const PdfEncoding& encoding);
202 PathDescriptor(
const PathDescriptor& rhs) =
default;
204 const std::string FilePath;
205 const unsigned FaceIndex;
206 const unsigned EncodingId;
211 size_t operator()(
const Descriptor& elem)
const;
212 size_t operator()(
const PathDescriptor& elem)
const;
217 bool operator()(
const Descriptor& lhs,
const Descriptor& rhs)
const;
218 bool operator()(
const PathDescriptor& lhs,
const PathDescriptor& rhs)
const;
221 using CachedPaths = std::unordered_map<PathDescriptor, PdfFont*, HashElement, EqualElement>;
222 using CachedQueries = std::unordered_map<Descriptor, std::vector<PdfFont*>, HashElement, EqualElement>;
227 std::unique_ptr<PdfFont> Font;
230 using FontMap = std::unordered_map<PdfReference, Storage>;
233 static std::unique_ptr<const PdfFontMetrics> searchFontMetrics(
const std::string_view& fontName,
234 const PdfFontSearchParams& params,
const PdfFontMetrics* refMetrics,
bool skipNormalization);
235 PdfFont* getImportedFont(
const std::string_view& pattern,
236 const PdfFontSearchParams& searchParams,
const PdfFontCreateParams& createParams);
237 PdfFont* addImported(std::vector<PdfFont*>& fonts, std::unique_ptr<PdfFont>&& font);
238 PdfFont& getOrCreateFontHashed(PdfFontMetricsConstPtr&& metrics,
const PdfFontCreateParams& params);
241 PdfFontManager(
const PdfFontManager&) =
delete;
242 PdfFontManager& operator=(
const PdfFontManager&) =
delete;
246 std::string m_currentPrefix;
249 CachedQueries m_cachedQueries;
252 CachedPaths m_cachedPaths;
258 std::unordered_map<std::string, std::unique_ptr<PdfFont>> m_inlineFonts;
260#ifdef PODOFO_HAVE_FONTCONFIG
261 static std::shared_ptr<PdfFontConfigWrapper> m_fontConfig;
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13