TCPDF :: PHP Class for PDF :: Font TCPDF 

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: Impostare un font per il suo utilizzo co TCPDF implica i seguenti passi:
  1. Convertite tutti i nomi di file dei font in minuscolo.

  2. 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
  3. 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
    Potete anche specificare dei parametri addizionali:
    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)
      Naturalmente, il font dovrà contenere la codifica specificata. Le codifiche che iniziano con cp sono quelle utilizzate da Windows, mentre quelle utilizzate da Linux solitamente iniziano con ISO.
    • $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').

  4. 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');

      • copiate il file .php nella cartella dei font di TCPDF.
  5. 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]])
Esempio:
$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.


Bookmark and Share Check out the TCExam Page on Facebook Powered by Tecnick.com AIOCP (All In One Control Panel) Support This Project Get TCPDF - PHP class for PDF at SourceForge.net. Fast, secure and Free Open Source software downloads
 
EnglishItalian Tecnick.com Website