Non so a quante persone possano interessare queste mie osservazioni ma vista la cura maniacale con cui sto studiando e lavorando sull'argomento forse non sono del tutto inutili, perlomeno non si tratta di "seghe mentali".
Riguardo la sintassi abbreviata "font", le specifiche W3C indicano che bisogna seguire il seguente ordine:
codice:
font-style font-variant font-weight font-size/line-height font-family
Quindi, per fare un esempio:
codice:
{ font: italic small-caps bold 120%/1.5em Arial, sans-serif; }
E fin qui tutto ok. Ho provato a scambiare l'ordine delle prime 3 proprietà ma fino a quando font-size e font-family sono rispettivamente la penultima e l'ultima proprietà sembra non ci sia alcun problema nè con IE8 nè con Firefox 3.6.13.
Ma non è qui che voglio arrivare.
Le solite specifiche indicano altresì che, qualora si utilizzi in "font-family" il nome di un font costituito da più parole
(es. Times New Roman, Trebuchet MS, ecc.), è necessario porre il nome del font tra virgolette, cosa che già avevo letto nella Guida CSS di Base.
Riporto a tal proposito cosa viene riportato nella Guida:
Anche in questo caso i nomi dei font costituiti da più parole vanno racchiusi tra virgolette.
codice:
p { font: bold 12px/1.5 Georgia, "Times New Roman", serif; }
Come potete vedere vengono indicate le virgolette doppie.
Ho quindi provato tale sintassi (uso Win7).
Risultato?
Sia su IE8 che su Firefox 3.6.13 se inserisco "Trebuchet MS" tra virgolette doppie non funziona e il browser visualizza il suo font standard, nel mio caso Times New Roman.
Se tolgo le virgolette nessun problema invece, il font viene visualizzato correttamente.
Perchè?
Perchè bisogna utilizzare le virgolette singole !!
codice:
font: oblique small-caps bold 150% 'Trebuchet MS', serif;
Provare per credere - eccovi il codice:
codice:
<!DOCTYPE html PUBLIC "-//w3c//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/transitional.dtd">
<html>
<head>
<title>Sintassi abbreviata: font</title>
</head>
<body>
<p style="font: oblique small-caps bold 150% "Trebuchet MS", serif;">
font: oblique small-caps bold 150% "Trebuchet MS", serif; - questo non funziona
</p>
<p style="font: oblique small-caps bold 150% Trebuchet MS, serif;">
font: oblique small-caps bold 150% Trebuchet MS, serif; - questo funziona ma non aderisce alle specifiche W3C
</p>
<p style="font: oblique small-caps bold 150% 'Trebuchet MS', serif;">
font: oblique small-caps bold 150% 'Trebuchet MS', serif; - questo funziona e aderisce alle specifiche W3C
</p>
</body>
</html>
Vedrete subito quali esempi funzionano e quali no.
In effetti se si leggono attentamente le specifiche W3C di font-family ci si accorge di questo:
Note: If a font name contains white-space, it must be quoted.
Single quotes must be used when using the "style" attribute in HTML.
Un po' come accade in JavaScript, bisogna fare attenzione quando si inseriscono delle virgolette in una stringa di testo già delimitata da virgolette
(questa però è una mia personale osservazione e non è attinente all'argomento CSS).
Quindi la Guida CSS di base mi sembra fuorviante a tal proposito.
Spero possa essere utile a qualcuno.