Lista font installati in OpenOffice
Qualche tempo fa avevo scritto una
macro per inserire in un documento di OpenOffice Writer l’elenco
dei font installati sul computer. Nella pagina veniva inserito il
nome del carattere, in Times New Roman e in piccolo, e poi una fase di prova
impaginata in grande con il font in questione. Il problema che che troppi
cambi di carattere e dimensione erano laboriosi. Il software rimaneva bloccato per un po’di tempo mentre eseguiva il lavoro, e anche alla fine, scorrendo tra una pagina e l’altra, risultava rallentato, come avviene anche quando si sovraccarica un documento con troppe immagini.
Ora ne ho messo a punto una versione più semplice, che stampa soltanto il nome del carattere, sempre nella stessa dimensione, usando il carattere medesimo.
L’idea iniziale era quella di produrre un elenco come quello che compare cliccando sul menù a tendina per la scelta del carattere. In poche righe però è impossibile ottenere lo stesso risultato. In quel menù infatti compare soltanto il nome della famiglia, nella versione regular, se presente. In realtà ogni famiglia è composta di vari stili: ad esempio il Times New Roman si compone di quattro files, Regular, Italic, Bold e Bold Italic. Elencando tutti i font installati il carattere comparirebbe quattro volte, nelle sue varie versioni.
Si potrebbe scegliere di comporre la lista solo con il font nella versione di base, ma anche questo non è così semplice. In teoria basta vincolare la stampa allo StyleName mediante un If. Peccato che non esiste una regola di base per dare il nome allo stile. Sul mio computer i font di sistema hanno le denominazioni in italiano, mentre quelli scaricati ce l’hanno in inglese. Quindi per alcuni lo stile si chiama “Normale”, per altri si chiama “Regular”. E lo stesso vale anche per gli altri stili: Corsivo/Italic, Grassetto/Bold, eccetera.
Nel menù di OpenOffice compaiono anche quei font di cui abbiamo installato solo la versione Light o Black.
Inoltre ci sono altri font che hanno degli stili con denominazioni fuori norma: ad esempio Book oppure Roman.
Alcuni al posto dell’italico hanno la versione Oblique.
Insomma, per ottenere nel documento una lista identica a quella che compare nel menù bisognerebbe infarcire il codice con parecchie condizioni, a quanto sembra.
Riducendo il tutto all’osso, il risultato è quello che trascrivo qui sotto. Basta copiarlo e incollarlo tra le macro basic di OpenOffice (Strumenti, Macro, Organizza Macro, OpenOffice Basic, Modifica, in coda al documento) e poi eseguirlo in una pagina vuota (Strumenti, Macro, Esegui Macro, e trovare il nome TuttiFont). Il risultato è una stampa in ordine sparso di tutti i font nella versione Regular o Normale. Per avere l’ordine alfabetico bisognerebbe aggiungerci altre righe di codice.
Sub TuttiFont
dim doc
dim finestra
dim cursore
dim fonts
dim i
dim n
dim frase
doc=thisComponent
finestra=doc.getCurrentController().getFrame().getContainerWindow()
fonts()=finestra.getFontDescriptors()
cursore=doc.text.createTextCursor()
n=Ubound(Fonts())
i=1
while i<n
if (fonts(i).StyleName="Regular")
or (fonts(i).StyleName="Normale") then
cursore.charFontName=fonts(i).name
frase=fonts(i).name
doc.text.insertString(cursore, frase,
False)
doc.text.insertControlCharacter(cursore,
com.sun.star.text.ControlCharacter.LINE_BREAK, False)
endif
i=i+1
wend
End Sub
L’esecuzione del programma è pressoché immediata e non crea particolari problemi.
Rimuovendo la riga che dice cursore.charFontName=fonts(i).name (o anche aggiungendo all’inizio la parola REM, che fa sì che non venga eseguita anche se non è cancellata) tutti i nomi vengono scritti nello stesso carattere (ma non c’è gusto).
Ripeto, la lista che viene fuori non è quella di tutti i font installati nel computer, ma solo di quelli che hanno una versione che è stata chiamata dagli autori “Regular” o “Normale” (ossia quelle specificate nell’if).
Qualunque risultato più accurato è possibile, solo che richiede più righe di programmazione e più impegno per smistare i font che vengono restituiti dalla funzione getFontDescriptors(). Sempre che non esista qualche scorciatoia che io non conosco.
Visto che il software sceglie in automatico l’interlinea sulla base delle caratteristiche di ciascun font, la lista appare spaziata in maniera non omogenea (alcuni font, come il Papyrus, prendono più spazio in verticale rispetto ad altri). Per risolvere il problema basta selezionare tutto, cliccarci col pulsante destro del mouse, proprietà Paragrafo, scheda Paragrafo, e impostare l’Interlinea a Fissa. In alcuni casi le lettere di una riga possono andare a interferire con quelli delle righe circostanti, ma nel complesso l’aspetto del testo è molto più regolare.
Commenti
Posta un commento