Technique dans le navigateur

De la photo à une police utilisable

Quatre repères transforment une photo oblique en grille ordonnée. Chaque caractère est ensuite découpé, vectorisé et placé dans un fichier de police.

01

Les repères décrivent la feuille

Chaque coin contient un repère ArUco. Son identifiant enregistre le coin, le type de feuille (lettres, ligatures ou vide), la version du modèle et le jeu linguistique. Le programme vérifie les quatre identifiants ensemble, ce qui lui permet aussi de comprendre une page tournée.

Les coins extérieurs fournissent quatre points de référence. Si un repère manque ou si son motif est masqué, la grille ne peut pas être reconstruite de façon fiable. La photo doit donc montrer la page entière.

02

La perspective est corrigée

inktype.cc calcule une homographie à partir des quatre points. Cette transformation ramène la page photographiée en biais vers la géométrie A4 connue du modèle. Les cases retrouvent ainsi leurs positions attendues.

Une homographie corrige la perspective d’une surface plane. Un papier très ondulé, un pli profond ou une page de livre courbée ne se trouve pas sur un seul plan et peut donc déformer les caractères.

03

Les cases sont traitées séparément

Le modèle comporte 11 colonnes et 10 lignes. Le jeu détecté indique quelle lettre appartient à chaque case. Le programme découpe chaque zone dans la page redressée et l’analyse indépendamment.

Un seuil adaptatif sépare l’encre sombre du papier clair. Sensibilité et Seuil déplacent cette limite, pour toute la police ou pour un seul glyphe. Des valeurs élevées conservent les traits pâles, mais récupèrent plus facilement la texture du papier et les ombres.

04

Les pixels deviennent des tracés

ImageTracer suit le bord de l’encre détectée et produit des tracés fermés. Les vecteurs peuvent changer de taille sans faire apparaître de pixels. Ils forment donc chaque caractère de la police finale.

Trois étapes nettoient l’encre au passage. Avant la vectorisation, les petites marques isolées autour de la lettre sont d’abord retirées, jusqu’à la taille fixée par Enlever les taches, sauf la plus grande marque du glyphe. Ensuite, les trous enfermés dans l’encre sont bouchés jusqu’à la taille fixée par Boucher les trous : les petits points blancs disparaissent, et l’intérieur des lettres comme o et e reste ouvert. Pendant la vectorisation, Lissage arrondit les marches d’escalier et les tremblements des bords en pixels, puis le programme y ajuste les courbes.

Les réglages Encre (Sensibilité, Seuil, Lissage, Boucher les trous et Enlever les taches) modifient le tracé lui-même. La position et l’échelle changent l’emplacement des tracés, et la chasse définit l’espace horizontal pris par le caractère dans le texte. Les réglages globaux touchent toute la police, tandis que les réglages locaux corrigent une seule exception.

Le crénage ajuste ensuite les couples de lettres. Le programme mesure l’écart entre l’encre des deux lettres, bande par bande de haut en bas, et rapproche les couples comme AV ou To pour qu’ils paraissent aussi réguliers que des couples droits comme HH. Le curseur Intensité règle l’ampleur de la correction, et les couples suivent tous vos autres réglages.

05

Le navigateur construit le fichier de police

opentype.js rassemble les tracés, les correspondances de caractères, les métriques et le crénage dans une police OpenType, avec les règles qui font apparaître vos ligatures et les versions de vos lettres. Le même résultat alimente l’aperçu en direct afin de vérifier les mots et les espaces avant le téléchargement. À l’export, le navigateur écrit le fichier dans le format choisi (OTF, TTF, WOFF ou WOFF2).

L’analyse lourde s’exécute dans un Web Worker pour garder l’interface réactive. Les réglages restent dans le navigateur et sont retrouvés grâce au nom et à la taille du fichier. La politique de confidentialité décrit ces données plus précisément.