SetaPDF_Core_Font_TrueType Class for TrueType fonts

File: /SetaPDF v2/Core/Font/TrueType.php

Class hierarchy

Implements

Summary

Constants

INFO_COPYRIGHT

public const string SetaPDF_Core_Font::INFO_COPYRIGHT = 'copyright'

Info constant

INFO_CREATION_DATE

public const string SetaPDF_Core_Font::INFO_CREATION_DATE = 'creationDate'

Info constant

INFO_UNIQUE_ID

public const string SetaPDF_Core_Font::INFO_UNIQUE_ID = 'uniqueId'

Info constant

INFO_VERSION

public const string SetaPDF_Core_Font::INFO_VERSION = 'version'

Info constant

TYPE_COLOR_SPACE

public const string SetaPDF_Core_Resource::TYPE_COLOR_SPACE = 'ColorSpace'

Type constant

TYPE_EXT_G_STATE

public const string SetaPDF_Core_Resource::TYPE_EXT_G_STATE = 'ExtGState'

Type constant

TYPE_FONT

public const string SetaPDF_Core_Resource::TYPE_FONT = 'Font'

Type constant

TYPE_PATTERN

public const string SetaPDF_Core_Resource::TYPE_PATTERN = 'Pattern'

Type constant

TYPE_PROC_SET

public const string SetaPDF_Core_Resource::TYPE_PROC_SET = 'ProcSet'

Type constant

TYPE_PROPERTIES

public const string SetaPDF_Core_Resource::TYPE_PROPERTIES = 'Properties'

Type constant

TYPE_SHADING

public const string SetaPDF_Core_Resource::TYPE_SHADING = 'Shading'

Type constant

TYPE_X_OBJECT

public const string SetaPDF_Core_Resource::TYPE_X_OBJECT = 'XObject'

Type constant


Properties

$_autoEncoding

protected boolean SetaPDF_Core_Font_TrueType::$_autoEncoding = false

Flag for handling automatic encoding

$_avgWidth

protected integer|float SetaPDF_Core_Font_Simple::$_avgWidth

The average width of glyphs in the font.

$_calculatedFontBBox

$_charCodeCache

protected array SetaPDF_Core_Font::$_charCodeCache = array()

A char code cache which is used in SetaPDF_Core_Font::getCharByCharCode().

$_dictionary

$_encodingTable

The encoding table

$_fontBBox

protected null|array SetaPDF_Core_Font_Type1::$_fontBBox

The font bounding box

$_fontBBoxVector

$_fontDescriptor

$_indirectObject

The indirect object of the font

$_info

protected array SetaPDF_Core_Font::$_info = array()

Array holding information about the font

$_streamParser

The TTF/OTF parser of the embedded font file.

$_substituteCharacter

The UTF-16BE unicode value for a substitute character

$_tmpEncodingTable

A temporary encoding table holding used character codes

This array is only used if the _autoEncoding property is used.

$_toUnicodeTable

The map that maps character codes to uncidoe values

$_ttfParser

$_underlinePosition

protected null|int|float SetaPDF_Core_Font::$_underlinePosition

The relative underline positioning.

$_underlineThickness

protected null|int|float SetaPDF_Core_Font::$_underlineThickness

The underline thickness.

$_widths

protected null|array SetaPDF_Core_Font_Type1::$_widths

Glyph widths

$_widthsByCharCode

Widths by char codes


Static Methods

_createToUnicodeStream()

protected static SetaPDF_Core_Font_TrueType::_createToUnicodeStream (
array $chars
): string

Creates the /ToUnicode stream for this TrueType font.

Parameters
$chars : array
 

create()

public static SetaPDF_Core_Font_TrueType::create (
SetaPDF_Core_Document $document, string $fontFile [, string $baseEncoding = SetaPDF_Core_Encoding::WIN_ANSI [, array|string $diffEncoding = array ( ) [, boolean $embedded = true [, bool $ignoreLicenseRestrictions = false ]]]]
): SetaPDF_Core_Font_TrueType

Creates a font object based on a TrueType font file.

Parameters
$document : SetaPDF_Core_Document

The document instance in which the font will be used

$fontFile : string

A path to the TTF font file

$baseEncoding : string

The base encoding

$diffEncoding : array|string

A translation table to adjust individual char codes to different glyphs or "auto" to build this table dynamically.

$embedded : boolean

Defines if the font program will be embedded in the document or not

$ignoreLicenseRestrictions : bool

Can be used to disable the font license check

Return Values

The SetaPDF_Core_Font_TrueType instance

Exceptions

Throws SetaPDF_Core_Font_Exception

Throws SetaPDF_Exception_NotImplemented

Throws SetaPDF_Core_Exception

freeCache()

WARNING: This method is marked as deprecated!

Call SetaPDF_Core_Document::clearCache() with the type SetaPDF_Core_Document::CACHE_FONT instead.

