COMPROMA.CNV ET COMPROMA.FTM (macro ou styliseur FontLab 2.5)

(Avant d'utiliser ou de distribuer COMPROMA, veuillez lire le paragraphe "Distrubution", à la fin du présent document)

Introduction

La macro COMPROMA.CNV et le styliseur COMPROMA.FTM remplissent la même fonction et contiennent le même code. L'un comme l'autre permettent de remplacer automatiquement les contours des caractères composés (caractères accentués) par une référence aux caractères originaux correspondants, et de calculer la position des parties dans le caractère composé.

Prenons par exemple le caractère "à" : il est composé du caractère "a" et de l'accent "´". Le programme COMPROMA (macro ou styliseur) va remplacer dans le caractère composé "à" les deux contours du caractère "a" par une référence au caractère original "a", en calculant la position en x et en y de cette partie (en général 0, 0), et fera de même pour l'accent aigu "´" (en général, y = 0, x = <une valeur positive>). Pour les caractères composés de cette manière, nous parlerons désormais de caractères référencés.

Le styliseur a l'avantage d'effectuer l'opération beaucoup plus rapidement, la macro peut être, en revanche, éditée à l'aide de l'éditeur de macros de FontLab 2.5. Les deux fichiers peuvent être lus et modifiés dans les conditions précisées plus loin à l'aide d'un éditeur de texte. Pour l'installation de l'un et l'autre de ces fichiers, se reporter aux indications ci-dessous.

Utilité de COMPROMA

De manière générale, on peut envisager l'utilité des caractères composés de deux points de vue : du point de vue des polices elle-mêmes, les caractères composés permettent une économie substantielle de la mémoire, dans la mesure où les parties des caractères composés n'ont pas besoin d'être redéfinies. De plus, la conversion des contours en points par l'interpréteur Type1 ou TrueType se fera de la même manière dans les caractères originaux et dans les caractères composés. Du point de vue de la conception des polices, les changements opérés sur les caractères originaux n'ont pas à être reproduits dans les caractères composés.

Ces avantages sont cependant limités par un certain nombre de restrictions, liées aussi bien aux différents formats de polices, qu'au fonctionnement des éditeurs de polices (en l'occurrence, FontLab versions 2.5 et 3.00 aussi bien que Fontographer). Ainsi, les possibilités des caractères composés sont beaucoup moins étendues dans le format Type1 que dans le format TrueType. Dans le format Type1 en effet, les caractères référencés ne peuvent comporter que deux parties, et sont incompatibles avec les codages non standard. Le format TrueType ne connaît pas cette restriction, et permet en outre d'agrandir ou de réduire, en x ou en y, les parties de caractère. Lors de l'exportation au format Type1, l'éditeur de polices de caractères peut être amené à convertir les caractères référencés dans les contours correspondants. En outre, l'usage des caractères référencés dans les polices Type1 entraîne une perte de précision dans la position des accents.

Si les caractères référencés sont utiles lors de la modification des contours des caractères, ils sont déconseillés lors des changements métriques, à cause de l'interférence entre la position des parties de caractères et les données métriques. Éditez les caractères "a" et "à" (caractère référencé) dans la fenêtre métrique de Fontographer ou de FontLab. Modifiez l'approche gauche du caractère "a" : vous constaterez que la position relative de l'accent par rapport au "a" sera également modifiée.

Pour toutes ces raisons, et pour d'autres encore, il est utile de pouvoir disposer tantôt des caractères composés aux contours intégralement définis, tantôt de caractères référencés. Les éditeurs de polices permettent de convertir facilement des caractère référencés dans les contours correspondants. Ils ne permettent pas de faire l'opération contraire. COMPROMA comble cette lacune. Vous pourrez ainsi non seulement créer facilement des caractères référencés si vous disposez des contours équivalents, mais vous hésiterez aussi beaucoup moins à remplacer les références par des contours, lorsque cela est nécessaire. Vous pourrez également récupérer facilement les caractères référencés créés par exemple avec Fontographer, exportés au format Type1 (somme toute le meilleur format intermédiaire entre les différents éditeurs de polices) dans FontLab 2.5, puis dans FontLab 3.00, notamment pour créer des hints Type1 ou TrueType de qualité.

Possibilités et limites de COMPROMA

Comment fonctionne COMPROMA

