TeX e LaTeX.
I font

Quando si scrive in LaTeX sono disponibili le famiglie di font serif (roman), sans-serif, monospaced (typewriter) e matematico. A loro volta specializzabili a seconda dello spessore del tratto (normale, grassetto) e la forma delle lettere (diritto, corsivo, ecc...). Se non si specifica nulla, nel corpo del testo viene usata la famiglia serif, di tratto normale e forma diritta.

Finora però abbiamo solo parlato della generica famiglia, non del font vero e proprio che poi verrà usato. Di default LaTeX utilizza l'insieme di font Computer Modern (CM); in particolare CM Roman per la famiglia serif, CM Sans Serif per la famiglia sans-serif e CM Typewriter per la famiglia monospaced.
Il set di font Computer Modern è oramai stato sostituito da una versione più moderna, chiamata Latin Modern, che a breve diventerà di default in LaTeX.

Quando si vogliono cambiare i font del proprio documento, a meno che si abbiano dei motivi particolari, si consiglia di usare dei pacchetti appositi che si occupano di cambiare consistentemente i font per ogni famiglia. Per una lista di questi pacchetti vedere le referenze più avanti.

Per usare il set di font Latin Modern inserire nel preambolo:

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}

Il pacchetto textcomp non è strettamente necessario ma permette l'uso di numerosi simboli. Lo raccomando caldamente.

Ottimo riferimenti ai font per LaTeX sono The LaTeX Font Catalogue e A Survey of Free Math Fonts for TeX and LaTeX.

Cambio di stile e di corpo

Per cambiare corpo del documento si possono usare i seguenti modi:

...
ciao ciao ciao
\huge pippo pluto\par
\normalsize ciao ciao ciao ciao ciao 
ciao ciao ciao ciao ciao ciao
...
...
ciao ciao ciao
{\huge pippo pluto\par}
ciao ciao ciao
...
...
ciao ciao ciao
\begin{huge}
pippo pluto\par
\end{huge}
ciao ciao ciao
...

Da notare la presenza di \par (si ricordi che \par è equivalente ad una riga bianca). Se si ritorna al corpo precedente prima di un nuovo pagaragrafo infatti, la grandezza del corpo viene cambiata ma l'interlinea rimane quella precedente. Le motivazioni di questa scelta sono facili da capire. L'unico problema è che la linea bianca deve essere lasciata per forza dentro e non fuori il cambio di corpo; in pratica un codice come questo usa l'interlinea sbagliata :(

ciao ciao ciao

\begin{huge}
pippo pluto
\end{huge}

ciao ciao ciao
...

I font per la matematica

Se si vogliono tutti i caratteri matematici in sans-serif, usare il pacchetto sansmath e dare il comando \sansmath.

Simboli vari e textcomp

Alcuni simboli sono difficili da usare con LaTeX e spesso bisogna inserirli con degli escamotage. L'uso di textcomp risolve parte di questi inconvenienti.

Gradi e Gradi Celsius

Il simbolo ° non è così semplice da inserire in LaTeX come sembrerebbe a prima vista. Se non vi interessa che il simbolo sia cercabile nel documento e che rappresenti il corretto carattere Unicode, potete usare il comando \degree, definito come segue:

\providecommand{\degree}{\ensuremath{^\circ}}

Analogamente per i gradi Celsius vi conviene definire il comando \celsius

\providecommand{\celsius}{\ensuremath{^\circ\:\!\!\mathrm{C}}}

Se invece volete che nel vostro documento compaia, non un simbolo molto simile, ma il simbolo dei gradi, caricate il pacchetto textcomp. Il comando da usare è \textdegree. Funzionano però solo in modo testo. Per farlo funzionare anche in modalità matematica bisogna racchiudere il comando dentro una \mbox. Oppure automaticamente nel preambolo:

\usepackage{textcomp}
\DeclareTextSymbolDefault{\degreesymbol}{TS1} 
\DeclareTextSymbol{\degreesymbol}{TS1}{176} 
\DeclareRobustCommand{\textdegree}{\ifmmode\mbox{\degreesymbol}\else\degreesymbol\fi} 
\let\degree\textdegree

In questo modo avrete a disposizione il comando \degree e la possibilità di inserire direttamente il simbolo ° (Unicode 176) da tastiera (purché carichiate inputenc o inputenx con la codifica di caratteri giusta.) e potrete usarli sia in ambiente testo che in ambiente matematico.

