Le faux gras est un problème courant sur le web (attention, je ne parle pas de faux foie-gras) ; il se manifeste quand vous utilisez une police sans « version bold » dans un style gras. Le navigateur ajoute alors un contour sur le caractère et le résultat n’est plus correct, on perd en lisibilité, les « trous » se bouchent et le texte est gonflé.
La faute à ?
Il n’y a pas de coupable, juste une logique d’ordinateur qui va compenser l’absence du fichier correcte par un effet. La bonne graisse n’est pas sur votre ordinateur ou n’est pas chargée en @font-face (via Google Fonts, autres ou à la main), le navigateur prend alors la graisse existante et « se débrouille ».
Le problème n’est pas nouveau, s’applique aussi au print et existe aussi en version faux italique (oblique)
Voici un exemple de faux gras (passez la souris sur le texte pour voir la version corrigée).
Je charge une typo avec Google et cette feuille de styles :
La graisse (font-weight) de 400 correspond à normal (contre 700 pour Bold).
Récapitulation des chiffres :
100 Thin (Hairline)
200 Extra Light (Ultra Light)
300 Light
400 Normal
500 Medium
600 Semi Bold (Demi Bold)
700 Bold
800 Extra Bold (Ultra Bold)
900 Black (Heavy)
J’utilise un h1, qui sera par défaut en gras.
faux-gras
See the Pen faux gras by Benoît Wimart (@benoitwimart) on CodePen.
L’art du bon @font-face
Attention à vos @font-face, voici la bonne manière de définir une famille de graisses :
@font-face {
font-family: 'Fredoka';
font-style: normal;
font-weight: 400;
src: … ; /* le ou les fichiers du Fredoka regular */
}
@font-face {
font-family: 'Fredoka'; /* le même nom */
font-style: normal;
font-weight: 700; /* ici c'est 700 */
src: /* le ou les fichiers du Fredoka Bold */ ;
}
Voici une manière déconseillée :
@font-face {
font-family: 'Fredoka';
font-style: normal;
font-weight: 400;
src: … ; /* le ou les fichiers du Fredoka regular */
}
@font-face {
font-family: 'Fredoka Bold'; /* le nom avec la graisse */
font-style: normal;
font-weight: 700;
src: /* le ou les fichiers du Fredoka Bold */ ;
}
Pratiquer le code apporte de la joie et des problèmes. Réussir une mise en page, finaliser un projet peut être comparable à terminer un puzzle, imbriquer des pièces de Tetris, empiler des cartes ou optimiser le chargement d’un camion de déménagement. Hélas, parfois il manque une pièce au puzzle ou le dernier carton ne rentre pas.
Pour la pièce manquante, avec beaucoup de frustration et si près du but il faudra chercher ou faire avec… et pour le carton, sortir quelques éléments, prendre du recul, recommencer ou prévoir un trajet de plus. Aborder un problème de code est très similaire.
En programmation, les langages évoluent et s’adaptent aux nouveaux besoins. Certains changements solutionnent des problèmes et certaines envies en créent de nouveaux. Vouloir une position « fixe(d) » sur une page peut devenir complexe et résoudre cette mise en page engendre parfois d’autres problèmes.
Je suis graphiste
#Métaphore
Si vous découvrez Illustrator et que votre seule compétence est l’outil rectangle ; vous pouvez déjà faire un logo et peut-être même un excellent logo. Personne ne va vérifier votre niveau d’Illustrator.
Pour les mises en page web, pour commencer il faut savoir s’imposer des limites techniques et toujours opter pour la simplicité.
Je classe les problèmes en deux catégories les bugs mineurs et les autres.
Un bug mineur est un problème d’affichage qui ne perturbe pas le fonctionnement du site et qui ne se voit pas forcement ; un bug présent sur un seul navigateur qui rend la mise en page différente, un peu moins bien, mais « supportable ».
Pour les autres bugs primordiaux…
Ça ne marche pas
L’inspecteur (Chrome ou Firefox) est l’outil le plus efficace, vérifiez l’imbrication du HTML et la bonne écriture du CSS.
Un onglet réseau permet de vérifier le bon chargement des éléments, un rapide coup d’œil peut mieux expliquer le problème.
Un code mal écrit partiellement peut casser le reste de la page, une solution automatique consiste à utiliser le validateur W3C et voir si des balises sont bien ouvertes et fermées.
Si les problèmes persistent, un peu de rangement de code (Beautify, Formater) s’impose.
Ça ne marche toujours pas
Trois voies possibles, résoudre le problème en solo, avec un ami ou avec Internet.
Pour ces trois choix, isoler le problème, refaire une simulation minimum du problème s’impose.
#Métaphore
Si vous écrivez un roman et que vous demandez à des personnes inconnues de corriger vos 300 pages, vous devriez avoir peu de candidats. Par contre, si vous avez un doute sur une règle d’écriture sur une phrase, une expression ou un mot, les amoureux de la langue seront volontaires pour vous éclairer. Les langages de programmation suivent ces mêmes règles, favorisant la pédagogie et sachant différencier une aide, d’un travail.
Bien poser sa question est un exercice difficile et parfois amène la réponse, beaucoup de forums contiennent des « self reply » postés quelques minutes après la question.
Un exemple de code problématique peut être poster sur CodePen ou jsbin en utilsant un service comme DummyImage pour les images.
Bien utiliser @font-face n’est pas toujours simple, voici un exemple avec le caractère Faune.
Le Faune est « Un caractère typographique créé par Alice Savoie » pour « Une commande du Centre national des arts plastiques ».
Un excellent site explique le projet à cette adresse : http://www.cnap.graphismeenfrance.fr/faune/.
Néanmoins, à l’heure actuelle le site étant en « http », si votre site est en « https », la méthode de la feuille de style liée (comme sur Google Font), ne marchera pas sur les navigateurs modernes.
La solution consiste à télécharger la fonte (en .zip sur le site).
Renommer le dossier Webfonts (en bleu sur l’image) en « fonts ».
Copier ce dossier « fonts » dans le même dossier que votre feuille de styles.
Ajouter ce code au début de votre feuille de styles :
Chaque @font-face donne le nom « Faune » au caractère, chaque src correspond aux fichiers sources pour les différents navigateurs (internet Explorer, Safari, Chrome, Firefox…). Le font-weight et le font-style définissent la graisse et le style des fichiers sources, cela permet d’avoir le vrai italique et la bonne graisse automatiquement.
Si vous avez réussi ce code, la font-family pourra être appliqué en CSS :
font-family: 'Faune', sans-serif;
Version moderne
Depuis quelques années les fichiers woff2 et woff sont supportés par la plupart des navigateurs, on peut donc réduire le code.
/* DEMO avec 3 styles */
@font-face {
font-family: Faune;
src: url(fonts/woff2/Faune-Display_Thin.woff2) format("woff2"), /* --- une virgule */
url(fonts/woff/Faune-Display_Thin.woff) format("woff"); /* --- un point virgule */
font-weight: 100; /* ultra-light */
font-style: normal
}
@font-face {
font-family: Faune; /* toujours le nom de la famille */
src: url(fonts/woff2/Faune-Text_Bold.woff2) format("woff2"),
url(fonts/woff/Faune-Text_Bold.woff) format("woff");
font-weight: 700; /* bold */
font-style: normal
}
@font-face {
font-family: Faune;
src: url(fonts/woff2/Faune-Text_Italic.woff2) format("woff2"),
url(fonts/woff/Faune-Text_Italic.woff) format("woff");
font-weight: 400;
font-style: italic /* Italic */
}
Attention ! Si la fonte est déjà sur votre ordinateur, un test sur celui-ci ne prouve pas un CSS correctement écrit, pensez à désactiver la police temporairement. Vérifiez deux fois que les fichiers sont dans les bons dossiers ! Testez sur une autre machine !
Pour profiter de cette période de vacances, je vous propose de découvrir comment coder en Javascript pour faire de la musique.
Mon choix s’est porté sur la librairie Bap, relativement complète et inspirée du MPC, elle semble moins populaire que P5JS, mais a quelques avantages.
Pour cette première approche, je ne charge pas de son (sample) et n’utilise pas d’effect. Par la suite, nous verrons comment faire avec de vrais sons et interagir avec la boucle ou créer des phrases rythmiques selon des données (variables).
See the Pen BAP JS s01e01 by Benoît Wimart (@benoitwimart) on CodePen.
épisode 2
See the Pen BAP JS s01e02 by Benoît Wimart (@benoitwimart) on CodePen.
Les expressions régulières (regex) malgré leur aspect ingrat et rebutant, peuvent rendre de précieux services, même aux graphistes.
Présentes dans la plupart des langages (javascript, php…), on les retrouve aussi dans des logiciels comme Brackets ou InDesign.
Sous Brackets, elles s’activent dans le module « rechercher / remplacer » (qui s’appelle Remplacer) et en activant le bouton « .* » ; elles permettent de rechercher des motifs de chaîne de caractères. Un motif étant une suite de caractères correspondant à une certaine logique comme une date (xx-xx-xxxx), un numéro de téléphone, un mail…
Pour illustrer, supposons que mon texte comporte des années à quatre chiffres et que celle-ci seraient plus valorisées avec un style spécifique.
1999
2020
// devient //
<span class="year">1999</span>
<span class="year">2020</span>
On va utiliser une regex simplifiée.
\d signifie un chiffre (0, 1, 2, 3 à 9)
\d\d signifie deux chiffres (00, 01, 02… 99)
\d\d\d\d signifie quatre chiffres (0000 à 9999), c'est la regex pour une année à quatre chiffres.
Pour remplacer, il faut capturer avec des parenthèses, chaque capture s’appellera « $chiffre ».
(\d\d\d\d) sera stocké dans $1
(\d\d)-(\d\d) seront stockés dans $1 $2
Afin d’aborde la programmation sans être spécifique au JavaScript, une nouvelle page a été ajouté dans la partie « documentation & théorie », la programmation.
La page JavaScript, les bases a été mise à jour pour être plus complète.
Vous trouverez aussi quelques ressources en plus.
À la demande, voici quelques exercices de JavaScript.
Boucle
Voici une boucle qui va de 0 à 9 (soit dix boucles).
exercice 1 : faire une boucle pour 7 à 77.
exercice 2 : faire une boucle qui affiche 0, 10, 20 … 90.
En stockant un élément dans une variable, on peut manipuler celui-ci.
JS Bin
démo
exercice 3 : mettre le texte en gras (il y a un piège).
suite
Voici une requête qui stocke tous les éléments du sélecteur.
var elements = document.querySelectorAll('p');
Hélas, JavaScript ne sait pas faire elements.style.color = "#f60"; pour manipuler plusieurs éléments, il faudra les appeler via des crochets p[0] pour le premier, p[1] pour le deux!ème… et si vous avez une variable avec un chiffre ‘a = 1’ vous pouvez écrire p[a].
JS Bin
helvetica
arial
lucida
Boucle + sélecteur
On combine les deux !
JS Bin
helvetica
arial
lucida
Ces exercices n’ont aucune application, mais sont des bases pour réaliser des choses plus complexes.