PoDoFo 0.9.20
PoDoFo::PdfFontMetrics Class Referenceabstract

#include <PdfFontMetrics.h>

Public Member Functions

double GetGlyphWidth (unsigned gid) const
 
virtual void SubstituteGIDs (std::vector< unsigned > &gids, std::vector< unsigned char > &backwardMap) const
 
virtual bool HasUnicodeMapping () const =0
 
virtual bool TryGetGID (char32_t codePoint, unsigned &gid) const =0
 
virtual double GetLineSpacing () const =0
 
virtual double GetUnderlineThickness () const =0
 
virtual double GetUnderlinePosition () const =0
 
virtual double GetStrikeThroughPosition () const =0
 
virtual double GetStrikeThroughThickness () const =0
 
bufferview GetOrLoadFontFileData () const
 
bool TryGetOrLoadFace (FT_Face &face) const
 
virtual const PdfObjectGetFontFileObject () const
 
virtual unsigned GetFontFileLength1 () const =0
 
virtual unsigned GetFontFileLength2 () const =0
 
virtual unsigned GetFontFileLength3 () const =0
 
std::string_view GetFontNameSafe (bool familyFirst=false) const
 
std::string_view GetBaseFontNameSafe () const
 
virtual std::string_view GetBaseFontName () const =0
 
virtual std::string_view GetFontName () const =0
 
virtual std::string_view GetFontNameRaw () const
 
virtual std::string_view GetFontFamilyName () const =0
 
unsigned GetWeight () const
 
virtual void GetBoundingBox (std::vector< double > &bbox) const =0
 
virtual double GetItalicAngle () const =0
 
virtual double GetAscent () const =0
 
virtual double GetDescent () const =0
 
virtual double GetCapHeight () const =0
 
double GetXHeight () const
 
virtual double GetStemV () const =0
 
double GetStemH () const
 
double GetAvgWidth () const
 
double GetMaxWidth () const
 
double GetDefaultWidth () const
 
PdfFontStyle GetStyle () const
 
virtual const Matrix2D & GetMatrix () const
 
bool IsType1Kind () const
 
bool IsTrueTypeKind () const
 
bool IsPdfSymbolic () const
 
bool IsPdfNonSymbolic () const
 
virtual std::unique_ptr< PdfCMapEncoding > CreateToUnicodeMap (const PdfEncodingLimits &limitHints) const
 
bool TryGetImplicitEncoding (PdfEncodingMapConstPtr &encoding) const
 

Detailed Description

This abstract class provides access to font metrics information.

The class doesn't know anything about CIDs (Character IDs), it just index glyphs, or GIDs where the terminology applies

Member Function Documentation

◆ CreateToUnicodeMap()

unique_ptr< PdfCMapEncoding > PdfFontMetrics::CreateToUnicodeMap ( const PdfEncodingLimits & limitHints) const
virtual

Create a best effort /ToUnicode map based on the character unicode maps of the font

Thi is implemented just for PdfFontMetricsFreetype This map may be unreliable because of ligatures, other kind of character subsitutions, or glyphs mapping to multiple unicode codepoints.

◆ GetAscent()

virtual double PoDoFo::PdfFontMetrics::GetAscent ( ) const
pure virtual

Get the ascent of this font in PDF units for the current font size.

Returns
the ascender for this font
See also
GetAscent

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetAvgWidth()

double PdfFontMetrics::GetAvgWidth ( ) const

/AvgWidth (optional, default 0)

◆ GetBaseFontName()

virtual std::string_view PoDoFo::PdfFontMetrics::GetBaseFontName ( ) const
pure virtual

Get a semantical base name for the font that can be used to compose the final name, eg. from "AAAAAA+Arial,Bold" to "Arial"

Remarks
It doesn't correspond to /BaseFont name entry in the font

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetBaseFontNameSafe()

string_view PdfFontMetrics::GetBaseFontNameSafe ( ) const

Get a semantical base name for the font that can be used to compose the final name, eg. from "AAAAAA+Arial,Bold" to "Arial"

The string is constructed either from the actual /BaseFont, /FontName or /FontFamily name, depending on exsistences of such entries

