Newsgroup: it.comp.www.php
Titolo: Visualizzare i font disponibili

Ho fatto uno script per visualizzare i font disponibili sotto Linux.
Se a qualcuno interessa lo posto: sono un centinaio di linee circa
compresi i commenti.
ciao!
Marco Bernardini
bernama chiocciola libero it

 ha scritto nel messaggio
news:ieRo9.6747$%M1.1...@twister2.libero.it...

A me interesserebbe

 A me interesserebbe
Eccolo!
Nelle pagine web che vedo solo io mi piace usare font diversi dal
solito (amo i post-it virtuali con le scritte tipo pennarello),
ma ho scoperto che non tutti i font installati si possono
utilizzare nell'HTML (sara' che forse ho pascolato troppo nelle
directory dei font...)
Questo scriptino, di quelli che si usano molto raramente, cerca
tutti i font disponibili su una macchina Linux e ne visualizza
un esempio in HTML.
Se avete alcune centinaia di font come me (xfontsel me ne riporta
4086...) ci vorra' un po' di tempo, ma ne vale la pena.
Le note sulla configurazione sono all'inizio dello script.
Gli utenti Windows potranno recuperare i nomi dei font dal file
di registro (usando regedit.exe) e metterli nell'array $fonts[]
Un pratico effetto collaterale e' la possibilita' di vedere
(quasi) al volo quali font dispongono di un certo carattere (di
solito mancano l'euro e le vocali accentate) inserendo la stringa
da visualizzare nella variabile $esempio
Funziona anche con i caratteri Unicode: se volete sapere quale
font puo' visualizzare 3/8 con un carattere solo usate
$esempio = "&#8540;";
* NOTE VARIE SUI FONT TTF *
Magari un po' OT, ma servono come promemoria.
Per chi non avesse letto tutti i manuali la procedura piu'
spiccia per installare un font TTF e':
- copiare il font in /usr/X11R6/lib/X11/fonts/TrueType/
- uscire dall'ambiente a finestre (KDE, Gnome, fvwm, ecc.) e
   andare in console
- digitare "touch /usr/X11R6/lib/X11/fonts/TrueType.NOMEFONT.ttf"
   (se xfs trova un file nuovo aggiorna la lista dei font)
- riavviare il font server con
   /etc/init.d/xfs restart
- tornare all'ambiente a finestre preferito
Uno dei migliori programmi di gestione font per Linux e'
pfaedit - 
http://pfaedit.sourceforge.net
Se il vostro font preferito non ha l'euro con pfaedit potete
sempre mettercelo prendendolo da un altro font, oppure
disegnarcelo...
ciao
Marco Bernardini
bernama chiocciola libero it
<?
# fonts.php
# Marco Bernardini - bernama chiocciola libero it
# ottobre 2002
# visualizza tutti i font di sistema
# disponibili per i browser locali
# ATTENZIONE: puo' richiedere un sacco di tempo...
# configurazione ######
# lista directory dei font - verifica digitando "which chkfontpath"
$chkfontpath = "/usr/sbin/chkfontpath";
# se c'e' un esempio usa questo invece di tutti i caratteri
$esempio = "";
# colore HTML dell'esempio
$colore = "#000080";
# FONT SIZE=[1-7] per l'esempio
$dimensione = 5;
# separatori dei caratteri
#    per includere i caratteri tra
#    parentesi quadre puoi usare
# $sepsx = "<font face=\"arial\">[</font>";
# $sepdx = "<font face=\"arial\">]</font> ";
$sepsx = "";   # separatore sinistro
$sepdx = " ";  # separatore destro - meglio se e' uno spazio
# il font di default per il documento
#    viene visualizzato questo
#    se il font non e' disponibile
$default = "Courier";
######################
function Vedi($carattere) {
     global $sepsx, $sepdx;
     echo $sepsx;
     echo chr($carattere);
     echo $sepdx;
}
echo "<html><head><title>Fonts</title></head>\n";
echo "<body bgcolor=white text=black>\n";
if ($default) echo "<font face=\"$default\">\n";
echo "Risultato di <tt>$chkfontpath</tt>:\n<pre>";
$r = exec("$chkfontpath -l", $flist);
foreach ($flist as $fnt) {
     echo "$fnt\n";
}
echo "</pre>\n<hr>\n";
$tmp = array_shift($flist);
foreach ($flist as $fnt) {
     $fnt = preg_replace("/.*: /", "", $fnt);
     echo "<b>Directory $fnt:</b><br><br>\n";
     flush();
     $fontsdir = "$fnt/fonts.dir";
     if (file_exists($fontsdir)) {
         $ffonts = file($fontsdir);
         $tmp = array_shift($ffonts);
         if (count($ffonts)==0) {
             echo "Il file fonts.dir &egrave; vuoto<br><hr>\n";
             continue;
             }
         $fonts = "";
         foreach ($ffonts as $F) {
             $fonts[] = preg_replace("/.* 
-.*-(.*)-.*-.*-.*-.*-.*-.*-.*-.*-.*-.*-.*-.*/", "$1", $F);
         }
         # elimina le varianti (ISO 8859-1, ISO 8859-15, ecc.)
         $fonts = array_unique($fonts);
         foreach ($fonts as $F) {
             $F = trim($F);
             echo "esempio di <b>$F</b>:<br>\n";
             echo "<font color=$colore size=$dimensione face=\"$F, 
$default\">";
             if ($esempio) {
                 echo $esempio;
             } else {
                 for ($i=32; $i<=64; $i++) { # da spazio a @
                     Vedi($i);
                 }
                 echo "<br>\n";
                 for ($i="65"; $i<="90"; $i++) { # da A a Z
                     Vedi($i);
                 }
                 echo "<br>\n";
                 for ($i=91; $i<=96; $i++) { # [ \ ] ^ _ `
                     Vedi($i);
                 }
                 echo "<br>\n";
                 for ($i=97; $i<=122; $i++) { # da a a z
                     Vedi($i);
                 }
                 echo "<br>\n";
                 for ($i=123; $i<=255; $i++) { # oltre z (caratteri 
speciali)
                     Vedi($i);
                 }
             }
             echo "<br>\n";
             echo "</font><br><hr>\n";
             flush();
         }
     } else {
         echo "File fonts.dir non disponibile<br><hr>\n";
     }
}
if ($default) echo "</font>\n";
echo "</body>\n</html>\n\n";
?>