07) Modification de la police de caractères.

Prétexte parfait pour vous montrer comment procéder, vous n’aurez pas à effectuer ces manipulations, car les fichiers définitifs qui accompagnent ce tutoriel ont bénéficié de cette petite amélioration. Une fois encore, j’insiste sur le fait que ce chapitre ne concerne que les programmeurs en C++ qui systématiquement aiment bien personnaliser leurs programmes. Pour les autres, passez directement au chapitre suivant.

Repenser la forme du symbole.

Construire une police de caractère comme celle de ce petit programme n’est pas élémentaire du tout, car le programmeur doit gérer de nombreuses contraintes, accepter des compromis. Bref, ce n’est pas un long fleuve tranquille. Par exemple, dans l’état actuel ce n’est pas moins de 1826 déplacements géométriques (Mouvements et codages d’empreintes.) que le dessinateur a déterminé, sachant que pour certains symboles l’artiste a envisagé entre trois et cinq variantes avant de se décider à en sélectionner une. Parmi les contraintes qu’il faut prendre en compte on peut citer :


Muni d’une page quadrillée, (Et surtout de patience et de motivation !) on commence par griffonner une ou plusieurs formes. Puis on fige la candidate sélectionnée dans la table de définition. Enfin on teste le résultat. Précisé dans l’encadré rose situé au dessus de la Fig.15 en chapitre 5, on vérifie que la déformation résultant de la vectorisation ne déforme pas trop l’aspect final. Éventuellement on modifie un peu la forme. Bref, ce n’est pas de la programmation en ligne, un nombre significatif de tentatives s’avère incontournable. Ceci dit, pour quelques symboles cette approche progressive reste relativement rapide et « artistiquement intéressante. C’est parti pour le n qui avait été tracé moins large (Voir la Fig.34 A.) que pour le standard probablement pour économiser des octets, car initialement il était question de loger entièrement la police en EEPROM …
Sur la Fig.34 est indiqué en rouge le nombre d’octets consommés pour définir le symbole dans la table des caractères. Plusieurs variantes ont été envisagées, et la seule façon de sélectionner la plus appropriée consiste à les graver toutes à la plus petite grandeur, celle qui déforme le plus, puis à la plus grande si pour diminuer la « distorsion » on a opté pour un tracé non symétrique. (Voir les fiches nommée Modifier un caractère dans la table.)

Les essais se font avec la table complémentaire.

Modifier la police de base logée en EEPROM s’avère rapidement indigeste si l’on désire tester diverses variantes car chaque fois on doit corriger Police_de_caracteres_en_EEPROM.ino, le téléverser vers la carte NANO, puis à son tour téléverser Compilateur_pour_TEXTE.ino pour procéder aux essais. Loger le caractère en cours d’élaboration en mémoire flash sera bien plus rapide, car seul le programme d’exploitation sera à transférer pour examiner le résultat. Le problème, c’est que la police logée en EEPROM est sondée en premier, et si le caractère à tracer s’y trouve, la police complémentaire sera ignorée. Il faut donc enlever l’empreinte actuelle de l’EEPROM :
• Effacer le codage du caractère n dans Police_de_caracteres_en_EEPROM.ino, téléverser le programme dans la carte NANO. Activer le Moniteur pour vérifier le résultat.
• Les trois variantes imaginées présentent maintenant une largeur standard, il faut « prévenir » le programme d’exploitation Compilateur_pour_TEXTE.ino que ce n n’est plus étriqué : .
* Effacer case n : {Largeur_caractere = 4; break;} dans void Traiter_le_Caractere() .
* Effacer case n : {Largeur_caractere = 4; break;} dans voidCalcule_les_limites().
• Ajouter la définition du symbole à expérimenter au début de la table complémentaire par exemple, il ne sera pas obligatoire d’en augmenter la taille 850 qui est très largement dimensionnée :

• Tester toutes les variantes sur la pyrograveuse et sélectionner la plus pertinente.

Remplacer l’empreinte d’un symbole en EEPROM.

Outre que cet exemple correspond effectivement à une modification tardive du logiciel, c’est l’exemple idéal car il constitue le pire des cas. En effet, l’EEPROM est actuellement saturée. Il n’y reste qu’un seul octet non utilisé. Hors la définition du nouveau n fait passer sa consommation de 12 à 18 octets soit six de plus. Ils ne sont pas disponibles, il faut donc faire de la place. Notons au passage que l’EEPROM ne contenant que les symboles de base, il est peu probable que nous soyons amenés à en modifier beaucoup. C’est précisément dans cette optique que tous les caractères spéciaux ont été logés en mémoire de programme.
• Effacer le codage du caractère dans Police_de_caracteres_en_EEPROM.ino, ce qui libère exactement six octets.
• Remplacer l’empreinte du caractère n, du coup l’EEPROM est à nouveau saturée.
• Téléversez Police_de_caracteres_en_EEPROM.ino et activez le Moniteur par sécurité.
• Ajouter la définition du au début de la table complémentaire :
• Téléversez Compilateur_pour_TEXTE.ino et activez le Moniteur.
• Testez la variante avec comme largement décrit dans les chapitres précédents puis examen final sur la pyrograveuse. C’est parfait ? Alors l’affaire est classée.
Presque deux pages pour décrire la technique à privilégier. Franchement, c’est bien trop, car au final quand on s’y risque on se rend compte que c’est presque élémentaire. La Fig.35 atteste du fruit ce ces travaux. Même si c’est subtil, la nouvelle forme montrée ici avec la plus petite grandeur est visuellement plus belle. Et comme sur les 850 octets réservés on n’en consomme réellement que 802, toutes les initiatives seront possibles. Alors chères programmeuses et chers programmeurs … à vos armes !

La suite est ici.