Remarks
It doesn't correspond to /BaseFont name entry in the font

◆ GetBoundingBox()

virtual void PoDoFo::PdfFontMetrics::GetBoundingBox ( std::vector< double > & bbox) const
pure virtual

Create the bounding box vector in PDF units

Parameters
bboxwrite the bounding box to this vector

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetCapHeight()

virtual double PoDoFo::PdfFontMetrics::GetCapHeight ( ) const
pure virtual

The vertical coordinate of the top of flat capital letters, measured from the baseline

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetDefaultWidth()

double PdfFontMetrics::GetDefaultWidth ( ) const

/MissingWidth or /DW in CID fonts (optional default 1000 in CID fonts, 0 otherwise)

◆ GetDescent()

virtual double PoDoFo::PdfFontMetrics::GetDescent ( ) const
pure virtual

Get the descent of this font in PDF units for the current font size. This value is usually negative!

Returns
the descender for this font
See also
GetDescent

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetFontFamilyName()

virtual std::string_view PoDoFo::PdfFontMetrics::GetFontFamilyName ( ) const
pure virtual

Get the actual /FontFamily, eg. "Times", if available

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetFontFileLength1()

virtual unsigned PoDoFo::PdfFontMetrics::GetFontFileLength1 ( ) const
pure virtual

Get /Length1 value for the font file, if available

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetFontFileLength2()

virtual unsigned PoDoFo::PdfFontMetrics::GetFontFileLength2 ( ) const
pure virtual

Get /Length2 value for the font file, if available

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetFontFileLength3()

virtual unsigned PoDoFo::PdfFontMetrics::GetFontFileLength3 ( ) const
pure virtual

Get /Length3 value for the font file, if available

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetFontFileObject()

const PdfObject * PdfFontMetrics::GetFontFileObject ( ) const
virtual

Get the actual font file object from a /FontFile like key, if available

For font data coming from a file imported font, see GetFontFileData()

Returns
a binary buffer of data containing the font data

◆ GetFontName()

virtual std::string_view PoDoFo::PdfFontMetrics::GetFontName ( ) const
pure virtual

Get the actual /FontName, eg. "AAAAAA+Arial,Bold", if available

By default returns empty string

Returns
the postscript name of the font or empty string if no postscript name is available.

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetFontNameRaw()

string_view PdfFontMetrics::GetFontNameRaw ( ) const
virtual

Get the actual /FontName, eg. "AAAAAA+Arial,Bold", if available By default returns GetFontName()

◆ GetFontNameSafe()

string_view PdfFontMetrics::GetFontNameSafe ( bool familyFirst = false) const

Get a string with either the actual /BaseFont, /FontName or /FontFamily name, depending on exsistences of such entries

◆ GetGlyphWidth()

double PdfFontMetrics::GetGlyphWidth ( unsigned gid) const

Get the width of a single glyph id

Parameters
gidid of the glyph
Returns
the width of a single glyph id

◆ GetItalicAngle()

virtual double PoDoFo::PdfFontMetrics::GetItalicAngle ( ) const
pure virtual

Get the italic angle of this font. Used to build the font dictionay

Returns
the italic angle of this font.

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetLineSpacing()

virtual double PoDoFo::PdfFontMetrics::GetLineSpacing ( ) const
pure virtual

Retrieve the line spacing for this font

Returns
the linespacing in PDF units

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetMatrix()

const Matrix2D & PdfFontMetrics::GetMatrix ( ) const
virtual

Returns the matrix mapping glyph space to text space

◆ GetMaxWidth()

double PdfFontMetrics::GetMaxWidth ( ) const

/MaxWidth (optional, default 0)

◆ GetOrLoadFontFileData()

bufferview PdfFontMetrics::GetOrLoadFontFileData ( ) const

Get an actual font data view

The data shall be resident. For font coming from the /FontFile keys, GetFontFileObject() may also be available.

Returns
a binary buffer of data containing the font data

◆ GetStemH()

double PdfFontMetrics::GetStemH ( ) const

The thickness, measured vertically, of the dominant horizontal stems of glyphs in the font (optional, default 0)

◆ GetStemV()

