Implémenter la typographie
Comment nous en sortir avec le traitement typographique ? La solution au problème de la « notation musicale » implique le traitement de nombreux objets représentant les têtes de notes, portées, hampes, etc.
Si dix ans sont nécessaires pour devenir un maître graveur, comment les simples programmeurs que nous sommes pourraient-ils intégrer leur métier ?
La réponse est simple : nous ne le pouvons pas ! La typographie relevant d'un jugement humain, les personnes ne peuvent être remplacées. Beaucoup de tâches pénibles peuvent cependant être automatisées : si LilyPond parvenait à gérer la plupart des situations usuelles correctement, ce serait un grand pas en avant pour l'édition informatisée. Les cas particuliers peuvent être traités manuellement. Au fil du temps, le logiciel pourra être révisé afin d'automatiser de plus en plus d'actions, de sorte que les ajustements manuels seront de moins en moins nécessaires.
Comment avons-nous construit un tel système ? Nous avons tout d'abord écrit le programme en C++. Cela signifie que nous, développeurs, avons figé ses fonctionnalités dans le code. Cela est vite apparu insatisfaisant :
- Si certains éléments doivent être traités manuellement, les utilisateurs doivent se servir du moteur de formatage. Par conséquent, les règles et paramètres ne peuvent être fixés lors de la compilation, mais doivent être accessibles lors de l'exécution.
- Graver est une affaire de jugement visuel, donc une affaire de goût. Nous savons que les utilisateurs peuvent ne pas être d'accord avec nous. Ils faut donc qu'il aient accès aux définitions des styles typographiques.
- Enfin, nous redéfinissons continuellement les règles de formatage, et avons donc besoin d'une approche souple des règles. Le C++ implique une méthode de groupement des règles qui ne correspond pas au fonctionnement de la notation musicale.
Une architecture flexible est évidemment nécessaire. Celle-ci doit prendre en compte les règles de formatage, le style typographique et les décisions de formatage individuelles.
Suite : Architecture de programme flexible, votre alliée pour régler, triturer, et développer les règles de formatage.