Fontista Control en ligne de commande

Fontista Control relit une fonte glyphe par glyphe et liaison par liaison. Tout ce qu'il mesure et tout ce que la revue contient se lit aussi sans fenêtre : un script, une chaîne de fabrication ou un assistant IA peut lancer la relecture, lire les résultats, corriger la fonte, puis recommencer.

Où est le programme

SystèmeCommande
macOS"/Applications/Fontista Control.app/Contents/MacOS/fontista-control"
Windowsfontista-control.exe, dans le dossier décompressé
Linux./fontista-control, dans le dossier décompressé (ou fontista-control après install.sh)

fontista-control --help rappelle toutes les options. Les exemples ci-dessous écrivent fontista-control.

Les trois commandes sans fenêtre

fontista-control Ma-Fonte.ttf --glyphs-report=glyphes.tsv          # relevé des glyphes
fontista-control Ma-Fonte.ttf --links-report=liaisons.tsv          # relevé des liaisons (paires)
fontista-control Ma-Fonte.ttf --export=revue.json                  # revue de la passe en cours
fontista-control Ma-Fonte.ttf --links --export=revue-liaisons.json # revue des liaisons
  • La fonte : .fontista, .glyphs, .glyphspackage, .ufo, .designspace, .ttf, .otf, .woff, .woff2. Plusieurs fichiers binaires d'une même famille (Regular.ttf Bold.ttf) deviennent les styles d'une seule fonte. Une fonte variable donne un style par instance nommée.
  • - à la place du nom de fichier écrit sur la sortie standard : --glyphs-report=- | grep fix.
  • --pass=N lit une autre passe que la passe en cours ; --data=dossier lit les revues d'un autre dossier.
  • Ces commandes lisent la revue enregistrée, sans jamais la modifier ; elles ne touchent pas non plus aux réglages de l'application. Code de sortie : 0 si tout est écrit, 1 si la fonte est illisible ou le fichier impossible à écrire.
  • Durée indicative : une seconde pour le relevé des glyphes d'une fonte variable de 12 000 glyphes ; une dizaine de secondes pour les 1 470 paires d'une fonte latine (la mise en forme passe par le moteur OpenType de Fontista).

Relevé des glyphes (--glyphs-report)

Texte tabulé (TSV, UTF-8), une ligne d'en-tête, puis une ligne par glyphe et par style, dans l'ordre de la fonte.

ColonneContenu
glyphenom du glyphe (a, a.ss01, uni0627.fina)
carcaractère montré (le sien, sinon celui de sa base)
codecodes Unicode, U+0061 (plusieurs séparés par une espace), vide pour un glyphe non codé
groupecatégorie de Control (Latin de base, Chiffres, Arabe…)
stylenom du style (Regular, Bold, Italic…)
chasseavance horizontale, en unités de la fonte
contoursnombre de contours
xmin ymin xmax ymaxboîte du dessin, en unités de la fonte ; vides pour un glyphe sans dessin
alertevide : caractère codé (hors espaces et caractères invisibles) sans aucun dessin ; styles : le nombre de contours change d'un style à l'autre (interpolation à vérifier) ; plusieurs alertes séparées par une espace
statutrevue en cours : ok (validé), fix (à corriger), vide (pas encore vu)
notenote de la revue (tabulations et retours à la ligne remplacés par des espaces)
reperesrepères posés sur le dessin pour ce style : x;y;note, séparés par |

Une ligne par paire et par style. Les paires sont celles de la vue Liaisons (touche L) : minuscules, capitales, accentuées, arabe, chacune composée par la fonte entre des lettres neutres, avec ses formes contextuelles.

ColonneContenu
paireles deux caractères, a→n
groupeLiaisons : minuscules, Liaisons : capitales, Liaisons : accentuées, Liaisons : arabe
stylenom du style
glyphesglyphes choisis par la fonte pour la paire, séparés par une espace (F.court h)
toucheoui si les deux lettres se touchent, non, ou ligature (un seul glyphe)
ecartplus petite distance entre les deux lettres quand elles ne se touchent pas, en unités
angleangle le plus fort entre les deux contours là où ils se croisent, en degrés (0 : raccord tangent)
noeudbosse au raccord : hauteur@x;y (unités de la fonte)
croisementsnombre de croisements visibles des deux contours
suspecteoui si la jonction mérite un regard : angle de plus de 30°, nœud de plus de 0,4 % du cadratin, ou écart dans un groupe dont les lettres se lient d'habitude
oupoint du croisement le plus marqué, x;y
statut noterevue des liaisons en cours, comme pour les glyphes