COMPROMA procède, au terme d'une comparaison rudimentaire, mais en général efficace des contours des caractères originaux avec ceux du caractère composé, à l'identification des parties dans le caractère composé, au calcul de leur position respective, et à la création des caractères référencés. Les critères de comparaison sont les suivants : dimension en x et en y du rectangle dans lequel s'inscrit chacun des contours, nombre de lignes droites (lineto), nombre de courbes de Bézier (curveto). Théoriquement, des confusions sont donc toujours possibles, mais pratiquement, elles sont improbables.

Possibilités de COMPROMA

COMPROMA permet de créer des caractères référencés pour des caractères composés comportant jusqu'à cinq contours. Au-delà, le caractère composé restera inchangé. COMPROMA permet également de combiner contours et références à des caractères originaux, en remplaçant les contours correspondant à ceux des caractères originaux par des références équivalentes, et en laissant inchangés les autres contours. COMPROMA permet aussi à l'utilisateur de décider si le programme doit tenir compte ou non du nombre de lignes droites et de courbes (lineto, curveto). Les contours auquel l'utilisateur aurait ajouté quelques points sont alors également reconnus, mais le risque de confusion est alors légèrement accru. Il est également possible de choisir le degré de précision de la reconnaissance (de 0 à 5 unités em).

Options

Au lancement de COMPROMA, après confirmation de l'utilisateur, le programme affiche une boîte de dialogue permettant de déterminer le degré de précision de la reconnaissance (Recognition prec.), en choisissant une valeur comprise entre 0 et 5. La valeur par défaut, et qui convient dans la majorité des cas, est 1, valeur correspondant à la légère déformation des caractères sous l'influence du magnétisme des hints et des lignes guides dans FontLab 2.5. Remarquez qu'une reconnaissance trop imprécise peut entraîner des confusions, mais n'altère en rien le calcul de la position respective des parties du caractère composé. L'autre option permet à l'utilisateur de décider si le programme doit tenir compte du nombre de lignes droites et de courbes (Count nodes) : 1 correspond à oui, 0 à non. Les valeurs supérieures à 1 sont interprétées comme 1.

De quoi est composé COMPROMA

COMPROMA est essentiellement composé de deux subroutines : d'une part la subroutine cp, ainsi que les subroutines dépendantes, et accessoirement la subroutine cpbis, destinée à l'affichage de la boîte de dialogue. Cette première partie du code doit demeurer inchangée. La deuxième partie du programme est occupée par la subroutine run. Cette subroutine comprend d'une part les valeurs par défaut des options de reconnaissance, l'appel à la subroutine cpbis ; d'autre part la liste des caractères composés et des caractères originaux à traiter. Vous pouvez modifier la subroutine run en fonction de vos besoins. La syntaxe de la subroutine run est expliquée ci-dessous.

Syntaxe de la subroutine run

La subroutine run commence de la manière suivante :

