File: tuto7.htm

package info (click to toggle)
php-fpdf 3%3A1.8.4.dfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 772 kB
  • sloc: php: 3,254; makefile: 45; sh: 5
file content (192 lines) | stat: -rw-r--r-- 8,611 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Aggiunta di nuovi font e supporto codifica</title>
<link type="text/css" rel="stylesheet" href="../fpdf.css">
</head>
<body>
<h1>Aggiunta di nuovi font e supporto codifica</h1>
Questo tutorial spiega come usare i font TrueType, OpenType e Type1 in modo da non essere pi limitati ai
font standard predefiniti. L'altro beneficio  che si pu scegliere una codifica del testo, permettendo
di utilizzare altre lingue oltre a quelle occidentali (i font standard supportano solo cp1252, anche noto come windows-1252).
<br>
<br>
Per OpenType,  supportato solo il formato basato su TrueType (non quello basato su Type1).<br>
Per Type1, c' bisogno del corrispondente file AFM (di solito  fornito insieme al font).
<br>
<br>
Aggiungere un nuovo font richiede due passi:
<ul>
<li>Generazione di un file di definizione</li>
<li>Dichiarazione di un font nello script</li>
</ul>

<h2>Generatore di un file di definizione</h2>
Il primo passo consiste nel generare un file PHP contenente tutte le informazioni che necessita FPDF;
in aggiunta, il file del font  compresso. Per farlo, uno script di aiuto  fornito nella cartella makefont
del pacchetto: makefont.php. Contiene le seguenti funzioni:
<br>
<br>
<code>MakeFont(<b>string</b> fontfile [, <b>string</b> enc [, <b>boolean</b> embed [, <b>boolean</b> subset]]])</code>
<dl class="param" style="margin-bottom:2em">
<dt><code>fontfile</code></dt>
<dd>
<p>Percorso del file .ttf, .otf or .pfb.</p>
</dd>
<dt><code>enc</code></dt>
<dd>
<p>Nome della codifica in uso. Predefinito: <code>cp1252</code>.</p>
</dd>
<dt><code>embed</code></dt>
<dd>
<p>Se incorporare il font o meno. Predefinito: <code>true</code>.</p>
</dd>
<dt><code>subset</code></dt>
<dd>
<p>Se inserire il sottoinsieme del font o meno. Predefinito: <code>true</code>.</p>
</dd>

</dl>
Il primo parametro  il nome del file del font. L'estensione pu essere sia .ttf, .otf o .pfb e
determina il tipo di font. Se si utilizza il font Type1 con il formato  ASCII (.pfa), puoi convertirlo in binario
(.pfb) con l'aiuto di <a href="http://www.lcdf.org/~eddietwo/type/#t1utils" target="_blank">t1utils</a>.
<br>
<br>
Per i font Type1, il file .afm corrispondente deve essere presente nella stessa cartella.
<br>
<br>
La codifica definisce l'associazione fra un codice (da 0 a 255) ed il carattere. I primi 128 sono
sempre gli stessi corrispondenti all'ASCII; i successivi sono disponibili. Le codifiche sono salvate in file .map.
Quelle disponibili sono:
<ul>
<li>cp1250 (Central Europe)</li>
<li>cp1251 (Cyrillic)</li>
<li>cp1252 (Western Europe)</li>
<li>cp1253 (Greek)</li>
<li>cp1254 (Turkish)</li>
<li>cp1255 (Hebrew)</li>
<li>cp1257 (Baltic)</li>

<li>cp1258 (Vietnamese)</li>
<li>cp874 (Thai)</li>
<li>ISO-8859-1 (Western Europe)</li>
<li>ISO-8859-2 (Central Europe)</li>

<li>ISO-8859-4 (Baltic)</li>
<li>ISO-8859-5 (Cyrillic)</li>
<li>ISO-8859-7 (Greek)</li>
<li>ISO-8859-9 (Turkish)</li>
<li>ISO-8859-11 (Thai)</li>
<li>ISO-8859-15 (Western Europe)</li>
<li>ISO-8859-16 (Central Europe)</li>
<li>KOI8-R (Russian)</li>

<li>KOI8-U (Ukrainian)</li>
</ul>
Ovviamente il font deve contenere i caratteri corrispondenti alla codifica selezionata.
<br>

<br>
Il terzo parametro indica se il font debba essere incorporato nel PDF o meno. Quando un font non 
incorporato, sar cercato nel sistema. Il vantaggio  che il file PDF  pi leggero; se per
il font non fosse disponibile, sar utilizzato un font sostitutivo. Occorre verificare che
il font richiesto sia installato sui sistemi dei destinatari. L'incorporazione  l'opzione raccomandata per garantire
la portabilit.
<br>
<br>