Les coordonnées sont celles de la paire composée : l'origine est le point de départ de la première lettre, sur la ligne de base.

Revue exportée (--export, bouton Exporter)

JSON, le même que celui du bouton Exporter de l'application et de la version en ligne :

{
  "police": "Chancelière",
  "fichier": "Chanceliere-Italic.ttf",
  "application": "Fontista Control 1.3.0",
  "passe": 1,
  "exporte": "2026-10-29T09:45:15Z",
  "total": 258, "vus": 12, "valides": 11, "a_corriger": 1,
  "position": "g",
  "liste_a_corriger": [
    {
      "nom": "g", "car": "g", "code": "U+0067", "groupe": "Latin de base",
      "note": "queue trop courte",
      "reperes": [ { "x": 300.0, "y": -250.0, "style": "Italic", "note": "boucle trop ouverte" } ]
    }
  ],
  "statuts": { "a": "ok", "g": "fix" }
}
  • statuts : chaque élément vu, ok ou fix. Ce qui n'y figure pas n'a pas encore été vu.
  • liste_a_corriger : les éléments fix, avec la note et les repères (position en unités de la fonte, style s'il y en a plusieurs).
  • Revue des liaisons : "liaisons": true, nom est la paire (a→n), et chaque élément porte aussi glyphes (les glyphes choisis par la fonte) et mesure (raccord 34°, écart 12…).

Importer

Un fichier au même format s'importe dans la passe en cours : menu Revue › Importer, glisser le fichier sur la fenêtre, ou fontista-control Ma-Fonte.ttf --import=revue.json. Seuls statuts et, pour les éléments fix, la note et les repères de liste_a_corriger sont lus. Un script ou une IA peut donc préparer une liste (« ces douze glyphes me semblent trop gras ») que l'on relit ensuite dans Control.

Passes

La première passe couvre toute la fonte. Une nouvelle passe (bouton Nouvelle passe) ne reprend que les éléments marqués fix, à côté de leur version d'avant : on corrige, on enregistre (Control recharge la fonte tout seul), on ouvre une passe, on ne revoit que ce qui a changé. Les revues sont rangées dans le dossier de l'application :

SystèmeDossier
macOS~/Library/Application Support/Fontista Control/revues/
Windows%APPDATA%\Fontista Control\revues\
Linux~/.local/share/Fontista Control/revues/

Leur format interne peut changer d'une version à l'autre : pour un script, passer par l'export et l'import.

Boucle type avec un script ou une IA

# 1. relire : les glyphes à corriger et les alertes
fontista-control Ma-Fonte.ttf --glyphs-report=- | awk -F'\t' 'NR>1 && ($12!="" || $13=="fix")'
# 2. les liaisons suspectes
fontista-control Ma-Fonte.ttf --links-report=- | awk -F'\t' '$10=="oui"'
# 3. corriger la source (Fontista, script Lua, fontmake…), recompiler, recommencer

Pour un assistant IA (Claude, par exemple) : lui donner l'export JSON de la revue et le relevé, lui demander de corriger la source, puis relancer les relevés pour vérifier. Les repères situent chaque défaut en unités de la fonte, ce qui suffit à retrouver le nœud ou le segment en cause.

Avec Fontista

  • Dans Control, « Modifier dans Fontista » (touche E) ouvre le glyphe montré, ou les deux lettres d'une paire, dans la vue Édition de Fontista. Une source (.fontista, .glyphs, .ufo…) s'y ouvre au besoin ; une fonte compilée (TTF, OTF) y retrouve sa source déjà ouverte par le nom de famille.
  • Dans Fontista, Fichier › Relire dans Fontista Control (⌘⇧C, Ctrl+Maj+C) enregistre la fonte et l'ouvre dans Control sur le glyphe en cours. Control suit ensuite chaque enregistrement.
  • Sous macOS, un script peut faire de même avec une adresse : open "fontista://glyphes?fichier=/chemin/Ma-Fonte.fontista&noms=a%20n" (Fontista) ou open "fontista-control://glyphes?fichier=/chemin/Ma-Fonte.ttf&noms=g" (Control). Paramètres, encodés comme dans une URL : fichier, famille, noms (noms de glyphes séparés par des espaces), codes (codes Unicode en hexadécimal, même ordre, quand les noms diffèrent entre la source et la fonte compilée).