PROBLEMATICA
|
configurazione di pdflatex per l'utilizzo di un font TrueType.
|
FASI
|
1) recupero file truetype;
2) modifica file configurazione di pdftex;
3) creazione files .afm e .tfm;
4) creazione file myfonts.map;
5) crezione file .fd;
6) creazione file esempio.
7) importante nota sui files ttf.
|
FASE 1: RECUPERO FILE TRUETYPE
|
Come file True Type e' possibile utilizzare uno dei files di Windows (ad esempio in c:\windows\fonts).
Per questo esempio utilizzeremo il file QUIGLEYW.TTF (versione Windows con licenza freeware) scaricato da
www.1001fonts.com
Il file va copiato nella directory che conterra' anche il file prova.tex (file di esempio che utilizzeremo per creare il file pdf). Supponiamo che la directory sia ~/prova (ossia la directory prova nella nostra directory home):
cd
mkdir prova
cd prova
(... eseguire il download qui ...)
unzip quigleyw.zip
mv QUIGLEYW.TTF quigleyw.ttf
Con l'ultima istruzione e' stato convertito in minuscolo il nome ed estensione del file QUIGLEYW.TTF.
Per comodita' il file puo' essere scaricato sul nostro sito:
quigleyw.ttf
|
FASE 2: MODIFICA FILE CONFIGURAZIONE DI PDFTEX
|
pdflatex utilizza pdftex. Occorre modificare percio' il file di configurazione di pdftex in modo da utilizzare il nuovo font.
Per sapere qual e' il file di configurazione che st utilizzando pdftex si puo' dare il seguente comando:
pdftex story
Il risultato e' qualcosa del genere:
This is pdfTeX, Version 3.14159-1.10b (Web2C 7.4.5)
(/usr/share/texmf/tex/plain/base/story.tex{/usr/share/texmf/pdftex/config/pdftex.cfg} [1{/usr/share/texmf/dvips/config/pdftex.map}])
Interpretandolo, si nota come il file di configurazione e' /usr/share/texmf/pdftex/config/pdftex.cfg.
Per uscire dall'ambiente pdftex basta poi dare il comando:
*\bye
Per il nostro esempio creiamo un file di configurazione nella directory ~/prova (in quanto pdftex utilizza - se esiste - il file di configurazione nella directory dove e' lanciato). Modificare il comando tenendo presente del percorso del vostro pdftex.cfg.
cp /usr/share/texmf/pdftex/config/pdftex.cfg .
Occorre ora editare il file pdftex.cfg decommentando (o aggiungendoci) la riga
map +myfonts.map
In questo modo sara' possibile utilizzare il file myfonts.map per aggiungere il font.
|
FASE 3: CREAZIONE FILES .afm E .tfm
|
Per l'utilizzo del font quigleyw.ttf occorre creare i files quigleyw.afm e quigleyw.tfm. Occorre utilizzare gli eseguibili ttf2afm e afm2tfm. Occorrera' anche utilizzare il file T1-WGL4.enc scaricabile per comodita' dal nostro sito:
T1-WGL4.enc
Occorre copiare T1-WGL4.enc nella directory ~/prova.
I comandi da lanciare sono i seguenti:
ttf2afm -e T1-WGL4.enc -o quigleyw.afm quigleyw.ttf
afm2tfm quigleyw.afm -T T1-WGL4.enc quigleyw.tfm
L'ultima istruzione produce la riga
quigleyw QuigleyWiggly " T1Encoding ReEncodeFont " <T1-WGL4.enc
|
FASE 4: CREAZIONE FILE myfonts.map
|
L'ultima riga del comando afm2tfm deve essere scritta (con un editor di testo) nel file myfonts.map, modificandola con l'aggiunta del file quigleyw.ttf come di seguito specificato:
quigleyw QuigleyWiggly " T1Encoding ReEncodeFont " <quigleyw.ttf <T1-WGL4.enc
Per comodita' il file puo' essere scaricato sul nostro sito:
myfonts.map
|
FASE 5: CREAZIONE FILE .fd
|
Occorre ora creare un file con esensione .fd che mi dia la definizione della famiglia di caratteri. Chiameremo il file come T1quigleyw.fd, in quanto il file d'esempio conterra' la seguente riga:
\usefont{T1}{quigleyw}{m}{n}
Quindi, il nome del file derivera' da {T1}{quigleyw} togliendo le parentesi grafe, e {m}{n} dovra' essere contenuto nel file in questo modo:
\ProvidesFile{t1quigleyw.fd}[QuigleyWiggly font]
\DeclareFontFamily{T1}{quigleyw}{}
\DeclareFontShape{T1}{quigleyw}{m}{n}{
<-> quigleyw
}{}
Per comodita' il file puo' essere scaricato sul nostro sito:
T1quigleyw.fd
|
FASE 6: CREAZIONE FILE ESEMPIO
|
Creiamo ora un file esempio per vedere se il procedimento funziona. Lo chiamiamo prova.tex. Ad esempio, il file puo' contenere le seguenti righe:
\documentclass[a4paper,10pt]{article}
\setlength{\textwidth}{7in}
\setlength{\oddsidemargin}{-.25in}
\setlength{\evensidemargin}{-.25in}
% Title Page
\title{\textbf{PROVA CARATTERE}}
\author{}
\date{}
\begin{document}
\maketitle
\section*{La nostra prova}
\usefont{T1}{quigleyw}{m}{n}
Sto scrivendo in QuigleyWiggly.
\end{document}
Per comodita' il file puo' essere scaricato sul nostro sito:
prova.tex
Il file PDF verra' creato con il comando:
pdflatex prova.tex
Il risultato sara' il file prova.pdf contenente la scritta "Sto scrivendo in QuigleyWiggly." formattata con il carattere QuigleyWiggly.
Ecco il file pdf risultato dell'operazione:
prova.pdf
|
FASE 7: IMPORTANTE NOTA SUI FILES TTF
|
Riporto una mail che ci e' arrivata da Francesco Talamona:
Conoscevo già il vostro sito per via di WHFC, e mi ci sono imbattuto di
nuovo grazie a LaTex. Mi sono bastati pochi minuti e due "copiaincolla"
per scarabocchiare un pdf con QuigleyWiggly! Di solito la
documentazione in Italiano non è all'altezza di quella in lingua,
invece stavolta...
Complimenti! Veramente notevole.
Incoraggiato dal successo iniziale ho voluto avventurarmi a fare altre
prove; ho incontrato delle difficoltà che poi ho risolto, magari può
interessarvi la mia esperienza.
Ho inizialmente catalogato le operazioni della sequenza, in base al
fatto che fossero richieste una volta sola oppure una per font. Poi ho
cominciato a convertire una quindicina di font TTF che avevo in giro.
Il problema che ho sperimentato è abbastanza subdolo perchè il messaggio
d'errore è fuorviante (almeno, io l'ho trovato tale).
Un avolta generati i files .afm la conversione tramite afm2tfm ha emesso
il seguente messaggio d'errore:
[sko@macula:~/tex/nat_e_gua/050105]$ for i in `ls -1 *.afm` ; do afm2tfm
$i -T T1-WGL4.enc ${i%afm}tfm ; done
dimestore DimestoreHooker " T1Encoding ReEncodeFont " <T1-WGL4.enc
elder4 TimesNewRomanPSMT " T1Encoding ReEncodeFont " <T1-WGL4.enc
eller Eller " T1Encoding ReEncodeFont " <T1-WGL4.enc
! input line too long; perhaps input file is malformed?
FamilyName Forgotten Futurist
^
! input line too long; perhaps input file is malformed?
FamilyName Forgotten Futurist
^
! input line too long; perhaps input file is malformed?
FamilyName Forgotten Futurist
^
! input line too long; perhaps input file is malformed?
FamilyName Forgotten Futurist
^
! input line too long; perhaps input file is malformed?
FamilyName Guild of Professional Actors
^
interplan InterplanetaryCrap " T1Encoding ReEncodeFont " <T1-WGL4.enc
mugshots SpringfieldMugShots " T1Encoding ReEncodeFont " <T1-WGL4.enc
oscillat Oscillate " T1Encoding ReEncodeFont " <T1-WGL4.enc
sgreek Sgreek-Medium " T1Encoding ReEncodeFont " <T1-WGL4.enc
sumdumgo Sumdumgoi " T1Encoding ReEncodeFont " <T1-WGL4.enc
! input line too long; perhaps input file is malformed?
FamilyName TRUCK Conky Choo Driver
^
6 su 15 si sono rifiutati di funzionare (sono stati creati i sei
files .tfm vuoti), una "bella" percentuale.
Dicevo che ho trovato fuorviante il messaggio d'errore, difatti mi sono
concentrato a cercare di capire cosa ci fosse di sbagliato in
"FamilyName" (di solito il "caret" è usato per indicare la riga
precedente...), credendo da principio che gli spazi nel nome non
fossero supportati; poi che dipendesse dalla lunghezza di tale
parametro.
Siccome l'errore persisteva anche imponendo FontName, FullName e
FamilyName di un solo carattere, ho cercato altrove: è la voce "Notice"
quella incriminata! Se Notice supera i 254 (o 255?) caratteri afm2tfm
si rifiuta di continuare, purtroppo tale voce è utilizzato per
immagazzinare informazioni su autore, copyright, homepage, etc e non è
infrequente che tale limite (che evidentemente altrove non crea
problemi) sia oltrepassato.
In definitiva il vostro documento è ottimo (non so quanta fatica avrei
fatto senza), tutt'al più aggiungerei un caveat alla luce della mia
esperienza.
Grazie e buon 2005.
Francesco
|
RIFERIMENTI
|
pdftex
using a Truetype font in Pdflatex
Using TrueType fonts with TeX (LaTeX) and pdfTeX (pdfLaTeX)using a Truetype font in Pdflatex
www.1001fonts.com
|
CAMBIAMENTI
|
--. 30 maggio 2005 10.50: inserimento segnalazione Francesco Talamona
--. 30 novembre 2004 17.00: creazione documento
|