Sam Qasbah” post=64520
[quote=”Sam Qasbah” post=64515]Salve a tutti.
Ho scritto il codice per gli accenti di un font opentype da usare con XeTeX. Il codice è il seguente:
…
Come si fa a settare l’accento grave?
Grazie, ciao.
Per esempio, “è” (U+00E8) può essere ottenuto come U+0065/U+0300, dove U+0300 si chiama COMBINING GRAVE ACCENT. …
Ciao
Enrico
Grazie infinite per la risposta, ma purtroppo non su tutti i fonts è presente il carattere U+0300. La tabella caratteri di ubutu non è affidabile da questo punto di vista, i caratteri effettivamente presenti li mostra FontMatrix. Il Minion Pro sembra avere un unico accento grave, il carattere U+0060.
Tra l’altro sembra che il problema sia parecchio complicato: Jonathan Kew sostiene che dipende dal “tex-text” font mapping, il quale converte il carattere U+0060 (`) con U+2018 (l’ogonek). Le soluzioni proposte in quel post sono tutte impraticabili: rinunciare a “tex-text”, dovendo così anche rinunciare agli apici e ai trattini in stile TeX, o addirittura mettere mani nei files della mappatura, perdendo così la compatibilità con altre macchine o con altre versioni del TeXLive.
Ho la sensazione di essermi scontrato, come a volte succede, con uno dei limiti del sistema.
Come workaround credo si possa usare qualcosa del genere:
`% grave
\def\`#1{{\def\tmp{#1}%
\def\a{a}\def\A{A}\def\e{e}\def\E{E}\def\i{i}\def\I{I}%
\def\o{o}\def\O{O}\def\u{u}\def\U{U}%
\ifx\tmp\a\char224\fi
\ifx\tmp\A\char192\fi
\ifx\tmp\e\char232\fi
\ifx\tmp\E\char200\fi
\ifx\tmp\i\char236\fi
\ifx\tmp\I\char204\fi
\ifx\tmp\o\char242\fi
\ifx\tmp\O\char210\fi
\ifx\tmp\u\char249\fi
\ifx\tmp\U\char217\fi}}
`
(edit. Mi accorgo solo ora che questo codice è una versione “povera” di quello proposto da Enrico. A essere sincero non avevo mai visto prima il comando \ifcsname 😳 )
Certo è poco elegante e limitato (ad esempio credo che non funzioni con gli small-caps, ma non ho fatto prove al riguardo), ma sembra essere la cosa più vicina ad una soluzione.
Grazie, ciao.[/quote]
Se Minion Pro non ha il carattere la colpa è di chi l’ha preparato. L’unico vero modo è di usare Unicode come input (UTF-8). L’alternativa è di crearsi una lunga mappa di sostituzioni come quella che ti ho indicato; certo non con quella sequela di `\ifx`. 🙂 L’idea è più o meno la stessa di fontenc: si definiscono le combinazioni che corrispondono a un carattere esistente e per le altre si ricorre a un sostituto. Il vantaggio è che una volta creata la mappa, tutti i font possono usare la stessa. Un po’ di codice al riguardo, scritto per passatempo, ce l’ho.
Ciao
Enrico