Carnet Wiki

Version 16 — Juillet 2019 Mist. GraphX

Documentation en cours de rédaction, les todo et changements sont dans le fichier readme du plugin sur la zone

Ce plugin est une ré-écriture du plugin Webfont, visant à rétablir les options qu’il proposait premièrement, et qui suite aux changement de politique du fournisseur, n’étaient plus disponibles.

  • Parcourir la typothèque GoogleFont en pré-visualisant les polices
  • Sélectionner des polices sans écrire la requête a la main (sinon l’informatique perd de son intérêt).

Le plugin insert dans le head et en tête des autres styles les balise link ou style nécessaire. C’est sa fonction première, garantir que vos déclarations de web font seront en premier avant vos autres styles.

Un peut de théorie

En premier lieu dites-vous : les webfonts c’est le mal !

Le chargement de webfonts peut impacter sur le rendu des pages, sur l’accessibilité aux contenus, sur les performances de votre page.

Il convient donc d’en être conscient et de les utiliser en connaissance de cause.

En premier lieu votre déclaration de font que ce soit via @import ou @font-face doit se trouver le plus tôt possible dans le head de la page.

Outre les considérations d’ordre esthétique et typographique, il est recommandé

  • de ne pas utiliser plus de deux ou trois variantes de fonts, afin de ne pas détériorer les performances de chargement de vos pages.
  • De toujours choisir une police de fallback dans vos déclarations css.
  • De toujours déclarer dans vos styles la graisse et le style (weight/style) de votre police dans vos déclarations css, ce sont les styles qui seront utilisé si la police de fallback est utilisé.
  • De vérifier le rendu de votre page sans charger les webfonts afin de juger les différence d’affichage quand la police de fallback est utilisée.

Vous pouvez utiliser un outil comme Fontcatcher : https://meowni.ca/font-style-matcher/, pour choisir et affiner les différences entre votre webfont et la police système de fallback.

Fonctionnalités

  • Insertion auto des polices ajoutées a la pipeline font_list ou depuis la configuration.
  • Ajoute une pipeline pour que les plugins theme puisse activer leurs polices.
  • Propose un sélecteur générique permettant de parcourir l’index GoogleFont (nécessite selecteur_generique).
  • Affiche, prévisualise les fonts présentes dans la pipelines ainsi qu’unlien permettant d’afficher le spécimen sur googlefont.
  • Propose une page permettant de parcourir la typothèque googleFont, avec filtrage, recherche, prévisualisation et affichages des informations (subsets, variantes).

Configuration & utilisation :

GoogleFonts API Key

La Google API APIP Key n’est nécessaire que si vous souhaitez mettre à a jour le fichier json d’index, vous n’en avez pas besoin pour utiliser le plugin.

Cette clef, peut être définie depuis un squelette ou un plugin, via un define.

define('_GOOGLE_API_KEY', 'votre_clef_google_api');

ou via la configuration du plugin.

Méthode d’insertion

Propose plusieurs techniques d’intégration/chargement de webfont

  • insertion standard via la balise link
  • insertion @import via une balise style

Sélection des webfonts

Un sélecteur générique permet de proposer les webfonts disponibles depuis le fichier index google_font la liste des webfonts est retournée sous la forme family:variant,family2:variant3 , les polices configurées sont ajoutées à la pipeline font_list .

Liste des polices chargées

La liste des polices chargées via la pipeline, avec possibilité de pré-visualiser ainsi que le lien vers le spécimen de toutes vos webfonts chargées.

Pour l’intégrateur/trice

Pipeline font_list

Description d’une font dans la pipeline font_list

Dans le cas typique de font-pairing, on distinguera souvent une font lead ou headline et une font de type copy. On peut donc classer nos typos dans la font-list en nommant les clefs du tableau, par type d’utilisation.

Chaque entrée du tableau font-list est constitué ainsi

  • family : Nom de la famille de police
  • variants : italic,bold
  • subsets : les subsets sont nécessaires uniquement pour les navigateurs ne supportant pas la propriété unicode-range, pour les autres les subsets sont ignorés, et le navigateur choisira ce qui est nécessaire dans le DOM.

