TCPDF Fonts
TCPDF supporta i tipi di font TrueTypeUnicode (UTF-8 Unicode), OpenTypeUnicode, TrueType, OpenType, Type1, CID-0 e Core (standard).Esistono due modi per utilizzare un font: integrato (embedded con o senza subsetting) o non integrato. Quando un font non è integrato viene cercato nel sistema. Quando non si integrano i font il file PDF risultante è più piccolo e quando non si trovano i font indicati, vengono usati dei font sostitutivi. E' quindi necessario assicurarsi che nel computer client che tenta di aprire il file PDF siano installati tutti i font richiesti. Se il file è destinato ad un'audience molto vasta e non si hanno problemi di dimensione del file, è sempre raccomandabile integrare tutti i font.
TCPDF supporta il font subsetting per ridurre la dimensione dei documenti che utilizzano font unicode di grandi dimensioni.
I font che possono non essere integrati sono solo quelli standard (core) e quelli CID-0.
I font PDF standard (core) PDF:
- 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
- Convertite tutti i nomi di file dei font in minuscolo.
- Generare il file delle metriche del font.
- Per i font Type1 questo primo passo non è necessario perché il file AFM è solitamente incorporato nel font. Nel caso abbiate solo un file di metriche in formato PFM, utilizzate il programma di conversione pfm2afm (fonts/utils/pfm2afm.exe) per ottenere il file AFM. Se avete un font Type1 in formato ASCII (.pfa), potete convertirlo nel formato binario con Type 1 utilities.
- Per i font TrueTypeUnicode o TrueType, utilizzate l'utility ttf2ufm (fonts/utils/ttf2ufm.exe):
$ ttf2ufm -a -F myfont.ttf
- Per i font OpenTypeUnicode o OpenType, utilizzate l'utility ttf2ufm (fonts/utils/ttf2ufm.exe):
$ ttf2ufm -a -F myfont.otf
- Eseguite lo script makefont.php.
- Per TrueTypeUnicode:
$ php -q makefont.php myfont.ttf myfont.ufm
- Per OpenTypeUnicode:
$ php -q makefont.php myfont.otf myfont.ufm
- Per TrueType:
$ php -q makefont.php myfont.ttf myfont.afm
- Per OpenType:
$ php -q makefont.php myfont.otf myfont.afm
- Per Type1:
$ php -q makefont.php myfont.pfb myfont.afm
MakeFont(string $fontfile, string $fmfile [, boolean $embedded [, $enc="cp1252" [, $patch=array()]]])
- $fontfile : Percorso al file .ttf o .pfb.
- $fmfile : Percorso al file di metriche .afm (per Type1 e TrueType) o .ufm (per TrueTypeUnicode).
- $embedded : Se impostato a false il font non viene incorporato (default = true).
- $enc : Nome della codifica da usare. Valore predefinito: cp1252. Omettete questo parametro per i font TrueType Unicode, OpenType Unicode ed i font di simboli come Symbol o ZapfDingBats. La codifica definisce l'associazione tra il codice (da 0 a 255) ed il carattere. I primi 128 sono fissi e corrispondono alla tabella ASCII. La codifica è memorizzata in file .map. Le codifiche disponibili sono:
- 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)
- $patch : Modifiche opzionali alla tabella di codifica. Questo parametro offre la possibilità di alterare la codifica inserendo dei caratteri. Per esempio nella codifica ISO-8859-1 manca il simbolo dell'euro che può essere aggiunto alla posizione 164 passando: array(164=>'Euro').
- Per TrueTypeUnicode:
- Modificate e copiate i file risultanti a seconda dei casi:
- Per i font integrati: copiate i file risultanti .php, .z e .ctg.z (se disponibili) nella cartella dei font di TCPDF.
- Per evitare l'inclusionde del file .z dovete editare il file .php e commentare la riga che inizia con $file.
- Per i font CID-0 (non integrati) occorre modificare il file .php:
- modificate il tipo di font:
$type='cidfont0'; - impostate la larghezza predefinita del font aggiungendo la linea:
$dw=1000; - rimuovete le definizioni delle variabili $enc, $file e $ctg
- aggiungete uno dei seguenti blocchi di codice alla fine del file (a seconda del linguaggio che state utilizzando - vedete il file arialunicid0.php per esempio):
-
// Cinese Tradizionale
$enc='UniCNS-UTF16-H';
$cidinfo=array('Registry'=>'Adobe', 'Ordering'=>'CNS1','Supplement'=>0);
include(dirname(__FILE__).'/uni2cid_ac16.php');
-
// Cinese Semplificato
$enc='UniGB-UTF16-H';
$cidinfo=array('Registry'=>'Adobe', 'Ordering'=>'GB1','Supplement'=>2);
include(dirname(__FILE__).'/uni2cid_ag15.php');
-
// Koreano
$enc='UniKS-UTF16-H';
$cidinfo=array('Registry'=>'Adobe', 'Ordering'=>'Korea1','Supplement'=>0);
include(dirname(__FILE__).'/uni2cid_ak12.php');
-
// Giapponese
$enc='UniJIS-UTF16-H';
$cidinfo=array('Registry'=>'Adobe', 'Ordering'=>'Japan1','Supplement'=>5);
include(dirname(__FILE__).'/uni2cid_aj16.php');
-
// Cinese Tradizionale
- copiate il file .php nella cartella dei font di TCPDF.
- modificate il tipo di font:
- Rinominate i file php con i nomi dei font che contengono le variazioni secondo lo schema seguente:
- [nome-del-file-in-minuscolo].php per il carattere regolare
- [nome-del-file-in-minuscolo]b.php per il carattere in grasseto (bold)
- [nome-del-file-in-minuscolo]i.php per il carattere in italico (oblique)
- [nome-del-file-in-minuscolo]bi.php per il carattere in grasseto italico (bold oblique)
Impostare il font
Nel file di configurazione (config/tcpdf_config.php) impostate la costante K_PATH_FONTS al percorso dove si trovano i font di TCPDF.Nel quarto parametro del costruttore della classe TCPDF specificate se state utilizzando font Unicode (true) o vecchi font (false).
Per impostare il font nel vostro script è sufficiente utilizzare il metodo SetFont(). E' obbligatorio chiamare questo metodo almeno una volta prima di stampare del testo, altrimenti il documento PDF risultante non sarà valido. Questo metodo può essere chiamato prima che la prima pagina venga creata. Il font verrà mantenuto per tutte le pagine:
SetFont(string family[,string style[,string size]])
- family Famiglia del font. Può essere il nome del font o il nome standard della famiglia:
- Courier (fixed-width)
- Helvetica or Arial (synonymous; sans serif)
- Times (serif)
- Symbol (symbolic)
- ZapfDingbats (symbolic)
- style Stile del font. I possibili valori sono:
- stringa vuota: regolare
- B: grasseto
- I: italico
- U: sottolineato
- size Dimensione del font in punti. Il valore predefinito è 12 punti o la dimensione precedentemente specificata.
$pdf->SetFont("vera", "BI", 20);Ridurre le Dimensioni dei Font TrueType
I file dei font sono spesso voluminosi perché contengono numerosi caratteri corrispondenti alle diverse codifiche. La libreria zlib riduce le dimensioni di questi file ma le dimensioni rimangono comunque significative.
Una tecnica per ridurre le dimensioni di questi file consiste nel trasformarli in font di tipo Type1 selezionando solo la codifica che ci interessa. Ad esempio, il file arial.ttf presente in Windows 98 è di 267KB (contiene 1296 charatteri) e compresso di 147KB, ma se convertiamo questo file a Type1 mantenendo solo la codifica cp1250:
ttf2ufm -b -L cp1250.map c:/windows/fonts/arial.ttf arial
possiamo arrivare a 30KB dopo la compressione.
E' possibile ridurre ulteriormente la dimensione dei file di font rimuovendo manualmente dai file .map tutti i caratteri che non ci interessano.


