Il y a quelques semaines, un tweet stimulant de Corentin of Astora m'a fait découvrir la numération cistercienne :

Le système cistercien permet de représenter tous les entiers de 1 à 9999.

Le plus fascinant est qu'un seul caractère (basé en réalité sur un agrégat de glyphes) peut décrire n'importe quel nombre entier entre 1 et 9999. Pour discriminer les unités, dizaines, centaines et milliers, une simple symétrie est appliquée au glyphe de base et ces formes se combinent merveilleusement pour former un dessin unique.

Était-il dans les cordes d'IndyFont de produire une « police de caractères cistercienne » ? J'ai commencé par étudier les symétries et les éléments récurrents du tracé vectoriel :

Étude des symétries et des tracés...

Le modèle IndyFont s'est bâti pas à pas, de façon à faire apparaître toutes les formes fondamentales, laissant d'abord de côté la question de leur combinaison.

Jeu de chiffres cisterciens (modèle IndyFont).

L'utilisation de ligatures OpenType était clairement exclue ici — il aurait fallu en déclarer et en dessiner des milliers :-/ Cependant, la piste des formes positionnelles m'apparut assez naturelle.

L'idée consistait d'abord à traiter les unités (1, 2, 3…) comme des formes normales et comme des finales, dotées d'une chasse fixe. Puis j'ai imaginé que les dizaines, centaines et milliers pourraient correspondre respectivement aux variantes medial, initial et isolated des formes positionnelles, sous réserve de les soumettre à une métrique dédiée (dont le principe diverge évidemment de la spécification OpenType).

Toute l'astuce repose sur le schéma ci-dessous :

Les flèches rouges indiquent les glyphes de chasse nulle.

On voit alors comment le glyphe composé formant le nombre 123 s'obtient par superposition des glyphes élémentaires assignés à 100, 20 et 3. Il suffit donc d'inhiber la chasse de tous les glyphes non unitaires.

IndyFont permet de déclarer des variantes positionnelles pour n'importe quel caractère. Par exemple, le caractère 1 (U+0031 DIGIT ONE) aura ici pas moins de cinq variantes graphiques : /one et /one.final (signifiant 1), /one.medial (signifiant 10), /one.init (signifiant 100) et /one.isol (signifiant 1000.)

La mauvaise nouvelle, c'est que les formes positionnelles ne fonctionnent pas « telles quelles » dans InDesign. Elles demandent certains réglages (et probablement aussi certains paramètres linguistiques que je n'ai pas examinés en profondeur). Néanmoins, elles nous offrent ici une porte d'entrée pour personnaliser le comportement de la fonte via les styles GREP et les attributs OpenType. Ce qui m'a tiré d'affaire !

Quelques styles GREP à la rescousse… (Capture InDesign dans l'interface en anglais.)

• Pour tester cette jolie police Cistercian-Regular :
ZIP complet (OTF+IDML, 365 Ko)

• Demo YouTube (EN) :