Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.0.x will end 8 May 2023 (12 months).
  • Bug fixes for security issues in 4.0.x will end 13 November 2023 (18 months).
  • PHP version: minimum PHP 7.3.0 Note: the minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is also supported.

Differences Between: [Versions 310 and 400] [Versions 39 and 400] [Versions 400 and 401] [Versions 400 and 402] [Versions 400 and 403]

(no description)

Author: Nicola Asuni
File Size: 2656 lines (96 kb)
Included or required:0 times
Referenced: 0 times
Includes or requires: 0 files

Defines 1 class


Class: TCPDF_FONTS  - X-Ref


addTTFfont($fontfile, $fonttype='', $enc='', $flags=32, $outpath='', $platid=3, $encid=1, $addcbbox=false, $link=false)   X-Ref
Convert and add the selected TrueType or Type1 font to the fonts folder (that must be writeable).

author: Nicola Asuni
return: (string) TCPDF font name or boolean false in case of error.
param: $fontfile (string) Font file (full path).
param: $fonttype (string) Font type. Leave empty for autodetect mode. Valid values are: TrueTypeUnicode, TrueType, Type1, CID0JP = CID-0 Japanese, CID0KR = CID-0 Korean, CID0CS = CID-0 Chinese Simplified, CID0CT = CID-0 Chinese Traditional.
param: $enc (string) Name of the encoding table to use. Leave empty for default mode. Omit this parameter for TrueType Unicode and symbolic fonts like Symbol or ZapfDingBats.
param: $flags (int) Unsigned 32-bit integer containing flags specifying various characteristics of the font (PDF32000:2008 - 9.8.2 Font Descriptor Flags): +1 for fixed font; +4 for symbol or +32 for non-symbol; +64 for italic. Fixed and Italic mode are generally autodetected so you have to set it to 32 = non-symbolic font (default) or 4 = symbolic font.
param: $outpath (string) Output path for generated font files (must be writeable by the web server). Leave empty for default font folder.
param: $platid (int) Platform ID for CMAP table to extract (when building a Unicode font for Windows this value should be 3, for Macintosh should be 1).
param: $encid (int) Encoding ID for CMAP table to extract (when building a Unicode font for Windows this value should be 1, for Macintosh should be 0). When Platform ID is 3, legal values for Encoding ID are: 0=Symbol, 1=Unicode, 2=ShiftJIS, 3=PRC, 4=Big5, 5=Wansung, 6=Johab, 7=Reserved, 8=Reserved, 9=Reserved, 10=UCS-4.
param: $addcbbox (boolean) If true includes the character bounding box information on the php font file.
param: $link (boolean) If true link to system font instead of copying the font data (not transportable) - Note: do not work with Type1 fonts.

_getTTFtableChecksum($table, $length)   X-Ref
Returs the checksum of a TTF table.

author: Nicola Asuni
return: int checksum
param: $table (string) table to check
param: $length (int) length of table in bytes

_getTrueTypeFontSubset($font, $subsetchars)   X-Ref
Returns a subset of the TrueType font data without the unused glyphs.

author: Nicola Asuni
return: (string) A subset of TrueType font data without the unused glyphs.
param: $font (string) TrueType font data.
param: $subsetchars (array) Array of used characters (the glyphs to keep).

_putfontwidths($font, $cidoffset=0)   X-Ref
Outputs font widths

author: Nicola Asuni
return: PDF command string for font widths
param: $font (array) font data
param: $cidoffset (int) offset for CID values

updateCIDtoGIDmap($map, $cid, $gid)   X-Ref
Update the CIDToGIDMap string with a new value.

author: Nicola Asuni
return: (string) CIDToGIDMap.
param: $map (string) CIDToGIDMap.
param: $cid (int) CID value.
param: $gid (int) GID value.

_getfontpath()   X-Ref
Return fonts path

return: string

getFontFullPath($file, $fontdir=false)   X-Ref
Return font full path

author: Nicola Asuni
return: string Font full path or empty string
param: $file (string) Font file name.
param: $fontdir (string) Font directory (set to false fto search on default directories)

getFontRefSize($size, $refsize=12)   X-Ref
Get a reference font size.

return: float value in points
param: $size (string) String containing font size value.
param: $refsize (float) Reference font size in points.

unichr($c, $unicode=true)   X-Ref
Returns the unicode caracter specified by the value

return: Returns the specified character.
param: $c (int) UTF-8 value
param: $unicode (boolean) True if we are in unicode mode, false otherwise.

unichrUnicode($c)   X-Ref
Returns the unicode caracter specified by UTF-8 value

return: Returns the specified character.
param: $c (int) UTF-8 value

unichrASCII($c)   X-Ref
Returns the unicode caracter specified by ASCII value

return: Returns the specified character.
param: $c (int) UTF-8 value

arrUTF8ToUTF16BE($unicode, $setbom=false)   X-Ref
Converts array of UTF-8 characters to UTF16-BE string.<br>
Based on: http://www.faqs.org/rfcs/rfc2781.html
<pre>
Encoding UTF-16:

Encoding of a single character from an ISO 10646 character value to
UTF-16 proceeds as follows. Let U be the character number, no greater
than 0x10FFFF.

1) If U < 0x10000, encode U as a 16-bit unsigned integer and
terminate.

2) Let U' = U - 0x10000. Because U is less than or equal to 0x10FFFF,
U' must be less than or equal to 0xFFFFF. That is, U' can be
represented in 20 bits.

3) Initialize two 16-bit unsigned integers, W1 and W2, to 0xD800 and
0xDC00, respectively. These integers each have 10 bits free to
encode the character value, for a total of 20 bits.

4) Assign the 10 high-order bits of the 20-bit U' to the 10 low-order
bits of W1 and the 10 low-order bits of U' to the 10 low-order
bits of W2. Terminate.

