I caratteri del Commodore 64

Esistono sul web parecchie versioni gratuite del font del Commodore 64, il più diffuso modello di home computer degli anni 80. Non si tratta certo di lettere belle dal punto di vista estetico. Il fatto è che le risorse del Commodore erano limitatissime. Se i disegnatori professionisti che si occuparono dei primi caratteri digitali per la fotocomposizione avevano una griglia di 200 per 100 pixel, e la libertà di variare a piacimento la larghezza di ogni carattere, nel Commodore la griglia fissa era di 8x8. Inclusi gli spazi a destra e sinistra e l’interlinea.
Di che sto parlando? Dunque: i caratteri moderni sono raster, quelli che si usavano un tempo erano bitmap. In un carattere raster il disegnatore stabilisce la posizione solo di alcuni punti sulla linea esterna del carattere: i vertici, l’inizio di un tratto curvo, o il suo punto centrale. Il software si occupa di tracciare le linee tra questi punti, e colorare col colore appropriato la parte interna della lettera. È questo il motivo per cui, per quanto si ingrandisca la dimensione delle lettere, una linea curva o obliqua non sarà mai sgranata: il computer la disegna di volta in volta a seconda delle esigenze, impiegando il numero di pixel necessario.
Nei caratteri bitmap invece il disegnatore ha una griglia di pixel di dimensione ben definita, e deve annerire ciascuno dei punti che fanno parte della lettera. Il risultato è che questi font non sono scalabili. Una linea che in piccole dimensioni sembra curva, a grandi dimensioni appare composta di blocchi, di quadrati.
I disegnatori che lavorarono a digitalizzare i primi caratteri dovevano eseguire il lavoro a varie dimensioni diverse. Chi progettò il Commodore invece aveva a disposizione una griglia così piccola che l’idea di ottenere linee curve o variare lo spessore delle aste era da escludere a priori.
La dimensione era fissa perché l’hardware era stato progettato in maniera rigida per ridurre i calcoli da eseguire: lo schermo era diviso in tanti quadrati di dimensioni 8x8. La lettera che compariva in ogni posizione era determinata dal valore numerico di una memoria fisica ben precisa della dimensione di un byte (quindi c’erano solo 256 possibilità). Altri quattro bit determinavano il colore della lettera, e quattro il colore dello sfondo.
Visto che ogni pixel poteva essere acceso o spento, l’informazione occupava la memoria di un bit. Gli otto bit della prima riga occupavano un byte di memoria. E visto che ogni carattere era di 8 righe, occupava 8 byte. Visto che l’intero set era composto da 256 caratteri la memoria occupata dall’intero font era di 256*8=2048 bytes. Cioè due kilobytes. E in memoria c’erano due set di caratteri, uno solo di maiuscole e simboli uno di minuscole, maiuscole e simboli. Totale 4 kilobytes.
Che si trovavano incisi nella rom, la Read Only Memory, che non era possibile modificare rispetto a come era uscita dalla fabbrica.
Questo significa che non si poteva cambiare font? No, perché se la mappa dei caratteri standard non poteva essere modificata, si poteva cambiare il valore di un puntatore che indicava da dove attingere la forma delle lettere. Cambiando il valore di un gruppo di tre bit, si poteva dire al computer di non attingere dalla rom, ma dalla ram, la Random Access Memory, che era quella che l’utente poteva modificare.
A seconda del valore di quei tre bit, si poteva puntare ad una di otto posizione diverse sulla ram (sei in realtà, perché due erano riservate). E in questa si poteva salvare il proprio font personalizzato.
A prima vista sarebbe difficile ottenere un risultato esteticamente soddisfacente con queste limitazioni (tolto lo spazio, ogni lettera non poteva estendersi per più di 6 pixel in larghezza e 7 in altezza, a meno di non volerle collegare con le successive). Ma le possibilità erano comunque numerose. Perché la A doveva essere a punta? Non poteva avere una parte superiore piatta o dei fianchi paralleli? Perché le lettere devono essere stampatelle? Non possiamo metterle corsive? Senza contare il fatto che uno può concentrarsi non sulla leggibilità, ma magari sull’ottenere forme artistiche, geometriche. Nel corso degli anni si è visto di tutto: stencil, horror, bauhaus, gotico...
Ovviamente lo scopo originario degli ingegneri non era solo stilistico, ma pratico. Se uno avesse voluto usare il loro computer in Russia, in Grecia, in Israele, in Arabia, avrebbe potuto avere il suo alfabeto facilmente disponibile, seppure rinunciando a 2kb di ram (su 64). (E anche per scrivere in italiano, nella configurazione di default mancano tutte le lettere accentate. Sulla wiki C64 l’esempio si riferisce alle lettere tedesche sovrastate da un doppio punto).