Per scrivere i gradi Celsius si hanno due possibilità. O si scrive il simbolo dei gradi seguito dalla C maiuscola, °C o \degree C, oppure, dato che lo spazio tra ° e C è troppo grande, più correttamente si usa il simbolo apposito ℃ (Unicode 8451). Il pacchetto textcomp fornisce il comando \textcelsius che produce il carattere corretto (cioè fatto di un unico carattere) ma che non può essere usato in modo matematico. Per ovviare a questo problema o lo inserite in una \mbox oppure scrivete questo nel preambolo.

\DeclareRobustCommand{\celsius}{\ifmmode\mbox{\textcelsius}\else\textcelsius\fi}

In questo modo avrete a disposizione il comando \celsius da usare come volete. È inutile mettere anche la possibilità di inserirlo da tastiera perché non è presente nelle tastiere standard e poi verrebbe supportato solo in utf8.

Infine se usate molte unità di misura vi conviene caricare il pacchetto siunitx.

\usepackage{textcomp}
\usepackage{siunitx}

Gli angoli possono essere scritti con \degree, ° e il comando \ang. Il simbolo dei gradi celsius può essere inserito con il comando \celsius che però non è più fatto di un unico simbolo bensì dai due simboli ° e C, che però hanno la spaziatura corretta. Purtroppo però il comando ° inserito direttamente nel testo con la opportuna codifica di input attiva ancora il comando \textdegree anziché il comando \degree. Pertanto non funzionerà in modo matematico. Per ovviare al problema basta scrivere:

\usepackage{textcomp}
\DeclareTextSymbolDefault{\degreesymbol}{TS1} 
\DeclareTextSymbol{\degreesymbol}{TS1}{176} 
\DeclareRobustCommand{\textdegree}{\ifmmode\mbox{\degreesymbol}\else\degreesymbol\fi} 
\let\degree\textdegree
\usepackage{siunitx}

Oppure bisognerebbe far sì che il simbolo ° richiami il comando \degree di siunitx, ma non so come si fa.

Angstrom

Esiste il comando \AA. Possiamo definire:

\providecommand{\angstrom}{\ensuremath{\mbox{\AA}}}

Simbolo per il suffisso micro

Grosso problema perché non esistono normalmente i caratteri greci diritti minuscoli. Ecco un esempio trovato in rete da modificare. Poi creiamo il comando \micro.

