(LyX/XeTeX) Diversi font per diverse dimensioni

Poiché l’ho lasciato come argomento in sospeso in un articolo precedente e in previsione della prima edizione in italiano di LYX, l’altra forma di scrivere, oggi spiego (cioè, copio e incollo dalla spiegazione che sarà presente nel libro) come costruire un font virtuale che simuli le dimensioni ottiche in XƎTEX.


Supponiamo di avere un documento impostato con una dimensione del carattere di 10 punti. In modo predefinito la dimensione del carattere usato per le note a piè di pagina sarà di 8 pts. Ora, riducendo un font si riduce anche lo spessore del suo tracciato, con il risultato di un testo che appare più chiaro del corpo del testo. Per risolvere questo problema, alcuni font vengono forniti con «dimensioni ottiche», versioni specificamente progettate per le diverse dimensioni. I font di questo tipo sono, per esempio, Latin Modern, TeX Gyre, eccetera. XƎTEX supporta questo tipo di font, scegliendo automaticamente la dimensione appropriata in ogni caso, il che va benissimo… Il problema è che pochissimi font ci danno questa opzione.

A non disperare. Mentre i font con dimensioni ottiche sono pochi, i font con molti varianti di «peso» sono di più.

Andiamo all’esempio. EB Garamond, il font usato in questo documento, nella sua precedente vita offriva un font progettato per 12 pts e un altro per 8 pts., che va bene, ma non aveva il grassetto o il corsivo grassetto. Octavio Pardo ha migliorato il font aggiungendo non solo il grassetto, ma anche una versione mediana, un semi-grassetto e un extra-grassetto, tutti con i corsivi corrispondenti, il che è fantastico, ma non da più la versione prevista per 8 pts., la forma «regolare» è basata sul vecchio disegno dei carattere per 12 pts., e questo è tutto.

Ora, risulta che la versione mediana del nuovo EB Garamond ha lo stesso «colore» —larghezza del tratto— della vecchia versione per 8 pts., quindi potresti chiederti, come ho fatto io nel costruire questo documento, è possibile decidere quale font usare per quale gamma di dimensioni?

Certo che lo è! (EDITATO: correzione nel codice!)

\setmainfont{EB Garamond}[
   Mapping=tex-text,	
   RawFeature={+ss06},	
UprightFont = EB Garamond Regular,
BoldFont = EB Garamond SemiBold,
ItalicFont = EB Garamond Italic,
BoldItalicFont = EB Garamond SemiBold Italic,
UprightFeatures = { SizeFeatures = {
        {Size = {-10},  Font = EB Garamond Medium},
        {Size = {10-},   Font = EB Garamond}}},
BoldFeatures = { SizeFeatures = { 
        {Size = {-10},  Font = EB Garamond Bold},
        {Size = {10-},   Font = EB Garamond 
                                SemiBold}}},
ItalicFeatures = { SizeFeatures = { 
        {Size = {-10},  Font = EB Garamond Medium 
                                Italic},
        {Size = {10-},   Font = EB Garamond Italic}}},
BoldItalicFeatures = { SizeFeatures = { 
        {Size = {-10},  Font = EB Garamond Bold 
                                Italic},
        {Size = {10-},   Font = EB Garamond SemiBold 
                                Italic}}},
]

Nell’esempio di codice —ormai sai dove scriverlo—, dopo aver detto quale font usare per ogni forma, decido quale usare per le diverse gamme di dimensioni: fino a 10 pts e da 10 pts in poi.

Se vuoi essere più fine, puoi sempre usare un intervallo intermedio, per esempio da 10 a 14, dicendo Size = {10-14}.

Nell’intervallo, il valore iniziale è compreso, ma quello finale no. In termini matematici, se x è il valore della dimensione, 10 \leq x < 14 (sezione 6 del manuale di fontspec).