public static SetaPDF_Core_Font::freeCache (): void

Release font instances by a document instance.

Parameters
$document : SetaPDF_Core_Document
 

freeFontCache()

WARNING: This method is marked as deprecated!

public static SetaPDF_Core_Font::freeFontCache (): void

Release font instances by a document instance.

Parameters
$document : SetaPDF_Core_Document
 
See

get()

Get a font object by an indirect reference.

The needed font object class is automatically resolve via the Subtype value of the font dictionary.

Parameters
$indirectObjectOrDictionary : SetaPDF_Core_Type_IndirectObjectInterface|SetaPDF_Core_Type_Dictionary
 
Exceptions

Throws SetaPDF_Exception_NotImplemented

Throws SetaPDF_Core_Font_Exception

Throws SetaPDF_Core_Type_IndirectReference_Exception

Throws SetaPDF_Core_Type_Exception


Methods

_ensureUnderlinePosition()

Calculates the underline position.

Exceptions

Throws SetaPDF_Core_Exception

Throws SetaPDF_Exception_NotImplemented

_ensureUnderlineThickness()

Calculates the underline thickness.

Exceptions

Throws SetaPDF_Exception_NotImplemented

Throws SetaPDF_Core_Exception

_getCharCodesTable()

Get the map that maps character codes to unicode values.

Exceptions

Throws SetaPDF_Core_Font_Exception

_getEncodingTable()

protected SetaPDF_Core_Font_Simple::_getEncodingTable (
void
): array

Get the encoding table based on the Encoding dictionary and it's Differences entry (if available).

_getWidths()

protected SetaPDF_Core_Font_Type1::_getWidths (
void
): void

Resolves the width values from the font descriptor and fills the $_width-array.

Exceptions

Throws SetaPDF_Core_Type_Exception

Throws SetaPDF_Core_Font_Exception

_updateToUnicodeStream()

A function which will create the current ToUnicode CMap.

Exceptions

Throws SetaPDF_Core_Type_Exception

getAscent()

public SetaPDF_Core_Font_Type1::getAscent (
void
): float

Returns the distance from baseline of highest ascender (Typographic ascent).

Exceptions

Throws SetaPDF_Core_Font_Exception

getAvgWidth()

public SetaPDF_Core_Font_Type1::getAvgWidth (
[ boolean $calculateIfUndefined = false ]
): integer|float

Get the average glyph width.

Parameters
$calculateIfUndefined : boolean
 
Exceptions

Throws SetaPDF_Core_Font_Exception

getBaseEncodingTable()

Get the base encoding for a TrueType font.

See PDF 32000-1:2008 - 9.6.6.4 Encodings for TrueType Fonts: "[...]A nonsymbolic font should specify MacRomanEncoding or WinAnsiEncoding as the value of its Encoding entry, with no Differences array[...]"

Exceptions

Throws SetaPDF_Core_Font_Exception

getCharByCharCode()

public SetaPDF_Core_Font_TrueType::getCharByCharCode (
string $charCode [, string $encoding = 'UTF-8' ]
): string

Converts a char code from the font specific encoding to another encoding.

Parameters
$charCode : string

The char code in the font specific encoding.

$encoding : string

The resulting encoding

Exceptions

Throws SetaPDF_Core_Font_Exception

getCharCode()

public SetaPDF_Core_Font_TrueType::getCharCode (
string $char [, string $encoding = 'UTF-16BE' ]
): string

Get the final character code of a single character.

If the font is based on a TTF file and the $diffEncoding is set to 'auto' this method will build the differences from the encoding automatically. It will simply recreate a completely new encoding starting at 0.

Parameters
$char : string

The character

$encoding : string
 
Exceptions

Throws SetaPDF_Core_Font_Exception

Throws SetaPDF_Exception_NotImplemented

Throws SetaPDF_Core_Type_Exception

getCharCodes()

public SetaPDF_Core_Font::getCharCodes (
string $chars [, string $encoding = 'UTF-16BE' ]
): array

Get the final character codes of a character string.

Parameters
$chars : string

The character string

$encoding : string

The output encoding

getCharsByCharCodes()

public SetaPDF_Core_Font::getCharsByCharCodes (
string $charCodes [, string $encoding = 'UTF-8' [, bool $asArray = true ]]
): string|array

Converts char codes from the font specific encoding to another encoding.

Parameters
$charCodes : string

The char codes in the font specific encoding.

$encoding : string

The resulting encoding

$asArray : bool
 

getDescent()

public SetaPDF_Core_Font_Type1::getDescent (
void
): float

Returns the distance from baseline of lowest descender (Typographic descent).

Exceptions

Throws SetaPDF_Core_Font_Exception

getDictionary()

Get the font dictionary.

getFontBBox()

public SetaPDF_Core_Font_Type1::getFontBBox (
void
): array

Returns the font bounding box.

getFontBBoxVector()