Graphically, steps 2 through 4 look like:
U' = yyyyyyyyyyxxxxxxxxxx
W1 = 110110yyyyyyyyyy
W2 = 110111xxxxxxxxxx
</pre>
author: Nicola Asuni
return: string
param: $unicode (array) array containing UTF-8 unicode values
param: $setbom (boolean) if true set the Byte Order Mark (BOM = 0xFEFF)

UTF8ArrayToUniArray($ta, $isunicode=true)   X-Ref
Convert an array of UTF8 values to array of unicode characters

return: Return array of unicode characters
param: $ta (array) The input array of UTF8 values.
param: $isunicode (boolean) True for Unicode mode, false otherwise.

UTF8ArrSubString($strarr, $start='', $end='', $unicode=true)   X-Ref
Extract a slice of the $strarr array and return it as string.

return: Return part of a string
param: $strarr (string) The input array of characters.
param: $start (int) the starting element of $strarr.
param: $end (int) first element that will not be returned.
param: $unicode (boolean) True if we are in unicode mode, false otherwise.

UniArrSubString($uniarr, $start='', $end='')   X-Ref
Extract a slice of the $uniarr array and return it as string.

return: Return part of a string
param: $uniarr (string) The input array of characters.
param: $start (int) the starting element of $strarr.
param: $end (int) first element that will not be returned.

UTF8ArrToLatin1Arr($unicode)   X-Ref
Converts UTF-8 characters array to array of Latin1 characters array<br>

author: Nicola Asuni
return: array
param: $unicode (array) array containing UTF-8 unicode values

UTF8ArrToLatin1($unicode)   X-Ref
Converts UTF-8 characters array to array of Latin1 string<br>

author: Nicola Asuni
return: array
param: $unicode (array) array containing UTF-8 unicode values

uniord($uch)   X-Ref
Converts UTF-8 character to integer value.<br>
Uses the getUniord() method if the value is not cached.

return: int Unicode value
param: $uch (string) character string to process.

getUniord($uch)   X-Ref
Converts UTF-8 character to integer value.<br>
Invalid byte sequences will be replaced with 0xFFFD (replacement character)<br>
Based on: http://www.faqs.org/rfcs/rfc3629.html
<pre>
Char. number range  |        UTF-8 octet sequence
(hexadecimal)    |              (binary)
--------------------+-----------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
---------------------------------------------------------------------

ABFN notation:
---------------------------------------------------------------------
UTF8-octets = *( UTF8-char )
UTF8-char   = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4
UTF8-1      = %x00-7F
UTF8-2      = %xC2-DF UTF8-tail

UTF8-3      = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
%xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
UTF8-4      = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
%xF4 %x80-8F 2( UTF8-tail )
UTF8-tail   = %x80-BF
---------------------------------------------------------------------
</pre>
author: Nicola Asuni
return: int Unicode value
param: $uch (string) character string to process.

UTF8StringToArray($str, $isunicode, &$currentfont)   X-Ref
Converts UTF-8 strings to codepoints array.<br>
Invalid byte sequences will be replaced with 0xFFFD (replacement character)<br>

author: Nicola Asuni
return: array containing codepoints (UTF-8 characters values)
param: $str (string) string to process.
param: $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise.
param: $currentfont (array) Reference to current font array.

UTF8ToLatin1($str, $isunicode, &$currentfont)   X-Ref
Converts UTF-8 strings to Latin1 when using the standard 14 core fonts.<br>

return: string
param: $str (string) string to process.
param: $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise.
param: $currentfont (array) Reference to current font array.

UTF8ToUTF16BE($str, $setbom, $isunicode, &$currentfont)   X-Ref
Converts UTF-8 strings to UTF16-BE.<br>

author: Nicola Asuni
return: string
param: $str (string) string to process.
param: $setbom (boolean) if true set the Byte Order Mark (BOM = 0xFEFF)
param: $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise.
param: $currentfont (array) Reference to current font array.

utf8StrRev($str, $setbom, $forcertl, $isunicode, &$currentfont)   X-Ref
Reverse the RLT substrings using the Bidirectional Algorithm (http://unicode.org/reports/tr9/).

author: Nicola Asuni
return: string
param: $str (string) string to manipulate.
param: $setbom (bool) if true set the Byte Order Mark (BOM = 0xFEFF)
param: $forcertl (bool) if true forces RTL text direction
param: $isunicode (boolean) True if the document is in Unicode mode, false otherwise.
param: $currentfont (array) Reference to current font array.

utf8StrArrRev($arr, $str, $setbom, $forcertl, $isunicode, &$currentfont)   X-Ref
Reverse the RLT substrings array using the Bidirectional Algorithm (http://unicode.org/reports/tr9/).

author: Nicola Asuni
return: string
param: $arr (array) array of unicode values.
param: $str (string) string to manipulate (or empty value).
param: $setbom (bool) if true set the Byte Order Mark (BOM = 0xFEFF)
param: $forcertl (bool) if true forces RTL text direction
param: $isunicode (boolean) True if the document is in Unicode mode, false otherwise.
param: $currentfont (array) Reference to current font array.

utf8Bidi($ta, $str, $forcertl, $isunicode, &$currentfont)   X-Ref
Reverse the RLT substrings using the Bidirectional Algorithm (http://unicode.org/reports/tr9/).

author: Nicola Asuni
return: array of unicode chars
param: $ta (array) array of characters composing the string.
param: $str (string) string to process
param: $forcertl (bool) if 'R' forces RTL, if 'L' forces LTR
param: $isunicode (boolean) True if the document is in Unicode mode, false otherwise.
param: $currentfont (array) Reference to current font array.