\DeclareFontFamily{U}{euc}{}
\DeclareFontShape{U}{euc}{m}{n}{<-6>eurm5<6-8>eurm7<8->eurm10}{}
\DeclareSymbolFont{AMSc}{U}{euc}{m}{n}
\DeclareMathSymbol{\umu}{\mathord}{AMSc}{"16} 
\providecommand{\micro}{\ensuremath{\umu}}

Oppure molto più semplicemente si carica textcomp

\usepackage{textcomp}
\providecommand*{\micro}{\ensuremath{\text{\textmu}}}

Simbolo Ohm

Semplicemente definiamo il comando \ohm

\providecommand{\ohm}{\ensuremath{\Omega}}

Oppure caricando textcomp

Quali font usare

Breve storia dei font

Blackletter (noti anche come Block, Gothic, Fraktur o Old English);
Humanist (noti anche vome Veneziani);
Old style faces (noti anche come Garalde);
Transitional (noti anche come Neoclassici);
Modern (noti anche come Didone);

Font con supporto per la matematica

Ecco una panoramica dei font con supporto per la matematica più usati. Vedi anche psnfss2e.pdf, miktex_fonts.pdf. Se non vi interessa la matematica potete usare molti più font, date un'occhiata al LaTeX font catalogue oppure se usate XeLaTeX potete anche usare i font del vostro pc.

Latin Modern

\usepackage[T1]{fontenc}
\usepackage{lmodern}

The Latin Modern Family of fonts consists of 72 text fonts and 20 math fonts (being at the moment a duplicate of PL math fonts): There is no OpenType format provided for math fonts (yet). VEDI IL PROGETTO LM-MATH.

Solo XeLaTeX

\usepackage{unicode-math}
\setmathfont{...}

Times

tgtermes (TeX Gyre), times, txfonts

\usepackage[T1]{fontenc}
\usepackage{mathptmx}

Solo XeLaTeX: XITS, XITS-math

\usepackage{unicode-math}
\setmathfont{xits-math.otf}

Solo XeLaTeX: STIX

\usepackage{unicode-math}
\setmathfont{...}

Solo XeLaTeX: Cambria e Cambria Math (MS font a pagamento)

\usepackage{unicode-math}
\setmathfont{...}

Palatino

\usepackage[T1]{fontenc}
\usepackage[sc]{mathpazo}
\linespread{1.05}

pxfonts

\usepackage[T1]{fontenc}
\usepackage{tgpagella}

Solo XeLaTeX: Asana-math

\usepackage{unicode-math}
\setmathfont{...}

Garamond

% \usepackage[T1]{fontenc}  già settato dal pacchetto mathdesign
\usepackage[urw-garamond]{mathdesign}

Utopia

\usepackage[T1]{fontenc}
\usepackage{fourier}
% \usepackage[T1]{fontenc}  già settato dal pacchetto mathdesign
\usepackage[adobe-utopia]{mathdesign}

Charter

% \usepackage[T1]{fontenc} già settato dal pacchetto mathdesign
\usepackage[bitstream-charter]{mathdesign}

La gestione dei font

In questa sezione parlerò di come vengono gestiti i font in una distribuzione TeX. In particolare parlerò di MiKTeX anche se in TeXLive le cose non sono molto differenti.

METAFONT è un linguaggio per creare font in formato bitmapped (raster). I font distribuiti nei sistemi TeX non sono nient'altro che sorgenti METAFONT. Tutti i compilatori LaTeX possono lanciare METAFONT per creare al volo i font. Questo tipo di font è però obsoleto e non va più usato. L'estensione di questi file è .<dpi>pk.

La miglior cosa è avere font in formato outline (vettoriali). Tra i vari formati esistenti ricordiamo Adobe Type 1 (anche detti PostScript Type 1), TrueType, OpenType. L'estensione dei Type 1 è .pfb, dei TrueType è .ttf, degli OpenType è .otf.

Quando i compilatori TeX processano un file sorgente, per fare i calcoli, prima che del font vero e proprio, cioè delle immagini delle lettere, hanno bisogno dei file di metrica (.tfm) che dicono per ogni lettera quanto spazio occupa. Così tutto il processo di compilazione è più veloce.

I font METAFONT hanno un file di metrica .tfm. I T1 hanno un file di metrica ma in un formato diverso (.afm). I TrueType e gli OpenType non hanno invece file ausiliari perché le informazioni sulla metrica sono già contenute nei file del font. Questo spiega perché è così difficile usare nuovi font nel mondo TeX.

In realtà i nuovi compilatori TeX, XeTeX e LuaTeX, possono usare qualsiasi tipo di font senza alcun problema, indipendentemente se il font in questione faccia parte o meno della distribuzione TeX, proprio come fanno i vari word processors, come Word o LibreOffice.

Lasciando perdere questi nuovi compilatori e rimanendo su PdfTeX, si capisce allora che durante la produzione del pdf, viene prima usato il file della metrica calcolare lo spazio occupato dalle lettere e infine si usano le lettere vere e proprie del font scelto. Il compilatore deve però sapere dove si trovano questi font che vengono richiamati dal sorgente (solitamente non vengono richiamati direttamente ma tramite dei pacchetti preconfezionati che si occupano di tutto il lavoro sporco). Anche il nome dei font usati non è così banale. Il nome e la locazione dei font si trovano nei file .map.

Ecco un ottimo link per approfondire. Si consiglia anche l'ottimo fntguide.pfd, presente in ogni distribuzione TeX.

Font virtuali e vettori di codifica

updmap.cfg

initexmf --edit-config-file updmap
dvipsPreferOutline true
# URW, URWkb, ADOBE, ADOBEkb
LW35 URWkb 
dvipsDownloadBase35 false
pdftexDownloadBase14 true
dvipdfmDownloadBase14 true
# Load maps
Map ascii.map
...

psfonts.map

Dipende da updmap.cfg.

# per crearlo/ricrearlo e aggiornare le mappe dei font
initexmf --mkmaps

La sintassi più generica delle varie mappe

...
cs-lmr10 LMRoman10-Regular "enclmcs ReEncodeFont" <lm-cs.enc <lmr10.pfb
...

dvipdfm.map

Dipende da updmap.cfg.

# per crearlo/ricrearlo e aggiornare le mappe dei font
initexmf --mkmaps

pdftex.map

Dipende da updmap.cfg.

# per crearlo/ricrearlo e aggiornare le mappe dei font
initexmf --mkmaps

Il comando fc-list

Serve per mostrare il nome di tutti i font installati.

File di definizione dei font

Esistono poi i file .fd. In questi file viene specificato come passare dai comandi ad alto livello di LaTeX, al font vero e proprio che bisogna scegliere per quel comando.