public SetaPDF_Core_Font::getFontBBoxVector (
int $name, float $fontSize
): SetaPDF_Core_Geometry_Vector

Get a font bounding box vector.

Parameters
$name : int
 
$fontSize : float
 
Exceptions

Throws SetaPDF_Core_Exception

getFontDescriptor()

Get the font descriptor object.

getFontFamily()

public SetaPDF_Core_Font_Type1::getFontFamily (
void
): string

Get the font family.

Exceptions

Throws SetaPDF_Core_Font_Exception

getFontName()

public SetaPDF_Core_Font_Type1::getFontName (
void
): string

Get the font name.

getGlyphWidth()

public SetaPDF_Core_Font_TrueType::getGlyphWidth (
string $char [, string $encoding = 'UTF-16BE' ]
): float|int

Get the glyph width.

This method is a proxy method if the width-array is not initialized and the font is build from a TTF font.

Parameters
$char : string
 
$encoding : string

The input encoding

Exceptions

Throws SetaPDF_Core_Font_Exception

Throws SetaPDF_Exception_NotImplemented,SetaPDF_Core_Type_Exception

See

getGlyphWidthByCharCode()

public SetaPDF_Core_Font_TrueType::getGlyphWidthByCharCode (
string $charCode
): float|int

Get the width of a glpyh by its char code.

Parameters
$charCode : string
 
Exceptions

Throws SetaPDF_Core_Font_Exception

Throws SetaPDF_Exception_NotImplemented

getGlyphsWidth()

public SetaPDF_Core_Font::getGlyphsWidth (
string $chars [, string $encoding = 'UTF-16BE' ]
): float|int

Get the width of the glyphs/characters.

Parameters
$chars : string

The characters

$encoding : string

The input encoding

getIndirectObject()

getInfo()

public SetaPDF_Core_Font::getInfo (
string $name
): bool|string

Get information about the font.

Parameters
$name : string

The name of the font

getItalicAngle()

public SetaPDF_Core_Font_Type1::getItalicAngle (
void
): float

Returns the italic angle.

Exceptions

Throws SetaPDF_Core_Font_Exception

getMaxWidth()

public SetaPDF_Core_Font_Type1::getMaxWidth (
void
): integer|float

Get the max glyph width.

Exceptions

Throws SetaPDF_Core_Font_Exception

getMissingWidth()

public SetaPDF_Core_Font_Type1::getMissingWidth (
void
): integer|float

Get the missing glyph width.

Exceptions

Throws SetaPDF_Core_Font_Exception

getResourceType()

public SetaPDF_Core_Font::getResourceType (
void
): string

Get the resource type.

See

getStreamParser()

Get the TTF/OTF parser for the embedded font programm.

Exceptions

Throws SetaPDF_Core_Exception

getType()

public SetaPDF_Core_Font::getType (
void
): string

Get the Subtype entry of the font dictionary.

Exceptions

Throws SetaPDF_Core_Type_Exception

getUnderlinePosition()

public SetaPDF_Core_Font::getUnderlinePosition (
void
): int|float

Get the underline position.

getUnderlineThickness()

public SetaPDF_Core_Font::getUnderlineThickness (
void
): int|float

Get the underline thickness.

isBold()

public SetaPDF_Core_Font_Type1::isBold (
void
): boolean

Checks if the font is bold.

Exceptions

Throws SetaPDF_Core_Font_Exception

isItalic()

public SetaPDF_Core_Font_Type1::isItalic (
void
): boolean

Checks if the font is italic.

Exceptions

Throws SetaPDF_Core_Font_Exception

isMonospace()

public SetaPDF_Core_Font_Type1::isMonospace (
void
): boolean

Checks if the font is monospace.

Exceptions

Throws SetaPDF_Core_Font_Exception

recalculateFontBBox()

public SetaPDF_Core_Font_TrueType::recalculateFontBBox (
void
): false|array
Return Values

Format is [llx lly urx ury]. Returns false if the font isn't recalculatable

Exceptions

Throws SetaPDF_Core_Font_Exception

Throws SetaPDF_Exception_NotImplemented

Throws SetaPDF_Core_Exception

setUnderlinePosition()

public SetaPDF_Core_Font::setUnderlinePosition (
int|float $position
): void

Sets the underline position for the current font.

Parameters
$position : int|float
 

setUnderlineThickness()

public SetaPDF_Core_Font::setUnderlineThickness (
int|float $thickness
): void

Sets the underline thickness for the current font.

Parameters
$thickness : int|float
 

splitCharCodes()

public SetaPDF_Core_Font::splitCharCodes (
string $charCodes
): array

Split a string of char codes into single char codes.

Parameters
$charCodes : string
 

updateAutoEncoding()

A callback function which will update font data before it is written to the final PDF file.

This method should not be called manually. It is registered as a callback of the font object, which was created in the create()-method.

Exceptions

Throws SetaPDF_Core_Type_Exception