L’altro giorno stavo cercando di fare una form d’esempio per una demo. Mi serviva visualizzare un prototipo di quello che chiamo N2M, cioè quelle form che consentono di scegliere un insieme di valori spostandoli tra due liste, a destra e a sinistra, con dei bottoni in mezzo, delle freccine.
La soluzione da cui ho preso il modello era stata implementata per Internet Explorer, e per le bitmap dei bottoni usava i caratteri 3,4,7,8 della fonte Windows Webdings. Sono dei triangoli come quelli dei tasti dei registratori, Play, FastForward, Rewind e, diciamo, Reverse. Comodo avere queste iconcine, bello. Peccato che con Firefox non vengano visualizzati, in nessun modo. Ho provato in tutti i modi, uno style inline, un CSS. Niente da fare. Al posto delle icone vedo sempre i numeri.
Dopo una faticosa ricerca, ho finalmente capito il problema. Firefox è molto W3C-compliant, e quindi il ragionamento che fa è questo: mi chiedi di visualizzare il carattere “8”, ma la fonte Webdings visualizza al posto del carattere “8” una bitmap FastForward, quindi non posso “rendere” il carattere in Webdings; quindi scalo alla fonte di seconda scelta, al limite uso il default.
L’unico modo per visualizzare dei caratteri è quello di recuperare il codice Unicode, ammesso che ci sia. In particolare, i triangolini sdraiati del Play e Reverse ci sono, si trovano tra le Geometrical Shapes dei Code Charts di Unicode, sono i caratteri U+25B6
(▶) e U+25C0
(◀); ma i triangoli doppi del FastForward e Rewind non sono stati messi da nessuna parte delle codifiche Unicode (perché poi…).
L’unico modo valido è quello di renderli come bitmap.
Ci sarebbe però uno sporco trucco, che non consiglio, ma che comunque consente di capire un po’ come funziona il motore di rendering di Firefox, Gecko. Il trucco è spiegato qui, fa riferimento a Mozilla ma si può adattare facilmente a Firefox. In pratica consiste nel dire a Firefox di rispettare il formato dei glifi per la fonte Webdings, aggiungendo la riga:
encoding.webdings.ttf = windows-1252
al file:
%FirefoxProgramFolder%\res\fonts\fontEncoding.properties
Dove %FirefoxProgramFolder%
dovrebbe essere qualcosa come:
C:\Program Files\Mozilla Firefox
oppure C:\Programmi\Mozilla Firefox
Ho provato, e l’effetto è quello. Ovviamente non è una soluzione portabile. Poi ho comunque rimesso le cose a posto…