4) Les polices de caractère dans processing

Précédent | 5/16 | Suivant

Pour comprendre la logique de l’emploi des polices dans processing, il faut se rappeller que processing sert à fabriquer des applications, et pas des mise en page destinée a être lues par d’autre logiciels. Utiliser une police dans processing signifie donc faire entre cette police dans le logiciel que vous allez créer, pour que cette application soit indépendante ensuite de votre machine. La police sera donc dans l’application, prête a être utilisée soit pour afficher des textes, soit pour générer des PDF par exemple.

Deux méthodes

Il y a deux méthodes, pour faire court, utilisable actuellement dans processing. La première, la plus basique et la plus sûre, consiste à fabriquer une police par processing et pour processing, puis l’importer dans l’animation. Processing crée en fait une série d’image à une taille donnée, ce seront ces images qui seront utilisées dans l’animation. Cette méthode est facile mais les polices sont donc alors des images et plus des vecteurs, ce qui pose des problèmes surtout si on veut produire des pdf’s au final...

La deuxième, plus récente, consiste a utiliser une police de votre ordinateur. Elle est plus aléatoire mais permet d’utiliser des polices vectorielles

Attention : la méthode d’importation des polices fait l’objet de modifications et d’amélioration de version en version. Depuis la version 1.0, les méthodes ont subi plusieurs changements, et probablement à l’avenir d’autres méthodes et fonctions vont apparaitre. Restez donc au courant via le site de Processing.

Méthode "simple" : créer une police pour Processing

Cette méthode se fait en 4 étapes
1) créer le fichier de police
- Dans le menu "Tools", sélectionner "create font".

Une boite de dialogue apparait, qui vous liste les polices présentes dans votre ordinateur. Choisissez celle qui vous convient et sélectionnez la taille à laquelle vous allez l’utiliser. c’est relativement important : Processing va générer une image pour chaque lettre, à la taille choisie ici. Si vous décidez d’employer cette police ensuite à une taille supérieur, Processing va étirer les images et le résultat sera moche. A l’inverse, ne choisissez pas une taille trop grande, inutile d’utiliser des fichiers trop lourds.

2) Déclarer la police
On va déclarer l’utilisation de cette police dans l’entête du sketch Processing. Comme une variable. Le nom de la variable est libre, pas de caractère spéciaux comme d’hab’. Ici on utilise une variable appellée "font".

PFont mapolice;

3) Charger le contenu de la police
On va ensuite dans le setup, charger la police dans notre "variable" appelée "mapolice".
Ensuite on va dire à processing que l’on veut employer cette police cette police, et la taille à laquelle on va l’utiliser. Ici, en 32. Remarquez que l’on ne fait plus mention du fichier de police (en .vlw), mais uniquement du nom de la variable.

void setup(){
mapolice = loadFont("masuperpolice.vlw");
textFont(mapolice, 32);
}

4) Ecrire
Enfin, on va utiliser cette police avec la fonction "text" :

void draw(){
text("voici mon texte", 15, 50);
}

La limite de cette méthode, c’est que les polices sont transformées en images, et que leur utilisation en dehors de la taille prévue risque de produire un affichage aliasé assez moche. Cette méthode est donc recommandée lorsque la police sera employée à taille fixe.

Deuxième méthode : importer une police du système

Cette deuxième méthode est instable : les concepteurs de processing sont en train de consolider cet aspect du logiciel, cet article risque donc de devenir obsolète dans l’avenir.

Lister les polices disponibles
On va commencer par demander à processing de lister les polices présentes dans le système de l’ordinateur.

void setup() {
 String[] fontList = PFont.list();
 println(fontList);
}

Ces deux lignes vont permettre de lister toutes les polices disponibles dans la partie "log" du sketch.

Une fois la police choisie, on mettra ce code en commentaire ou le supprimera pour éviter cet affichage à chaque lancement du sketch.

Choisir et essayer
On peut alors copier/coller le nom d’une des polices de caractère et utiliser la fonction createFont(). Le désavantage de cette méthode est que toutes les polices présentes dans le système ne sont pas compatibles avec processing. Lesquelles le sont ? Mystère, il faut essayer. Processing signale par une erreur assez explicite le fait que la police est utilisable ou non lors du lancement du sketch. La déception est parfois grande.

PFont mapolice; // variable de type police

void setup() {
 // String[] fontList = PFont.list();
 // println(fontList);
 mapolice = createFont("TrebuchetMS", 32);
 textFont(mapolice,100); // utiliser en taille 100 pour vérifier le lissage
}

Dès lors, la police est utilisable. Elle reste vectorielle ce qui permet :
- de l’employer dans toutes les tailles sans problème d’affichage en mauvaise résolution
- de l’employer pour la création de pdf en gardant sa finesse à l’impression.

void draw(){
text(second(),10,width/2);
 }

Evolution

Il semble que la fonction textMode() permette de déterminer le comportement des polices de manière plus précise en usant de la première méthode, notamment pour la création de PDF. Elle est succintement documentée. L’évolution de processing va certainement stabiliser l’emploi des polices, surveillez donc la documentation officielle et les forums régulièrement.