PoDoFo
1.0.0-dev
|
This abstract class provides access to font metrics information. More...
#include <PdfFontMetrics.h>
Inherited by PoDoFo::PdfFontMetricsBase, and PoDoFo::PdfFontMetricsFreetype.
Public Member Functions | |
virtual unsigned | GetGlyphCount () const =0 |
double | GetGlyphWidth (unsigned gid) const |
Get the width of a single glyph id. More... | |
virtual bool | TryGetGlyphWidth (unsigned gid, double &width) const =0 |
virtual void | SubstituteGIDs (std::vector< unsigned > &gids, std::vector< unsigned char > &backwardMap) const |
Some fonts provides a glyph substitution list, eg. More... | |
virtual bool | HasUnicodeMapping () const =0 |
Determines if the metrics has a valid Unicode code point to gid map. | |
virtual bool | TryGetGID (char32_t codePoint, unsigned &gid) const =0 |
Try to retrieve the mapped gid from Unicode code point. More... | |
virtual double | GetLineSpacing () const =0 |
Retrieve the line spacing for this font. More... | |
virtual double | GetUnderlineThickness () const =0 |
Get the width of the underline for the current font size in PDF units. More... | |
virtual double | GetUnderlinePosition () const =0 |
Return the position of the underline for the current font size in PDF units. More... | |
virtual double | GetStrikeThroughPosition () const =0 |
Return the position of the strikethrough for the current font size in PDF units. More... | |
virtual double | GetStrikeThroughThickness () const =0 |
Get the width of the strikethrough for the current font size in PDF units. More... | |
virtual PdfFontFileType | GetFontFileType () const =0 |
bool | HasFontFileData () const |
bufferview | GetOrLoadFontFileData () const |
Get an actual font data view. More... | |
virtual const PdfObject * | GetFontFileObject () const |
Get the actual font file object from a /FontFile like key, if available. More... | |
virtual unsigned | GetFontFileLength1 () const =0 |
Get /Length1 value for the font file, if available. | |
virtual unsigned | GetFontFileLength2 () const =0 |
Get /Length2 value for the font file, if available. | |
virtual unsigned | GetFontFileLength3 () const =0 |
Get /Length3 value for the font file, if available. | |
virtual std::string_view | GetFontName () const =0 |
Get the actual /FontName, eg. More... | |
virtual std::string_view | GetFontNameRaw () const |
Get the actual /FontName, eg. More... | |
virtual std::string_view | GetFontFamilyName () const =0 |
Get the actual /FontFamily, eg. More... | |
std::string_view | GeFontFamilyNameSafe () const |
Get a family font name, either from /FontFamily or constructed from available /BaseFont, /FontName (eg. More... | |
virtual std::string_view | GetPostScriptNameApprox () const |
Get a an approximate PostScript name, from available /BaseFont, /FontName (eg. More... | |
virtual PdfFontStretch | GetFontStretch () const =0 |
unsigned | GetWeight () const |
Get the weight of this font. More... | |
virtual int | GetWeightRaw () const =0 |
virtual PdfFontDescriptorFlags | GetFlags () const =0 |
virtual void | GetBoundingBox (std::vector< double > &bbox) const =0 |
Create the bounding box vector in PDF units. More... | |
virtual double | GetItalicAngle () const =0 |
Get the italic angle of this font. More... | |
virtual double | GetAscent () const =0 |
Get the ascent of this font in PDF units for the current font size. More... | |
virtual double | GetDescent () const =0 |
Get the descent of this font in PDF units for the current font size. More... | |
double | GetLeading () const |
virtual double | GetLeadingRaw () const =0 |
virtual double | GetCapHeight () const =0 |
The vertical coordinate of the top of flat capital letters, measured from the baseline. | |
double | 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) | |
virtual double | GetXHeightRaw () const =0 |
virtual double | GetStemV () const =0 |
The thickness, measured horizontally, of the dominant vertical stems of glyphs in the font. | |
double | GetStemH () const |
The thickness, measured vertically, of the dominant horizontal stems of glyphs in the font (optional, default 0) | |
virtual double | GetStemHRaw () const =0 |
double | GetAvgWidth () const |
/AvgWidth (optional, default 0) | |
virtual double | GetAvgWidthRaw () const =0 |
double | GetMaxWidth () const |
/MaxWidth (optional, default 0) | |
virtual double | GetMaxWidthRaw () const =0 |
double | GetDefaultWidth () const |
/MissingWidth or /DW in CID fonts (optional default 1000 in CID fonts, 0 otherwise) | |
virtual double | GetDefaultWidthRaw () const =0 |
PdfFontStyle | GetStyle () const |
Get whether the font style is bold. More... | |
virtual bool | IsObjectLoaded () const |
bool | IsStandard14FontMetrics () const |
virtual bool | IsStandard14FontMetrics (PdfStandard14FontType &std14Font) const |
virtual const Matrix2D & | GetMatrix () const |
Returns the matrix mapping glyph space to text space. | |
bool | IsType1Kind () const |
Determine if the metrics are for Adobe Type1 like font. | |
bool | IsTrueTypeKind () const |
Determine if the metrics are TrueType like font. | |
bool | IsPdfSymbolic () const |
Determine if the font is non symbolic according to the PDF definition. More... | |
bool | IsPdfNonSymbolic () const |
Determine if the font is symbolic according to the PDF definition. More... | |
virtual std::unique_ptr< PdfCMapEncoding > | CreateToUnicodeMap (const PdfEncodingLimits &limitHints) const |
Create a best effort /ToUnicode map based on the character unicode maps of the font. More... | |
bool | 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. | |
PdfCIDToGIDMapConstPtr | GetCIDToGIDMap () const |
const std::string & | GetFilePath () const |
unsigned | GetFaceIndex () const |
Static Public Member Functions | |
static std::unique_ptr< const PdfFontMetrics > | Create (const std::string_view &filepath, unsigned faceIndex=0) |
static std::unique_ptr< const PdfFontMetrics > | CreateFromBuffer (const bufferview &buffer, unsigned faceIndex=0) |
Protected Member Functions | |
virtual std::string_view | GetBaseFontName () const =0 |
Get a semantical base name for the font that can be used to compose the final name, eg. More... | |
virtual const PdfCIDToGIDMapConstPtr & | getCIDToGIDMap () const |
virtual bool | getIsBoldHint () const =0 |
virtual bool | getIsItalicHint () const =0 |
virtual const datahandle & | GetFontFileDataHandle () const =0 |
virtual FT_Face | GetFaceHandle () const =0 |
Friends | |
class | PdfFont |
class | PdfFontManager |
class | PdfFontMetricsBase |
class | PdfFontMetricsFreetype |
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
|
virtual |
Create a best effort /ToUnicode map based on the character unicode maps of the font.
This is implemented just for PdfFontMetricsFreetype This map may be unreliable because of ligatures, other kind of character substitutions, or glyphs mapping to multiple unicode codepoints.
string_view PdfFontMetrics::GeFontFamilyNameSafe | ( | ) | const |
Get a family font name, either from /FontFamily or constructed from available /BaseFont, /FontName (eg.
"AAAAAA+Arial,Bold" becomes "Arial")
|
pure virtual |
Get the ascent of this font in PDF units for the current font size.
Implemented in PoDoFo::PdfFontMetricsStandard14.
|
protectedpure 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"
Implemented in PoDoFo::PdfFontMetricsStandard14.
|
pure virtual |
Create the bounding box vector in PDF units.
bbox | write the bounding box to this vector |
Implemented in PoDoFo::PdfFontMetricsStandard14.
|
pure virtual |
Get the descent of this font in PDF units for the current font size.
This value is usually negative!
Implemented in PoDoFo::PdfFontMetricsStandard14.
|
pure virtual |
Get the actual /FontFamily, eg.
"Times", if available
Implemented in PoDoFo::PdfFontMetricsStandard14.
|
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()
|
pure virtual |
Get the actual /FontName, eg.
"AAAAAA+Arial,Bold", if available
By default returns empty string
Implemented in PoDoFo::PdfFontMetricsStandard14.
|
virtual |
Get the actual /FontName, eg.
"AAAAAA+Arial,Bold", if available By default returns GetFontName()
double PdfFontMetrics::GetGlyphWidth | ( | unsigned | gid | ) | const |
Get the width of a single glyph id.
gid | id of the glyph |
|
pure virtual |
Get the italic angle of this font.
Used to build the font dictionary
Implemented in PoDoFo::PdfFontMetricsStandard14.
|
pure virtual |
Retrieve the line spacing for this font.
Implemented in PoDoFo::PdfFontMetricsStandard14.
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.
|
virtual |
Get a an approximate PostScript name, from available /BaseFont, /FontName (eg.
"AAAAAA+Arial-Bold" becomes "Arial-Bold") By default returns GetFontName()
|
pure virtual |
Return the position of the strikethrough for the current font size in PDF units.
Implemented in PoDoFo::PdfFontMetricsStandard14.
|
pure virtual |
Get the width of the strikethrough for the current font size in PDF units.
Implemented in PoDoFo::PdfFontMetricsStandard14.
PdfFontStyle PdfFontMetrics::GetStyle | ( | ) | const |
Get whether the font style is bold.
This is a logical value that can be inferred from several characteristics
|
pure virtual |
Return the position of the underline for the current font size in PDF units.
Implemented in PoDoFo::PdfFontMetricsStandard14.
|
pure virtual |
Get the width of the underline for the current font size in PDF units.
Implemented in PoDoFo::PdfFontMetricsStandard14.
unsigned PdfFontMetrics::GetWeight | ( | ) | const |
Get the weight of this font.
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."
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"
|
virtual |
Some fonts provides a glyph substitution list, eg.
for ligatures. OpenType fonts for example provides GSUB "Glyph Substitution Table"
gids | gids to be substituted |
backwardMap | list of gid counts to remap back substituted gids eg. { 32, 102, 105 } gets substituted in { 32, 174 } the backward map is { 1, 2 } |
|
pure virtual |
Try to retrieve the mapped gid from Unicode code point.
Implemented in PoDoFo::PdfFontMetricsStandard14.