Créer une police à partir de son écriture manuscrite
(kokorobot.ca)- Comme le texte manuscrit de la BD hakum variait en taille et en lisibilité d’une page à l’autre, l’autrice a décidé de créer une police TTF à partir de sa propre écriture plutôt que d’utiliser une police existante
- Le deuxième essai, réalisé à partir d’une écriture sur papier numérisée, paraissait plus naturel et organique que l’écriture numérique faite sur tablette graphique
- Le périmètre du projet a été limité à A-Z, a-z, aux chiffres 0-9 et à la ponctuation de base, tandis que les fonctions étendues comme le gras, l’italique ou les ligatures ont été exclues de l’objectif
- Le processus consiste à nettoyer les images numérisées dans Gimp, les découper en PNG, puis ajuster dans FontForge les contours des glyphes, les marges gauche/droite et le kerning
- Lors de l’autotrace et de l’export, des problèmes de validation comme missing points at extrema ou self intersecting peuvent apparaître, ce qui fait qu’une police manuscrite demande beaucoup de post-traitement
Pourquoi transformer son écriture en police
- Le texte de la BD hakum était auparavant écrit directement en numérique avec une tablette graphique
- Le résultat était correct, mais même sur une seule page, la taille des lettres variait souvent, ce qui nuisait parfois à la lisibilité
- Comme l’autrice ne voulait pas utiliser une police existante, elle a décidé d’en créer une à partir de sa propre écriture
- L’objectif était une police TTF pour une publication web, avec un jeu de caractères limité
- pas de version grasse ni italique
- c’était une première expérience de création de police et d’utilisation de FontForge, donc il existe peut-être de meilleures méthodes
Deux tentatives et le vocabulaire de base de la typographie
- La première police a été créée à partir d’une écriture manuscrite numérique réalisée sur tablette graphique
- La deuxième police a été créée à partir d’images numérisées d’une écriture sur papier, et l’écriture sur papier, moins précise, paraissait plus organique et naturelle
- En créant la police, l’autrice a appris le vocabulaire lié à la structure des caractères, et comprendre le rôle de chaque élément aide à faire de meilleurs choix de design et à produire une police plus fonctionnelle
- Ascender : partie d’une minuscule qui dépasse au-dessus de la x-height
- Baseline : ligne de base sur laquelle reposent la plupart des lettres et sous laquelle descendent les descendantes
- Cap Height : ligne indiquant la hauteur de la plupart des majuscules
- Descender : partie qui descend sous la baseline, comme pour p ou q
- X-Height : distance entre la baseline et la mean line des minuscules
Images numérisées et nettoyage dans Gimp
- Les caractères à produire étaient les majuscules A-Z, les minuscules a-z, les chiffres 0-9 et la ponctuation de base comme la virgule, le point d’exclamation ou le point d’interrogation
- Au départ, l’autrice a tracé au crayon dans un carnet les lignes de référence pour la baseline, la cap height, la x-height et les descendantes, puis a dessiné les lettres
- Comme le fait de dessiner entre des lignes guides rendait le résultat trop rigide, elle a ensuite écrit plusieurs fois la phrase
"The quick brown dog jumps over the lazy fox"en majuscules et en minuscules- cette phrase contient toutes les lettres nécessaires de a à z
- le fait d’écrire une phrase donnait de meilleures formes, car l’attention n’était pas trop focalisée sur chaque lettre
- sur une grille, l’attention se portait surtout sur les contraintes
- La meilleure phrase a été sélectionnée pour la création de la police, avec quelques lettres réutilisées depuis les versions tracées sur grille
- À cause de cette méthode, il a ensuite fallu réaligner numériquement la cap-height, la x-height et les descendantes de chaque caractère
- Les images numérisées des lettres ont été nettoyées dans Gimp via
Color > Thresholdpour supprimer les gris - À cause des caractéristiques du crayon, du papier et de l’absence de grille, certains défauts des lettres ont été corrigés avec l’outil crayon de Gimp
- dans Tool Options, toutes les dynamiques ont été désactivées pour obtenir des traits nets
- Les lettres nettoyées ont été copiées dans un nouveau document Gimp, dont la taille était prévue pour accueillir la plus grande et la plus large, le M majuscule
- À cette étape, l’autrice vérifiait aussi que l’épaisseur des traits ne variait pas trop
- Toutes les lettres ont ensuite été exportées individuellement en PNG dans le dossier du projet
Création des glyphes dans FontForge
- FontForge a été choisi parce qu’il fonctionne sous Linux et qu’il avait été recommandé par l’entourage ; l’expérience d’utilisation a été positive
- Lorsqu’on crée un nouveau projet, la Font View Window s’ouvre et affiche sous forme de tableau tous les emplacements de glyphes de la police
- Dans
Element > Font Info, on renseigne les informations de la police, puis on ajoute son nom sous PS Names - Pour exporter en TTF, il faut passer dans General de la même fenêtre et régler la Em size sur 1024
- pour les polices TrueType, l’UPM utilise par convention une puissance de 2, comme 1024 ou 2048
- les polices OTF ont des exigences différentes
- à l’époque des caractères métalliques, chaque lettre était placée dans son propre bloc d’espace d’une hauteur standard, et cette hauteur était appelée « em »
- Un double-clic sur un glyphe dans la Font View ouvre la Character View
- c’est là qu’on dessine ou modifie le glyphe
- grâce à l’interface à onglets, on peut les examiner un par un ou comparer des mots côte à côte à partir d’un fichier texte préparé
- Dans la liste des calques en bas à gauche, on choisit le calque Back, puis on importe le PNG de la lettre avec
File > Import - Ensuite, on crée le contour du glyphe de l’une des deux façons suivantes
- en dessinant le contour à la main
- en choisissant le calque Fore puis
Select > Autotracepour générer automatiquement le contour
- Autotrace se base sur l’image d’arrière-plan pour créer un contour avec points de contrôle et courbes de Bézier, mais cela peut produire trop de points ou des problèmes d’extrema manquants
- Une fois la forme fermée créée, le glyphe apparaît aussi dans les autres fenêtres
Marges latérales et aperçu
- Pour chaque glyphe, on ajuste les side bearings gauche et droit afin de définir sa largeur finale
- Pour centrer automatiquement tous les glyphes, on peut utiliser
Metrics > Auto Width - Pour placer tous les glyphes au centre de leur largeur, on peut utiliser
Metrics > Center In Width - Lorsqu’on corrige les contours, il peut être utile de désactiver le calque de référence
- Pour recommencer un glyphe, on le sélectionne dans la Font Window puis on utilise
Edit > Clear - Pour effacer uniquement le calque de référence, on utilise
Edit > Clear Background - Dans le champ de texte au-dessus de la zone de travail de la Character View, on peut saisir un mot ou des caractères arbitraires après la lettre courante pour prévisualiser leur apparence côte à côte
- Il faut répéter ce processus pour tous les glyphes, et en particulier ajuster les side bearings du glyphe Space, sinon l’espace entre les mots sera trop grand
Réglage du kerning
- Le kerning consiste à ajuster l’espacement entre les caractères pour améliorer la lisibilité
- Dans la Font Window, on va dans
Element > Font Info, puis dans l’onglet GPOS de Lookups, et on clique sur Add Lookup - Dans la liste Type, on choisit
Pair Position (Kerning) - Dans la colonne Feature, on clique sur la flèche à côté de
New, on sélectionneKern Horizontal Kerning, puis on valide - On sélectionne ensuite le nouvel élément GPOS créé, puis on clique sur Add Subtable en conservant le nom par défaut
- Les lettres à kern sont sélectionnées par glisser-déposer dans les deux tableaux
- il faut sélectionner à la fois les majuscules et les minuscules
- pour sélectionner deux ensembles dans un même tableau, on utilise Shift
- En cliquant sur pairings, une version agrandie des paires de glyphes s’affiche dans la partie basse de la fenêtre
- On fait alors glisser le deuxième glyphe pour le rapprocher ou l’éloigner du premier jusqu’à ce que toutes les combinaisons paraissent correctes
Tests et validation à l’export
- Pour tester la police et le kerning dans FontForge, on peut utiliser
File > Print - Le texte par défaut n’affiche pas toutes les combinaisons possibles, donc on peut ajouter son propre texte
- kern_pairings.txt contient toutes les combinaisons de kerning et peut être collé dans l’écran de test
-
Problèmes possibles lors de l’export
- lors de l’export avec
File > Generate Fonts, FontForge peut signaler certains caractères à vérifier - Non-integral coordinates signifie qu’un ou plusieurs points du contour d’un glyphe ont une position décimale comme 2.25
- il faut sélectionner le glyphe concerné, aller dans
Element > Validation > Find Problems, cocher"non-integral coordinates", puis appliquer la correction de façon répétée - dans une police manuscrite qui ne dépend pas fortement d’une précision extrême, déplacer les points vers des coordonnées entières très proches peut ne pas changer grand-chose visuellement
- Missing points at extrema signifie que les points de contrôle d’une courbe poussent celle-ci au-delà de ses limites extrêmes
- il faut ajuster les points de contrôle pour que le point le plus haut ou les autres points extrêmes de la courbe soient marqués par des points jaunes
Element > Add Extremapeut aider, mais peut aussi déformer le glyphe ou créer davantage de problèmes de non-integral coordinates- même avec cette erreur dans le journal, la police pouvait être générée, mais de subtiles déformations gênantes pouvaient apparaître
- ce problème d’extrema est fréquent avec les polices manuscrites irrégulières ou lorsqu’on utilise Autotrace
- Self intersecting signifie que le contour du glyphe se recoupe lui-même
- il faut vérifier toutes les lignes et supprimer les recouvrements
- lors de l’export avec
Choix du TTF et installation
- Pour cet usage, le TTF (TrueType Font) était suffisant
- L’OTF n’était pas nécessaire, car il n’y avait pas de projet de stocker un grand nombre de glyphes, ni d’ajouter gras et italique comme styles séparés, ni d’utiliser des ligatures
- Le contenu utilisant la police étant publié sur le web, le TTF convenait bien à cet objectif
- Pour générer la police avec tous les glyphes de la Font View, on utilise
File > Generate Fonts - Dans le menu déroulant sous le nom de la police, on choisit le format de sortie TTF, puis on valide pour enregistrer la police dans le dossier du projet
- Il suffit ensuite de déplacer la police générée dans l’emplacement système prévu pour les polices
- Ressources de référence et exemples d’utilisation
- FontForge documentation : documentation de FontForge
- My spellbook : comment installer des polices sous Linux
- kaizah, smile : exemples d’utilisation de la police créée
1 commentaires
Avis sur Hacker News
Bon aperçu de FontForge ; je l’avais moi-même un peu essayé par le passé
C’est un peu rustique, mais je ne sais pas vraiment si les concurrents commerciaux sont tellement meilleurs. Je ne connais même pas leurs noms
Et le site web est vraiment superbe. Singulier, avec une personnalité très marquée
Si vous avez macOS, vous pouvez essayer Glyphs(/Mini) ou RoboFont, dont les périodes d’essai sont suffisantes. Cela dit, ce que j’attends le plus, ce sont les outils de nouvelle génération, y compris les outils web comme fontra.xyz
Tout ce que j’ai vu jusqu’ici autour de MFEK avait l’air vraiment chouette
https://mfek.org/
Une seule phrase du type « quick brown fox » ne suffit souvent pas
100r.co vaut aussi vraiment le détour
Devine et Rekka tiennent leur studio à bord du voilier Pino, et documentent leur vie, leurs voyages et leurs projets
https://youtu.be/T3u7bGgVspM?si=dnkROEB15z77Pq7Z vers la 6e minute
Bon résumé de FontForge
Comme l’article le laisse entendre, il existe aussi des options plus simples et plus automatisées pour créer une police à partir de son écriture manuscrite. On peut ensuite retoucher la police obtenue
https://www.calligraphr.com/en/ s’appelait autrefois MyScriptFont
https://apps.microsoft.com/detail/microsoft-font-maker/9N920...
La police créée ressemble pas mal à celle que j’ai faite
https://imgur.com/a/g8bIoUY
Je ne suis pas allé très loin dans les optimisations comme le crénage, mais les 3 ou 4 logiciels que j’ai essayés étaient tous extrêmement frustrants, cassés ou difficiles à utiliser. C’était peut-être ma façon de m’en servir, et les logiciels payants sont sans doute bien meilleurs. Bravo d’être allé jusqu’au bout
Je me demande quelle est la manière la plus simple de fusionner plusieurs polices en une seule
VS Code ne permet pas de définir des polices par langage ou par token. Par exemple, on ne peut pas mettre Comic Sans pour les commentaires et une autre police pour le reste, même si des réglages comme l’italique ou le gras sont possibles
J’aime les polices depuis qu’elles ont commencé à se généraliser avec la mode du Desktop Publishing dans les années 80
On peut dire qu’elles ont été utilisées à l’excès pendant un temps, mais c’est l’une des premières choses qui m’ont fait sentir que le design comptait. En tout cas, c’est une belle police et l’aperçu est excellent
Je me demande s’il y a vraiment des gens qui créent des polices avec MetaFont/MetaPost
Je ne sais même pas si FontForge a des fonctions de scripting. Je ne l’ai jamais utilisé moi-même, je me suis contenté de lire à son sujet, mais j’ai lu les cinq volumes de “Computers and Typesetting” de Knuth
https://thottingal.in/blog/2022/10/05/nupuram/ https://twitter.com/santhoshtr/status/1577596445917470722 https://smc.org.in/fonts/nupuram https://typoday.in/spk_papers/Santhosh_Thottingal_Typoday202...
#!/usr/bin/fontforge, puis de faire simplementchmod +xet de l’exécuter tel quelCela dit, personnellement, je ne m’en suis servi que pour des manipulations reproductibles limitées, comme corriger de petits problèmes dans des polices existantes ou retoucher des glyphes isolés ; la satisfaction peut donc varier selon les besoins
[0]: https://fontforge.org/docs/scripting/python.html
Je me demande s’il existe déjà une startup d’enrobage IA pour la création de polices
Les prompts seraient intéressants. Par exemple : « conçois une police de Noël adaptée aux enfants, avec une forte influence balkanique mais aussi une touche de brutalisme soviétique »
Commercialement aussi, il faudrait que l’usage de polices exotiques devienne culturellement plus naturel. Je comprends pourquoi Helvetica, Roboto, Noto Sans et des polices plus modernes sont utilisées, mais le monde est franchement devenu un peu fade
C’était une occasion manquée que le billet de blog lui-même n’utilise pas sa propre police
La phrase ne devrait pas dire que « le chien saute par-dessus le renard », mais que le renard saute par-dessus le chien ;-)
Parce que le chien est paresseux et que le renard est rapide