5#ifndef PDF_ENCODING_MAP_H
6#define PDF_ENCODING_MAP_H
10#include "PdfCharCodeMap.h"
11#include "PdfCIDToGIDMap.h"
15class PdfIndirectObjectList;
18class PdfEncodingFactory;
19class PdfDifferenceMap;
48 bool TryGetNextCharCode(std::string_view::iterator&
it,
70 bool TryGetNextCID(std::string_view::iterator&
it,
71 const std::string_view::iterator& end,
PdfCID&
cid)
const;
75 bool TryGetNextCodePoints(std::string_view::iterator&
it,
84 virtual const PdfEncodingLimits& GetLimits()
const = 0;
106 virtual bool HasLigaturesSupport()
const;
117 virtual bool tryGetNextCharCode(std::string_view::iterator&
it,
149 virtual int GetWModeRaw()
const;
195 bool tryGetNextCodePoints(std::string_view::iterator&
it,
const std::string_view::iterator& end,
203 PdfWModeKind GetWModeSafe()
const;
214 friend class PdfCMapEncoding;
215 PODOFO_PRIVATE_FRIEND(
class PdfDynamicEncodingMap);
218 bool tryGetNextCharCode(std::string_view::iterator&
it,
234 inline const PdfCharCodeMap& GetCharMap()
const {
return *m_charMap; }
236 const PdfEncodingLimits& GetLimits()
const override;
243 std::shared_ptr<PdfCharCodeMap> m_charMap;
255 PODOFO_PRIVATE_FRIEND(
class PdfFontBuiltinType1Encoding);
265 const PdfEncodingLimits& GetLimits()
const override;
272 PdfEncodingLimits m_Limits;
281 friend class PdfFontMetricsFreetype;
286 PODOFO_PRIVATE_FRIEND(
class AppleLatin1Encoding);
315 void CreateUnicodeToGIDMap(
const std::unordered_map<unsigned, unsigned>&
codeToGidMap,
316 std::unordered_map<uint32_t, unsigned>&
unicodeMap)
const;
322 void initEncodingTable();
326 std::unordered_map<char32_t, char> m_EncodingTable;
339 const PdfEncodingLimits& GetLimits()
const override;
This file should be included as the FIRST file in every header of PoDoFo lib.
A memory owning immutable block of code points, optimized for small segments as up to 3 elements can ...
Definition PdfEncodingCommon.h:135
An interface for writing blocks of data to a data source.
Definition OutputStream.h:16
A common base class for built-in encodings which are known by name.
Definition PdfEncodingMap.h:280
virtual const char32_t * GetToUnicodeTable() const =0
Gets a table of 256 short values which are the big endian Unicode code points that are assigned to th...
const PdfName & GetName() const
Get the name of this encoding.
Definition PdfEncodingMap.h:296
A bidirectional map from character code units to unspecified code points.
Definition PdfCharCodeMap.h:76
The PDF dictionary data type of PoDoFo (inherits from PdfDataContainer, the base class for such repre...
Definition PdfDictionary.h:80
PdfDifferenceEncoding is an encoding, which is based on either the fonts encoding or a predefined enc...
Definition PdfDifferenceEncoding.h:113
A helper class for PdfDifferenceEncoding that can be used to create a differences array.
Definition PdfDifferenceEncoding.h:27
This factory creates a PdfEncoding from an existing object in the PDF.
Definition PdfEncodingFactory.h:17
Basic PdfEncodingMap implementation using a PdfCharCodeMap.
Definition PdfEncodingMap.h:213
This factory creates a PdfEncodingMap.
Definition PdfEncodingMapFactory.h:16
PdfEncodingMap used by legacy encodings like PdfBuiltInEncoding or PdfDifferenceEncoding that can def...
Definition PdfEncodingMap.h:252
A PdfEncodingMap is a low level interface to convert between utf8 and encoded strings in and to deter...
Definition PdfEncodingMap.h:30
virtual void AppendToUnicodeEntries(OutputStream &stream, const PdfFont &font, charbuff &temp) const =0
During a WriteToUnicodeCMap append "beginbfchar" and "beginbfrange" entries.
virtual bool tryGetCodePoints(const PdfCharCode &codeUnit, const unsigned *cidId, CodePointSpan &codePoints) const =0
Get code points from a code unit.
virtual void AppendCIDMappingEntries(OutputStream &stream, const PdfFont &font, charbuff &temp) const =0
During a PdfEncoding::ExportToFont() append "begincidchar" and/or "begincidrange" entries.
PdfEncodingMapType GetType() const
Type of encoding, may be Simple or CMap.
Definition PdfEncodingMap.h:96
virtual bool tryGetCharCode(char32_t codePoint, PdfCharCode &codeUnit) const =0
Try get char code unit from unicode code point.
A PdfEncoding is in PdfFont to transform a text string into a representation so that it can be displa...
Definition PdfEncoding.h:55
This abstract class provides access to font metrics information.
Definition PdfFontMetrics.h:34
Before you can draw text on a PDF document, you have to create a font object first.
Definition PdfFont.h:43
PdfIdentityEncoding is a two-byte encoding which can be used with TrueType fonts to represent all cha...
Definition PdfIdentityEncoding.h:29
A list of PdfObjects that constitutes the indirect object list of the document The PdfParser will rea...
Definition PdfIndirectObjectList.h:29
This class represents a PdfName.
Definition PdfName.h:22
Dummy encoding map that will just throw exception.
Definition PdfEncodingMap.h:332
This class represents a PDF indirect Object in memory.
Definition PdfObject.h:33
A common base class for Pdf defined predefined encodings which are known by name.
Definition PdfPredefinedEncoding.h:25
Represents a predefined ToUnicode CMap as the ones described in ISO 32000-2:2020 "9....
Definition PdfPredefinedToUnicodeCMap.h:18
StandardEncoding.
Definition PdfPredefinedEncoding.h:112
A PDF string context to iteratively scan a string and collect both CID and unicode codepoints.
Definition PdfEncoding.h:22
Symbol Encoding.
Definition PdfPredefinedEncoding.h:129
ZapfDingbats encoding.
Definition PdfPredefinedEncoding.h:146
Convenient type for char array storage and/or buffer with std::string compatibility.
Definition basetypes.h:35
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13
cspan< char32_t > unicodeview
Unicode code point view.
Definition basetypes.h:24
std::shared_ptr< const PdfEncodingMap > PdfToUnicodeMapConstPtr
Convenience alias for a const /ToUnicode CMap entry shared ptr.
Definition PdfEncodingMap.h:361
std::shared_ptr< const PdfBuiltInEncoding > PdfBuiltInEncodingConstPtr
Convenience typedef for a const /Encoding map entry shared ptr.
Definition PdfEncodingMap.h:357
PdfEncodingMapType
Definition PdfDeclarations.h:123
PdfPredefinedEncodingType
Definition PdfDeclarations.h:130
std::shared_ptr< const PdfEncodingMap > PdfEncodingMapConstPtr
Convenience typedef for a const /Encoding map entry shared ptr.
Definition PdfEncodingMap.h:353
Represent a CID (Character ID) with full code unit information.
Definition PdfEncodingCommon.h:46
A character code unit.
Definition PdfEncodingCommon.h:17