L'ultimo parametro indica se utilizzare un sottoinsieme o meno, il ch significa che solo
i caratteri della codifica seelezionata saranno mantenuti nel font incorporato. Come risultato,
la dimensione del PDF pu essere ridotta di molto, specialmente se il font originale era pesante.
<br>
<br>
Dopo aver chiamato la funzione (per fare questo crea un nuovo file e includi makefont.php), sar creato un file .php,
con lo stesso nome del file del font. Puoi rinominarlo se lo desideri. Per incorporarlo,
il file del font  compresso e si ottiene un secondo file con estensione .z (tranne se la funzione per la compressione
non sia disponibile, dato che richiede Zlib). Puoi rinominare anche quest'ultimo, ma in questo caso occorre cambiare
la variabile <code>$file</code> del file .php di conseguenza.
<br>
<br>
Esempio:
<div class="source">
<pre><code>&lt;?php
<span class="kw">require(</span><span class="str">'makefont/makefont.php'</span><span class="kw">);

</span>MakeFont<span class="kw">(</span><span class="str">'C:\\Windows\\Fonts\\comic.ttf'</span><span class="kw">,</span><span class="str">'cp1252'</span><span class="kw">);
</span>?&gt;</code></pre>
</div>

che genera i file comic.php e comic.z.
<br>
<br>
Copiare i file generati nella cartella font. Se il font non pu essere compresso, copialo
direttamente al posto della versione .z.
<br>
<br>
In altro modo  utilizzare MakeFont() da linea di comando:

<br>
<br>
<kbd>php makefont\makefont.php C:\Windows\Fonts\comic.ttf cp1252</kbd>
<br>

<br>
Concludendo, per i font TrueType e OpenType fonts, puoi anche generare i file
<a href="http://www.fpdf.org/makefont/">online</a> invece che farlo manualmente.


<h2>Dichiarazione dei font nello script</h2>
Il secondo file  semplice. C' solo bisogno di chiamare il metodo <a href='../doc/addfont.htm'>AddFont()</a>:
<div class="source">
<pre><code>$pdf<span class="kw">-&gt;</span>AddFont<span class="kw">(</span><span class="str">'Comic'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'comic.php'</span><span class="kw">);
</span></code></pre>
</div>
Il font sar ora disponibile (in forma di stili regolare e sottolineato), utilizzabile come gli altri. Se abbiamo
lavorato con Comic Sans MS Bold (comicbd.ttf), dovremmo avere scritto:
<div class="source">
<pre><code>$pdf<span class="kw">-&gt;</span>AddFont<span class="kw">(</span><span class="str">'Comic'</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">,</span><span class="str">'comicbd.php'</span><span class="kw">);
</span></code></pre>
</div>

<h2>Esempio</h2>
Ora proviamo un esempio completo. Sar usato il font <a href="https://fonts.google.com/specimen/Ceviche+One" target="_blank">Ceviche One</a>.
Il primo passo  la generazione dei file del font:
<div class="source">
<pre><code>&lt;?php
<span class="kw">require(</span><span class="str">'makefont/makefont.php'</span><span class="kw">);

</span>MakeFont<span class="kw">(</span><span class="str">'CevicheOne-Regular.ttf'</span><span class="kw">,</span><span class="str">'cp1252'</span><span class="kw">);
</span>?&gt;</code></pre>
</div>
Lo script scaturir alcuni avvisi:
<br>
<br>
Font file compressed: CevicheOne-Regular.z<br>
Font definition file generated: CevicheOne-Regular.php<br>
<br>
Alternativamente possiamo usare la linea di comando:
<br>
<br>
<kbd>php makefont\makefont.php CevicheOne-Regular.ttf cp1252</kbd>
<br>
<br>
o utilizzando il generatore online.
<br>
<br>
Ora  possibile copiare i due file generati nella cartella font e scrivere lo script:
<div class="source">
<pre><code>&lt;?php
<span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">);

</span>$pdf <span class="kw">= new </span>FPDF<span class="kw">();
</span>$pdf<span class="kw">-&gt;</span>AddFont<span class="kw">(</span><span class="str">'CevicheOne'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'CevicheOne-Regular.php'</span><span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>AddPage<span class="kw">();
</span>$pdf<span class="kw">-&gt;</span>SetFont<span class="kw">(</span><span class="str">'CevicheOne'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>45<span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>Write<span class="kw">(</span>10<span class="kw">,</span><span class="str">'Enjoy new fonts with FPDF!'</span><span class="kw">);
</span>$pdf<span class="kw">-&gt;</span>Output<span class="kw">();
</span>?&gt;</code></pre>
</div>
<p class='demo'><a href='tuto7.php' target='_blank' class='demo'>[Demo]</a></p>
</body>
</html>