Ajout de webfonts depuis un squelette

via le fichier mes_options.php

// Exemple d'ajout dans le pipeline "fonts_list" :
$GLOBALS['spip_pipeline']['fonts_list'] .= "|skel_webfonts";
 
function skel_webfonts($fonts) {
	$fonts = array(
		'headline'=> array(
			'family'=> 'Open Sans',
			'variants'=> array('300','300italic','regular','italic','600')
		),
		'copy'=> array(
			'family'=> 'Montserrat',
			'variants'=> array('regular','800')
		)
	);
    return $fonts;
}

Ajout de webfonts depuis un plugin

Utilisation de la pipeline fonts_list() .

Ajouter au paquet.xml

<pipeline nom="fonts_list" inclure="prefix_plugin_pipelines.php" />

Dans le fichier prefix_pipelines.php

function prefix_plugin_fonts_list($fonts){
	$fonts = array(
		'headline'=> array(
			'family'=> 'Open Sans',
			'variants'=> array('300','300italic','regular','italic','600'),
			'subsets'=>array()
		),
		'copy'=> array(
			'family'=> 'Roboto Condensed',
			'variants'=> array('700','800'),
			'subsets'=>array()
		)
	);
	
	return $fonts;
}

Sources & Docs

https://developers.google.com/fonts/docs/developer_api

Article sur l’implémentation du webfont loader Présentation par cssTricks du webfontLoader : https://css-tricks.com/loading-web-fonts-with-the-web-font-loader/

Google font : webfont loader https://github.com/typekit/webfontloader

ZACH LEATHERMAN (Filament Group) : webfont loading strategies : https://www.zachleat.com/web/comprehensive-webfonts/

Etapes du chargement d’une font dans le navigateur : https://font-display.glitch.me/

Outils pour gérer les polices de fallback :

Utiliser les system-ui-fonts : (technique utilisée par Bootstrap4) :
https://www.smashingmagazine.com/2015/11/using-system-ui-fonts-practical-guide/

Font matcher : https://meowni.ca/font-style-matcher/

Techniques de chargement de fonts :

Les stratégies de chargement de font comparées par https://www.zachleat.com/web/comprehensive-webfonts/

Google webfont :

Utilisation du service google web font, via une requête.

Les avantages : comme expliqué dans les considérations techniques de GoogleFont (https://developers.google.com/fonts/docs/technical_considerations), lorsque un navigateur web envoie une requête vers le service GoogleFont, la requête est étudié et renvoie ce qui est nécessaire au navigateur, le format le plus optimisé ainsi que les range unicode nécessaires pour la langue de consultation.

Les navigateurs web on tous leurs différences au niveau du rendu.
Certains vont préférer rendre la typo de fallback d’abord, et afficher ainsi l’information pour ensuite l’enrichir des styles. D’autres navigateurs masque le bloc pour n’effectuer le rendu que quand la police est chargée.

Le webfonloader permet donc entre autre d’uniformiser et contrôler ces différences de comportement entre les navigateurs.

Css : @font-face

La rêgle css @font-face : https://developer.mozilla.org/fr/docs/Web/CSS/@font-face

/* latin */
@font-face {
  font-family: 'Open Sans';
  font-style: italic;
  font-weight: 400;
  src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://fonts.gstatic.com/s/opensans/v15/xjAJXh38I15wypJXxuGMBogp9Q8gbYrhqGlRav_IXfk.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2212, U+2215;
}

Explication sur les subsets :

Des plugins spip ou techniques d’intégration d’utilisation de font/polices

Plugin spip permettant d’utiliser les images typographiques via un modèle https://contrib.spip.net/Choix-Police-Typo

Le filtre image_typo :

https://www.spip.net/fr_article3325.html

Typothèques

https://fontlibrary.org/ https://www.fontsquirrel.com/tools/webfont-generator