{ :run label 1 1 :np def :prec def cpbis

Dans cette ligne, le premier 1 correspond à la précision par défaut de la reconnaissance. Le deuxième 1 précise que le programme doit tenir compte du nombre de lignes droites et de courbes. À la fin de la ligne, la commande cpbis est un appel à la subroutine du même nom, qui lance la boîte de dialogue permettant à l'utilisateur de préciser ses préférences. Cette ligne peut par exemple être modifiée de la manière suivante :

{ :run label 3 0 :np def :prec def

Désormais, la reconnaissance se fera selon une marge de 3 unités em, et ne tiendra pas compte du nombre de lignes droites et de courbes. Le programme ne laisse plus en outre la possibilité à l'utilisateur de modifier ces valeurs par défaut (suppression de la commande cpbis). Vous pouvez donc modifier les valeurs par défaut (mais vous ne pouvez pas les supprimer), et vous pouvez supprimer le lancement de la boîte de dialogue.

Considérons maintenant la deuxième ligne de la subroutine (toutes les autres lignes de la subroutine, à l'exception de la dernière, observent la même syntaxe) :

/Scaron /S /caron 2 cp

/Scaron est le nom du caractère composé, /S le nom du premier caractère original, /caron le nom du deuxième caractère original, 2 le nombre de caractères originaux, cp l'appel à la subroutine principale. Notez que si vous voulez modifiez l'une de ces lignes (ce que vous serez peut-être amenés à faire notamment si vous utilisez des codages personnalisés), vous devez commencer obligatoirement PAR LE CARACTÈRE COMPOSÉ, et NE PAS OUBLIER DE PRÉCISER LE NOMBRE DE CARACTÈRES ORIGINAUX, AUTREMENT DIT DE PARTIES.

Il est tout à fait concevable de créer un caractère référencé avec plus de 2 parties, mais remarquez que le caractère référencé n'est alors plus conforme aux règles du format Type1. Cette possibilité garde cependant tout son intérêt pour le format TrueType, surtout si vous ouvrez le fichier *.vfa (FontLab 2.5) avec FontLab 3, pour l'enregistrer ensuite au format *.vfb (FontLab 3). Vous n'avez alors cependant plus la possibilité de vous servir de COMPROMA, à moins d'exporter la police au format Type1, et de l'importer à nouveau avec FontLab 2.5.

Remarquez aussi que dans notre exemple, les caractères sont identifiés par leurs noms PostScript. FontLab 2.5 permet aussi de les identifier selon d'autres critères (code décimal, ASCII, Unicode), mais les noms Postscript ont l'énorme avantage d'affranchir le programme de la particularité de tel ou tel codage. Pourvu qu'il s'agisse de caractères roman, et pour peu que les caractères existent dans la police, le programme s'accommodera aussi bien d'un codage macintosh que d'un codage windows.

Limites de COMPROMA

FontLab 2.5 est un programme très nettement orienté PostScript, et COMPROMA ne peut donc reconnaître des parties de caractère qui ne seraient pas à la même échelle que dans les caractères originaux (exemple : les fractions, dans certaines polices TrueType). COMPROMA permet cependant, comme il est précisé ci-dessus, de dépasser le nombre de parties autorisé dans le format Type1.

Si COMPROMA permet de combiner contours et références, il peut cependant arriver que le programme supprime un contour sans le remplacer par une référence. Cela se produit pour les raisons suivantes : COMPROMA examine chaque contour du caractère original, supprime dans le caractère composé tous ceux qui se trouvent à la fois dans le caractère composé et dans un caractère original, mais ne crée une référence que si l'intégralité du caractère original se trouve dans le caractère composé. Il est donc conseillé de toujours vérifier le résultat. Cela dit, une telle erreur ne se produit en général que si la subroutine run comporte des erreurs. Par exemple, la ligne

/icircumflex /i /circumflex 2 cp

entraîne cette erreur, alors que la ligne suivante ne l'entraîne pas :

/icircumflex /dotlessi /circumflex 2 cp

Si malgré tout cette erreur devait se produire, augmentez dans la boîte de dialogue (ou dans la première ligne de la subroutine run) la marge d'erreur autorisée.

Installation

Macro COMPROMA.CNV

Copier le fichier COMPROMA.CNV dans le dossier FLW ou dans un autre dossier. Si vous voulez trouver la macro dans le menu déroulant de l'éditeur de macros de FontLab 2.5, modifiez le fichier FLW.INI, qui se trouve dans le dossier FLW, de la manière suivante :

Repérez la section [macros]

Dans la ligne

macros=11

augmentez le nombre 11 (ou tout autre nombre) d'une unité

À la fin de la section, ajoutez la ligne suivante :

macro12=Create Compo;comproma.cnv

ou, si le fichier COMPROMA.CNV ne se trouve pas dans le dossier FLW, faites précéder le nom du fichier par le chemin :

macro12=Create Compo;<chemin>\comproma.cnv

Vous pouvez aussi charger le fichier COMPROMA.CNV à partir de l'éditeur de macros, avec le bouton "File..."

Styliseur COMPROMA.FTM

Copier le fichier COMPROMA.FTM obligatoirement dans le dossier FLW. Modifiez le fichier FLW.INI, qui se trouve dans le dossier FLW, de la manière suivante :

Repérez la section [stylize]

Dans la ligne

stylizenum=24

augmentez le nombre 24 (ou tout autre nombre) d'une unité

À la fin de la section, ajoutez la ligne suivante :

stylize25=Create Compo;comproma.ftm

Distribution

COMPROMA peut être utilisé et distribué librement, mais seulement sous la forme d'origine (fichier COMPROMA.ZIP, incluant le présent document). La première partie du programme ne doit pas être modifiée. La subroutine run peut-être modifiée dans les conditions décrites ci-dessus.

© LeFoNDs