ho ancora dei dubbi, però.
1. Quali sono i “caratteri a 8 bit” che TeX è stato in grado si rappresentare dopo il 1989?
2. Come fa la codifica UTF-8 a essere a 8 bit pur occupando un gruppo di byte da uno a quattro?
3. Qual è il “vecchio sistema ASCII” che compone il sistema dei caratteri Computer Modern?
Aggiungo qualcosa a quanto scritto da Luigi. Anche TeX (versioni 1 e 2) poteva gestire font con 256 caratteri. L’idea iniziale di Knuth era di riempire la metà superiore con caratteri accessibili per mezzo di legature (qualcosa come “o/” per ottenere “ø”).
Se guardi le appendici del TeXbook, ti accorgi che all’epoca dello sviluppo di TeX si facevano strada vari modi di riempire anche la parte “non stampabile” della prima metà del codice ASCII: cominciava a sentirsi molto meno la necessità di riservare spazio per codici di comunicazione, dal momento che non si usavano più le telescriventi. Da qui la decisione di Knuth di affidarsi solo alla parte “sicura”, cioè i 95 caratteri “stampabili” del codice ASCII: questa deve essere identica in ogni realizzazione di TeX, che altrimenti non passa il “trip test”.
Con la revisione per il passaggio da TeX 2 a TeX 3, Knuth si rese conto che le lingue europee dovevano avere accesso completo a 256 caratteri chiamandoli “per nome”. Ma non c’è alcuna convenzione fissa sotto, a parte quella sui 95 caratteri stampabili che devono “corrispondere a sé stessi”. A TeX non interessa minimamente come venga rappresentato sullo schermo l’ottetto “C5: se, interpretando i token, incontra quell’ottetto come istruzione di composizione, TeX inserisce il carattere che sta al posto “C5 nel font in uso. Quale carattere venga fuori è una scelta di chi ha programmato il font.
Con il meccanismo dei font virtuali non sarebbe troppo difficile adattare un font codificato in modo qualsiasi così da farlo coincidere con la codifica ISO-8859-1 o quella preferita (a 8 bit, ovviamente). Gli sviluppatori di LaTeX hanno deciso per un’altra strada, separando la “codifica di input” dalla “codifica di output”: mantenere collezioni di font per tutte le codifiche in uso sarebbe un lavoro immane.
Facciamo un esempio. Supponiamo che l’utente scelga come codifica di input la ISO-8859-1 (alias latin1) e come codifica di output la T1. LaTeX legge il file latin1.def che si occupa di rendere attivi tutti gli ottetti della metà alta (cioè li fa comportare come se fossero comandi con la barra rovescia davanti); così il carattere che sullo schermo è rappresentato come “à” diventa un comando: “caro TeX, componi una “. Di fatto l’istruzione “à” viene tradotta in un altro comando che fa parecchie cose: (1) guarda la codifica di output in uso; (2) decide se corrisponde a un carattere presente nel font; (3) se il carattere c’è lo fa produrre a TeX; (4) se il carattere non c’è, guarda se esiste una “definizione di default”; (5) se questa c’è viene eseguita; (6) se non c’è si spedisce un messaggio di errore.
Attenzione: “\`a” in LaTeX non produce necessariamente “sovrapponi alla a un accento grave”; infatti anche il significato di \` dipende dalla codifica di output in uso in modo che “\`a” esegua gli stessi comandi che sarebbero eseguiti incontrando .
Ciao
Enrico