Il modo per digitalizzare qualsiasi forma era semplice: anche a mano si poteva fare. Bastava prendere su un foglio a quadretti una griglia di dimensioni 8x8, e annerire i quadrati che dovevano far parte della lettera. Ognuno di quelli aveva un valore che era una potenza di due: quello più a destra valeva 1, il secondo da destra valeva 2, il terzo 4 e così via, raddoppiando fino ad arrivare a 128. La somma dei valori di tutti i quadrati colorati di nero su ogni riga dava un numero tra 0 e 255 che avrebbe occupato un byte di memoria. Ad esempio, la forma della lettera A corrispondeva a questi otto byte: 24, 60, 102, 102, 126, 102, 102, 0.



Ovviamente era più rapido calcolare il tutto usando un apposito programma, ma la regola era così facile che un programmatore poteva scriverselo da solo, con un po’ di lavoro. Cosa che non è certo possibile per i programmi attuali per disegnare font.

Cambiando un bit, sul Commodore era possibile attivare anche l’opzione di font multi-colore. Si sacrificava la risoluzione orizzontale, visto che i bit venivano accorpati a due a due. Il colore di entrambi sarebbe stato scelto tra quattro possibilità diverse: il colore dello sfondo, il colore del carattere, un secondo e un terzo colore (due bit per pixel vuol dire quattro possibilità: 00, 01, 10, 11).

Comunque, se apparentemente dal punto di vista tipografico il Commodore non poteva dare soddisfazioni, la pratica era ben diversa. Basta guardare i videogiochi di quegli anni per rendersi conto che non solo era possibile disegnare font di dimensioni superiori (da usare ad esempio per i punteggi aggiornati in tempo reale) e per giunta a colori (con gradienti, sfumature, ombre), ma che per le scritte fisse (magari la schermata iniziale del gioco o della demo) le possibilità artistiche erano pressoché illimitate.
 
Il sito Codepo8 da questo punto di vista è interessantissimo, perché permette di scrivere facilmente nel browser una o più parole, e ottenere immediatamente un logo in caratteri che potevano essere visualizzati sul Commodore, utilizzando la stessa risoluzione e gli stessi colori disponibili. Non solo l’utente del sito può scegliere il tipo di carattere che preferisce, ma può cambiare ciascuna delle sfumature di cui è composta la scritta (scegliendo tra i 16 colori del Commodore).
Ci sono 58 font differenti tra cui scegliere, alcuni con sfumature fantastiche (ottenute alternando i pixel di un colore a quelli di un altro, per ottenere un risultato intermedio).
Alcuni sono degli anni 90, gli ultimi risalgono a 4 anni fa.
Mi pare che ciascuno di loro sia salvato in qualche modo in formato .d64, cioè in un’immagine di floppy per il Commodore. Comunque su Github c’è un gif diverso per ogni lettera, per poter visualizzare le immagini nel browser.
Bello anche il sistema che è stato scelto per far funzionare la pagina: la conversione non avviene in un colpo solo alla fine, ma le nuove lettere del logo appaiono mano a mano che uno le digita.

Commenti

Post più popolari