NOTE: The following information is valid only fot the old TCPDF library. The new tc-lib-pdf library uses the new tc-lib-pdf-font library that is able to convert fonts on the fly.
TCPDF supports TrueTypeUnicode (UTF-8 Unicode), OpenTypeUnicode,
TrueType, OpenType, Type1, CID-0 and Core (standard) fonts.
There are two ways to use a new font: embedding it in the PDF (with
or without subsetting) or not. When a font is not embedded, it is
searched in the system. The advantage is that the PDF file is
lighter; on the other hand, if it is not available, a substitution
font is used. So it is preferable to ensure that the needed font is
installed on the client systems. If the file is to be viewed by a
large audience, it is recommended to embed.
TCPDF support font subsetting to reduce the size of documents using
large unicode font files. If you embed the whole font in the PDF,
the person on the other end can make changes to it even if he
didn't have your font. If you subset the font, file size of the PDF
will be smaller but the person who receives your PDF would need to
have your same font in order to make changes to your PDF. The
option for enabling/disabling the font subsetting are explained on
the source code documentation for methods SetFont() and
AddFont().
The fonts that could be not embedded are only the standard core fonts and CID-0 fonts.
The PDF Core (standard) fonts are:- courier : Courier
- courierB : Courier Bold
- courierBI : Courier Bold Italic
- courierI : Courier Italic
- helvetica : Helvetica
- helveticaB : Helvetica Bold
- helveticaBI : Helvetica Bold Italic
- helveticaI : Helvetica Italic
- symbol : Symbol
- times : Times New Roman
- timesB : Times New Roman Bold
- timesBI : Times New Roman Bold Italic
- timesI : Times New Roman Italic
- zapfdingbats : Zapf Dingbats
Convert a font for TCPDF
Using the addTTFfont() method you can directly create a TCPDF
font starting from a TrueType, OpenType or Type1 font.
NOTE: The 'fonts' folder must be writeable by the webserver.
For example:
$fontname = $pdf->addTTFfont('/path-to-font/DejaVuSans.ttf', 'TrueTypeUnicode', '', 32);
Check the source code documentation of addTTFfont() for further information.
Set the Font
On the configuration file (config/tcpdf_config.php) set the K_PATH_FONTS constant to the TCPDF fonts path.On the fourth parameter of the TCPDF class constructor you have to specify if you are using Unicode fonts (true) or old fonts (false).
To set the font in your script you just need to call the SetFont() method. It is mandatory to call this method at least once before printing text or the resulting document would not be valid. The method can be called before the first page is created and the font is retained from page to page:
SetFont(string family[,string style[,string size]])
- family : Family font. It can be either a font
name or one of the standard families (case insensitive):
- Courier (fixed-width)
- Helvetica or Arial (synonymous; sans serif)
- Times (serif)
- Symbol (symbolic)
- ZapfDingbats (symbolic)
- style : Font style. Possible values are (case
insensitive):
- empty string: regular
- B: bold
- I: italic
- U: underline
- size : Font size in points. The default value is the current size. If no size has been specified since the beginning of the document, the value taken is 12.
- fontfile : The font definition file. By default, the name is built from the family and style, in lower case with no spaces.
- subset : If true embedd only a subset of the font (stores only the information related to the used characters); if false embedd full font; if 'default' uses the default value set using setFontSubsetting(). This option is valid only for TrueTypeUnicode fonts. If you want to enable users to change the document, set this parameter to false. If you subset the font, the person who receives your PDF would need to have your same font in order to make changes to your PDF. The file size of the PDF would also be smaller because you are embedding only part of a font.
$pdf->SetFont('times', 'BI', 20, '', 'false');