En effet, le problème c'est que, pour qu'une police s'affiche
correctement, il faut que tous les internautes l'aient. Si un internaute
n'a pas la même police que vous, son navigateur prendra une police par
défaut (une police standard) qui n'aura peut-être rien à voir avec ce à
quoi vous vous attendiez.
La bonne nouvelle, c'est que depuis CSS 3, il est possible de faire télécharger
automatiquement une police au navigateur. Je vous expliquerai dans un
second temps comment faire cela.
Modifier la police utilisée
La propriété CSS qui permet d'indiquer la police à utiliser est
font-family. Vous devez écrire le nom de la police comme ceci :
Code : CSS - Sélectionner | balise
{
font-family: police;
}
|
Seulement, pour éviter qu'il n'y ait de problème si l'internaute n'a pas la même police que vous, on précise en général
plusieurs noms de police, séparés par des virgules :
Code : CSS - Sélectionner | balise
{
font-family: police1, police2, police3, police4;
}
|
Le navigateur essaiera d'abord de mettre la
police1. S'il ne l'a pas, il essaiera de mettre la
police2. S'il ne l'a pas, il essaiera la
police3 et ainsi de suite.
En général, on indique en tout dernier
serif, ce qui correspond à une police standard (qui ne se met que si aucune autre police n'a été trouvée).
Il existe aussi une autre police par défaut appelée sans-serif. Il y a une petite différence entre ces deux polices par défaut : serif possède des pattes de liaison en bas des lettres, tandis que sans-serif n'en possède pas. Oui c'est subtil.
Oui, mais quelles sont les polices les plus courantes qu'on a le "droit" d'utiliser me direz-vous ?
Voici une liste de polices qui fonctionnent bien sur la plupart des navigateurs :
- Arial
- Arial Black
- Comic Sans MS
- Courier New
- Georgia
- Impact
- Times New Roman
- Trebuchet MS
- Verdana
Voici à quoi ressemblent ces polices :
Ainsi, si j'écris :
Code : CSS - Sélectionner | p
{
font-family: Impact, "Arial Black", Arial, Verdana, serif;
}
|
... cela signifie : "
Mets la police Impact, ou,
si elle n'y est pas, Arial Black, ou sinon Arial, ou sinon Verdana, ou
si rien n'a marché mets une police standard (serif)".
En général, il est bien d'indiquer un choix de 3-4 polices (+ serif)
afin de s'assurer qu'au moins l'une d'entre elles aura été trouvée sur
l'ordinateur du visiteur.
Si le nom de la police comporte des espaces, je conseille de l'entourer de guillemets, comme je l'ai fait pour "Arial Black".
Utiliser une police personnalisée avec @font-face
Je trouve le choix des polices trop limité.
Comment puis-je utiliser ma police préférée sur mon site web ?
Pendant longtemps, cela n'était pas possible. Aujourd'hui, avec CSS 3,
il existe heureusement un moyen d'utiliser n'importe quelle police sur
son site. Cela fonctionne bien avec la plupart des navigateurs.
Mais attention, il y a des défauts (ça serait trop beau sinon) :
- Il faudra que le navigateur de vos visiteurs télécharge automatiquement le fichier de la police, qui peut peser parfois 1 Mo voire plus...
- La plupart des polices sont soumises au droit d'auteur, il n'est donc pas légal de les utiliser sur son site. Heureusement, il existe des sites comme fontsquirrel.com et dafont.com qui en proposent un certain nombre libres de droit à télécharger. Je recommande en particulier fontsquirrel.com car il permet de télécharger des packs prêts à l'emploi pour CSS 3. A noter aussi le service Google Web Fonts qui est très bien fait.
- Il existe plusieurs formats de fichier de police, et ils ne fonctionnent pas sur tous les navigateurs.
Voici les différents formats de fichiers de police qui existent et qu'il
faut connaître :
- .ttf : TrueType Font. Fonctionne sur IE9 et tous les autres navigateurs.
- .eot : Embedded OpenType. Fonctionne sur Internet Explorer uniquement, toutes versions. Ce format est propriétaire de Microsoft.
- .otf : OpenType Font. Ne fonctionne pas sur Internet Explorer
- .svg : SVG Font. Le seul format reconnu sur les iPhone et iPad pour le moment.
- .woff : Web Open Font Format. Nouveau format conçu pour le Web qui fonctionne sur IE9 et tous les autres navigateurs.
En CSS, pour définir une nouvelle police, vous devez la déclarer comme ceci :
Code : CSS - Sélectionner | @font-face {
font-family: 'MaSuperPolice';
src: url('MaSuperPolice.eot');
}
|
Le fichier de police (ici
MaSuperPolice.eot) doit ici être situé dans le même dossier que le fichier CSS (ou dans un sous-dossier si vous utilisez un chemin relatif).
Je croyais qu'il y avait plusieurs formats de police ?
Oui, d'ailleurs les .eot ne marchent que sur Internet Explorer. L'idéal
est de proposer plusieurs formats de police : le navigateur téléchargera
celui qu'il sait lire. Voici comment indiquer plusieurs formats :
Code : CSS - Sélectionner | @font-face {
font-family: 'MaSuperPolice';
src: url('MaSuperPolice.eot') format('eot'),
url('MaSuperPolice.woff') format('woff'),
url('MaSuperPolice.ttf') format('truetype'),
url('MaSuperPolice.svg') format('svg');
}
|
Pour tester le fonctionnement, je vous propose de télécharger une police sur fontsquirrel, par exemple
Learning Curve Pro. Cliquez sur "@font-face Kit", cela vous permettra de télécharger un kit prêt à l'emploi avec tous les formats de police.
Votre fichier CSS ressemblera à ceci au final :
Code : CSS - Sélectionner 1
2
3
4
5
6
7
8
9
10
11
12
13 | @font-face { /* Définition d'une nouvelle police nommée LearningCurveProRegular */
font-family: 'LearningCurveProRegular';
src: url('LearningCurve_OT-webfont.eot');
src: url('LearningCurve_OT-webfont.eot?#iefix') format('embedded-opentype'),
url('LearningCurve_OT-webfont.woff') format('woff'),
url('LearningCurve_OT-webfont.ttf') format('truetype'),
url('LearningCurve_OT-webfont.svg#LearningCurveProRegular') format('svg');
}
h1 /* Utilisation de la police qu'on vient de définir sur les titres */
{
font-family: 'LearningCurveProRegular', Arial, serif;
}
|
La première (grosse) section
@font-face
permet de définir un nouveau nom de police qui pourra être utilisé dans
le fichier CSS. Ensuite, nous utilisons ce nom de police avec la
propriété
font-family que nous connaissons, pour modifier l'apparence des titres
<h1>. Et voilà le résultat :