PoDoFo
1.0.0-dev
|
Before you can draw text on a PDF document, you have to create a font object first. More...
#include <PdfFont.h>
Public Member Functions | |
bool | TryCreateSubstituteFont (PdfFont *&substFont) const |
Try get a replacement font based on this font characteristics. More... | |
bool | TryCreateSubstituteFont (PdfFontCreateFlags initFlags, PdfFont *&substFont) const |
void | WriteStringToStream (OutputStream &stream, const std::string_view &str) const |
Write a string to a PdfObjectStream in a format so that it can be used with this font. More... | |
unsigned | GetGID (char32_t codePoint, PdfGlyphAccess access) const |
Get the GID by the codePoint. More... | |
bool | TryGetGID (char32_t codePoint, PdfGlyphAccess access, unsigned &gid) const |
double | GetStringLength (const std::string_view &str, const PdfTextState &state) const |
Retrieve the width of a given text string in PDF units when drawn with the current font. More... | |
bool | TryGetStringLength (const std::string_view &str, const PdfTextState &state, double &width) const |
double | GetEncodedStringLength (const PdfString &encodedStr, const PdfTextState &state) const |
Retrieve the width of a given encoded PdfString in PDF units when drawn with the current font. More... | |
bool | TryGetEncodedStringLength (const PdfString &encodedStr, const PdfTextState &state, double &length) const |
bool | TryScanEncodedString (const PdfString &encodedStr, const PdfTextState &state, std::string &utf8str, std::vector< double > &lengths, std::vector< unsigned > &positions) const |
Scan string decoding unicode codepoints and obtaining glyphs lengths. More... | |
double | GetWordSpacingLength (const PdfTextState &state) const |
double | GetSpaceCharLength (const PdfTextState &state) const |
double | GetCharLength (char32_t codePoint, const PdfTextState &state, bool ignoreCharSpacing=false) const |
bool | TryGetCharLength (char32_t codePoint, const PdfTextState &state, bool ignoreCharSpacing, double &width) const |
bool | TryGetCharLength (char32_t codePoint, const PdfTextState &state, double &width) const |
double | GetDefaultCharLength (const PdfTextState &state, bool ignoreCharSpacing=false) const |
void | AddSubsetGIDs (const PdfString &encodedStr) |
Split the given string by white spaces. More... | |
double | GetLineSpacing (const PdfTextState &state) const |
Retrieve the line spacing for this font. More... | |
double | GetUnderlineThickness (const PdfTextState &state) const |
Get the width of the underline for the current font size in PDF units. More... | |
double | GetUnderlinePosition (const PdfTextState &state) const |
Return the position of the underline for the current font size in PDF units. More... | |
double | GetStrikeThroughPosition (const PdfTextState &state) const |
Return the position of the strikethrough for the current font size in PDF units. More... | |
double | GetStrikeThroughThickness (const PdfTextState &state) const |
Get the width of the strikethrough for the current font size in PDF units. More... | |
double | GetAscent (const PdfTextState &state) const |
Get the ascent of this font in PDF units for the current font size. More... | |
double | GetDescent (const PdfTextState &state) const |
Get the descent of this font in PDF units for the current font size. More... | |
virtual bool | SupportsSubsetting () const |
virtual PdfFontType | GetType () const =0 |
bool | IsStandard14Font () const |
bool | IsStandard14Font (PdfStandard14FontType &std14Font) const |
bool | IsCIDKeyed () const |
True if the font is CID keyed. | |
virtual bool | IsObjectLoaded () const |
True if the font is loaded from a PdfObject. | |
bool | IsSubsettingEnabled () const |
Check if this is a subsetting font. More... | |
bool | IsEmbeddingEnabled () const |
const std::string & | GetSubsetPrefix () const |
const PdfEncoding & | GetEncoding () const |
Returns a reference to the fonts encoding. More... | |
const PdfFontMetrics & | GetMetrics () const |
Returns a handle to the fontmetrics object of this font. More... | |
const std::string & | GetName () const |
Get the base font name of this font. More... | |
const UsedGIDsMap & | GetUsedGIDs () const |
PdfObject & | GetDescendantFontObject () |
Static Public Member Functions | |
static bool | TryCreateFromObject (PdfObject &obj, std::unique_ptr< PdfFont > &font) |
Create a new PdfFont from an existing font in a PDF file. More... | |
static bool | TryCreateFromObject (const PdfObject &obj, std::unique_ptr< const PdfFont > &font) |
static std::string_view | GetStandard14FontName (PdfStandard14FontType stdFont) |
static bool | IsStandard14Font (const std::string_view &fontName, PdfStandard14FontType &stdFont) |
Determine if font name is a Standard14 font. More... | |
static bool | IsStandard14Font (const std::string_view &fontName, bool useAltNames, PdfStandard14FontType &stdFont) |
Determine if font name is a Standard14 font. More... | |
Protected Member Functions | |
void | EmbedFontFile (PdfObject &descriptor) |
void | EmbedFontFileType1 (PdfObject &descriptor, const bufferview &data, unsigned length1, unsigned length2, unsigned length3) |
void | EmbedFontFileCFF (PdfObject &descriptor, const bufferview &data) |
void | EmbedFontFileTrueType (PdfObject &descriptor, const bufferview &data) |
void | EmbedFontFileOpenType (PdfObject &descriptor, const bufferview &data) |
virtual bool | tryMapCIDToGID (unsigned cid, unsigned &gid) const |
double | GetCIDLengthRaw (unsigned cid) const |
Get the raw width of a CID identifier. | |
void | GetBoundingBox (PdfArray &arr) const |
void | FillDescriptor (PdfDictionary &dict) const |
Fill the /FontDescriptor object dictionary. | |
virtual PdfObject * | getDescendantFontObject () |
virtual void | initImported () |
Initialization tasks for imported/created from scratch fonts. | |
virtual void | embedFont () |
virtual void | embedFontSubset () |
Protected Attributes | |
PdfFontMetricsConstPtr | m_Metrics |
std::unique_ptr< PdfEncoding > | m_Encoding |
std::shared_ptr< PdfCharCodeMap > | m_DynamicCIDMap |
std::shared_ptr< PdfCharCodeMap > | m_DynamicToUnicodeMap |
Friends | |
class | PdfFontSimple |
class | PdfFontCID |
class | PdfFontFactory |
class | PdfFontObject |
class | PdfEncoding |
class | PdfFontManager |
Before you can draw text on a PDF document, you have to create a font object first.
You can reuse this font object as often as you want.
Use methods in PdfFontManager, which you can access with PdfDocument::GetFonts(), to retrieve a font object.
This is only an abstract base class which is implemented for different font formats.
void PdfFont::AddSubsetGIDs | ( | const PdfString & | encodedStr | ) |
Split the given string by white spaces.
If the subsetting is not enabled it's a no-op
double PdfFont::GetAscent | ( | const PdfTextState & | state | ) | const |
Get the ascent of this font in PDF units for the current font size.
double PdfFont::GetCharLength | ( | char32_t | codePoint, |
const PdfTextState & | state, | ||
bool | ignoreCharSpacing = false |
||
) | const |
double PdfFont::GetDescent | ( | const PdfTextState & | state | ) | const |
Get the descent of this font in PDF units for the current font size.
This value is usually negative!
double PdfFont::GetEncodedStringLength | ( | const PdfString & | encodedStr, |
const PdfTextState & | state | ||
) | const |
Retrieve the width of a given encoded PdfString in PDF units when drawn with the current font.
view | a text string of which the width should be calculated |
|
inline |
Returns a reference to the fonts encoding.
unsigned PdfFont::GetGID | ( | char32_t | codePoint, |
PdfGlyphAccess | access | ||
) | const |
Get the GID by the codePoint.
codePoint | unicode codepoint |
double PdfFont::GetLineSpacing | ( | const PdfTextState & | state | ) | const |
Retrieve the line spacing for this font.
|
inline |
Returns a handle to the fontmetrics object of this font.
This can be used for size calculations of text strings when drawn using this font.
|
inline |
Get the base font name of this font.
double PdfFont::GetSpaceCharLength | ( | const PdfTextState & | state | ) | const |
double PdfFont::GetStrikeThroughPosition | ( | const PdfTextState & | state | ) | const |
Return the position of the strikethrough for the current font size in PDF units.
double PdfFont::GetStrikeThroughThickness | ( | const PdfTextState & | state | ) | const |
Get the width of the strikethrough for the current font size in PDF units.
double PdfFont::GetStringLength | ( | const std::string_view & | str, |
const PdfTextState & | state | ||
) | const |
Retrieve the width of a given text string in PDF units when drawn with the current font.
str | a utf8 string of which the width should be calculated |
|
inline |
double PdfFont::GetUnderlinePosition | ( | const PdfTextState & | state | ) | const |
Return the position of the underline for the current font size in PDF units.
double PdfFont::GetUnderlineThickness | ( | const PdfTextState & | state | ) | const |
Get the width of the underline for the current font size in PDF units.
double PdfFont::GetWordSpacingLength | ( | const PdfTextState & | state | ) | const |
|
static |
Determine if font name is a Standard14 font.
fontName | the unprocessed font name |
|
static |
Determine if font name is a Standard14 font.
By default use both standard names and alternative ones (Arial, TimesNewRoman, CourierNew)
fontName | the unprocessed font name |
|
inline |
Check if this is a subsetting font.
|
static |
Create a new PdfFont from an existing font in a PDF file.
obj | a PDF font object |
font | the created font object |
bool PdfFont::TryCreateSubstituteFont | ( | PdfFont *& | substFont | ) | const |
Try get a replacement font based on this font characteristics.
substFont | the created substitute font |
bool PdfFont::TryGetEncodedStringLength | ( | const PdfString & | encodedStr, |
const PdfTextState & | state, | ||
double & | length | ||
) | const |
bool PdfFont::TryGetStringLength | ( | const std::string_view & | str, |
const PdfTextState & | state, | ||
double & | width | ||
) | const |
str | a utf8 string of which the width should be calculated |
bool PdfFont::TryScanEncodedString | ( | const PdfString & | encodedStr, |
const PdfTextState & | state, | ||
std::string & | utf8str, | ||
std::vector< double > & | lengths, | ||
std::vector< unsigned > & | positions | ||
) | const |
Scan string decoding unicode codepoints and obtaining glyphs lengths.
lengths | lengths of the glyphs |
positions | position of the CIDs in the utf8string |
void PdfFont::WriteStringToStream | ( | OutputStream & | stream, |
const std::string_view & | str | ||
) | const |
Write a string to a PdfObjectStream in a format so that it can be used with this font.
This is used by PdfPainter::DrawText to display a text string. The following PDF operator will be Tj
stream | the string will be appended to stream without any leading or following whitespaces. |
str | a unicode or ansi string which will be displayed |