virtual double PoDoFo::PdfFontMetrics::GetStemV ( ) const
pure virtual

The thickness, measured horizontally, of the dominant vertical stems of glyphs in the font

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetStrikeThroughPosition()

virtual double PoDoFo::PdfFontMetrics::GetStrikeThroughPosition ( ) const
pure virtual

Return the position of the strikethrough for the current font size in PDF units

Returns
the strikethrough position in PDF units

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetStrikeThroughThickness()

virtual double PoDoFo::PdfFontMetrics::GetStrikeThroughThickness ( ) const
pure virtual

Get the width of the strikethrough for the current font size in PDF units

Returns
the thickness of the strikethrough in PDF units

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetStyle()

PdfFontStyle PdfFontMetrics::GetStyle ( ) const

Get whether the font style is bold.

This is a logical value that can be inferred from several characteristics

◆ GetUnderlinePosition()

virtual double PoDoFo::PdfFontMetrics::GetUnderlinePosition ( ) const
pure virtual

Return the position of the underline for the current font size in PDF units

Returns
the underline position in PDF units

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetUnderlineThickness()

virtual double PoDoFo::PdfFontMetrics::GetUnderlineThickness ( ) const
pure virtual

Get the width of the underline for the current font size in PDF units

Returns
the thickness of the underline in PDF units

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ GetWeight()

unsigned PdfFontMetrics::GetWeight ( ) const

Get the weight of this font.

Returns
the weight of this font (400 <= x < 700 means normal, x >= 700 means bold)

◆ GetXHeight()

double PdfFontMetrics::GetXHeight ( ) const

The font’s x height: the vertical coordinate of the top of flat nonascending lowercase letters (like the letter x), measured from the baseline, in fonts that have Latin characters (optional, default 0)

◆ HasUnicodeMapping()

virtual bool PoDoFo::PdfFontMetrics::HasUnicodeMapping ( ) const
pure virtual

Determines if the metrics has a valid Unicode code point to gid map

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ IsPdfNonSymbolic()

bool PdfFontMetrics::IsPdfNonSymbolic ( ) const

Determine if the font is symbolic according to the PDF definition

The font is symbolic if "uses the Standard Latin character set or a subset of it."

◆ IsPdfSymbolic()

bool PdfFontMetrics::IsPdfSymbolic ( ) const

Determine if the font is non symbolic according to the PDF definition

The font is symbolic if "contains glyphs outside the Standard Latin character set"

◆ IsTrueTypeKind()

bool PdfFontMetrics::IsTrueTypeKind ( ) const

Determine if the metrics are TrueType like font

◆ IsType1Kind()

bool PdfFontMetrics::IsType1Kind ( ) const

Determine if the metrics are for Adobe Type1 like font

◆ SubstituteGIDs()

void PdfFontMetrics::SubstituteGIDs ( std::vector< unsigned > & gids,
std::vector< unsigned char > & backwardMap ) const
virtual

Some fonts provides a glyph subsitution list, eg. for ligatures. OpenType fonts for example provides GSUB "Glyph Substitution Table"

Parameters
gidsgids to be substituded
backwardMaplist of gid counts to remap back substituded gids eg. { 32, 102, 105 } gets substituted in { 32, 174 } the backward map is { 1, 2 }

◆ TryGetGID()

virtual bool PoDoFo::PdfFontMetrics::TryGetGID ( char32_t codePoint,
unsigned & gid ) const
pure virtual

Try to retrieve the mapped gid from Unicode code point

Remarks
dont' use this method directly unless you know what you're doing: use PdfFont::TryGetGID instead

Implemented in PoDoFo::PdfFontMetricsStandard14.

◆ TryGetImplicitEncoding()

bool PdfFontMetrics::TryGetImplicitEncoding ( PdfEncodingMapConstPtr & encoding) const

Get an implicit encoding, such as the one of standard14 fonts, or the built-in encoding of a Type1 font, if available

◆ TryGetOrLoadFace()

bool PdfFontMetrics::TryGetOrLoadFace ( FT_Face & face) const

Get direct access to the internal FreeType handle

Returns
the internal freetype handle