From 0eb99d537d4179c7c4211600b58adb59d97f0d61 Mon Sep 17 00:00:00 2001
From: Sashi20
Date: Wed, 7 Aug 2019 12:36:30 +0530
Subject: Enable link to download certificate
---
pdf/fpdf/tutorial/tuto7.htm | 241 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 241 insertions(+)
create mode 100755 pdf/fpdf/tutorial/tuto7.htm
(limited to 'pdf/fpdf/tutorial/tuto7.htm')
diff --git a/pdf/fpdf/tutorial/tuto7.htm b/pdf/fpdf/tutorial/tuto7.htm
new file mode 100755
index 0000000..21a3f6e
--- /dev/null
+++ b/pdf/fpdf/tutorial/tuto7.htm
@@ -0,0 +1,241 @@
+
+
+
+
+Adding new fonts and encoding support
+
+
+
+
+
Adding new fonts and encoding support
+This tutorial explains how to use TrueType, OpenType and Type1 fonts so that you are not limited to
+the standard fonts any more. The other benefit is that you can choose the font encoding, which allows
+you to use other languages than the Western ones (the standard fonts having too few available characters).
+
+
+Remark: for OpenType, only the format based on TrueType is supported (not the one based on Type1).
+
+
+There are two ways to use a new font: embedding it in the PDF 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's not available, a substitution font is used. So it's 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's highly recommended to embed.
+
+
+Adding a new font requires two steps:
+
+
Generation of the font definition file
+
Declaration of the font in the script
+
+For Type1, you need the corresponding AFM file. It's usually provided with the font.
+
+
Generation of the font definition file
+The first step consists in generating a PHP file containing all the information needed by FPDF;
+in addition, the font file is compressed. To do this, a helper script is provided in the makefont
+directory of the package: makefont.php. It contains the following function:
+
+
+MakeFont(string fontfile, [, string enc [, boolean embed]])
+
+
fontfile
+
+
Path to the .ttf, .otf or .pfb file.
+
+
enc
+
+
Name of the encoding to use. Default value: cp1252.
+
+
embed
+
+
Whether to embed the font or not. Default value: true.
+
+
+The first parameter is the name of the font file. The extension must be either .ttf, .otf or .pfb and
+determines the font type. If your Type1 font is in ASCII format (.pfa), you can convert it to binary
+(.pfb) with the help of t1utils.
+
+
+For Type1 fonts, the corresponding .afm file must be present in the same directory.
+
+
+The encoding defines the association between a code (from 0 to 255) and a character. The first 128 are
+always the same and correspond to ASCII; the following are variable. Encodings are stored in .map
+files. The available ones are:
+
+
cp1250 (Central Europe)
+
cp1251 (Cyrillic)
+
cp1252 (Western Europe)
+
cp1253 (Greek)
+
cp1254 (Turkish)
+
cp1255 (Hebrew)
+
cp1257 (Baltic)
+
cp1258 (Vietnamese)
+
cp874 (Thai)
+
ISO-8859-1 (Western Europe)
+
ISO-8859-2 (Central Europe)
+
ISO-8859-4 (Baltic)
+
ISO-8859-5 (Cyrillic)
+
ISO-8859-7 (Greek)
+
ISO-8859-9 (Turkish)
+
ISO-8859-11 (Thai)
+
ISO-8859-15 (Western Europe)
+
ISO-8859-16 (Central Europe)
+
KOI8-R (Russian)
+
KOI8-U (Ukrainian)
+
+Of course, the font must contain the characters corresponding to the chosen encoding.
+
+
+Remark: the standard fonts use cp1252.
+
+
+After you have called the function (create a new file for this and include makefont.php), a .php file
+is created, with the same name as the font file. You may rename it if you wish. If the case of embedding,
+the font file is compressed and gives a second file with .z as extension (except if the compression
+function is not available, it requires Zlib). You may rename it too, but in this case you have to change
+the variable $file in the .php file accordingly.
+
+
+Example:
+
+which gives the files comic.php and comic.z.
+
+
+Then copy the generated files to the font directory. If the font file could not be compressed, copy
+it directly instead of the .z version.
+
+
+Another way to call MakeFont() is through the command line:
+
+
+php makefont\makefont.php c:\Windows\Fonts\comic.ttf cp1252
+
+
+Finally, for TrueType and OpenType fonts, you can also generate the files
+online instead of doing it manually.
+
+
Declaration of the font in the script
+The second step is simple. You just need to call the AddFont() method:
+
+
$pdf->AddFont('Comic','','comic.php');
+
+
+And the font is now available (in regular and underlined styles), usable like the others. If we
+had worked with Comic Sans MS Bold (comicbd.ttf), we would have written:
+
+
$pdf->AddFont('Comic','B','comicbd.php');
+
+
+
+
Example
+Let's now see a complete example. We will use the font Calligrapher.
+The first step is the generation of the font files:
+
+The script gives the following report:
+
+
+Warning: character Euro is missing
+Warning: character zcaron is missing
+Font file compressed: calligra.z
+Font definition file generated: calligra.php
+
+The euro character is not present in the font (it's too old). Another character is missing too.
+
+
+Alternatively we could have used the command line:
+
+
+php makefont\makefont.php calligra.ttf cp1252
+
+
+or used the online generator.
+
+
+We can now copy the two generated files to the font directory and write the script:
+
+
<?php
+require('fpdf.php');
+
+$pdf = new FPDF();
+$pdf->AddFont('Calligrapher','','calligra.php');
+$pdf->AddPage();
+$pdf->SetFont('Calligrapher','',35);
+$pdf->Write(10,'Enjoy new fonts with FPDF!');
+$pdf->Output();
+?>
+The euro character is not present in all encodings, and is not always placed at the same position:
+
+
Encoding
Position
+
cp1250
128
+
cp1251
136
+
cp1252
128
+
cp1253
128
+
cp1254
128
+
cp1255
128
+
cp1257
128
+
cp1258
128
+
cp874
128
+
ISO-8859-1
N/A
+
ISO-8859-2
N/A
+
ISO-8859-4
N/A
+
ISO-8859-5
N/A
+
ISO-8859-7
N/A
+
ISO-8859-9
N/A
+
ISO-8859-11
N/A
+
ISO-8859-15
164
+
ISO-8859-16
164
+
KOI8-R
N/A
+
KOI8-U
N/A
+
+ISO-8859-1 is widespread but does not include the euro sign. If you need it, the simplest thing
+to do is to use cp1252 or ISO-8859-15 instead, which are nearly identical but contain the precious
+symbol.
+
+
Reducing the size of TrueType fonts
+Font files are often quite voluminous; this is due to the fact that they contain the characters
+corresponding to many encodings. Zlib compression reduces them but they remain fairly big. A
+technique exists to reduce them further. It consists in converting the font to the Type1 format
+with ttf2pt1 (the Windows binary is
+available here) while specifying the encoding
+you are interested in; all other characters will be discarded.
+
+For example, the arial.ttf font that ships with Windows Vista weights 748 KB (it contains 3381 characters).
+After compression it drops to 411. Let's convert it to Type1 by keeping only cp1250 characters:
+
+
+ttf2pt1 -b -L cp1250.map c:\Windows\Fonts\arial.ttf arial
+
+
+The .map files are located in the makefont directory of the package. The command produces
+arial.pfb and arial.afm. The arial.pfb file weights only 57 KB, and 53 after compression.
+
+
+It's possible to go even further. If you are interested only by a subset of the encoding (you
+probably don't need all 217 characters), you can open the .map file and remove the lines you are
+not interested in. This will reduce the file size accordingly.
+
+
--
cgit