TUTO : Ajout de caractères accentués à n'importe quelle police

La biblitothèque U8g2 a quelques inconvénients

  • elle dispose d'une gamme limitée de polices avec caractères accentués
  • il n'est pas possible de visualiser la forme de la police lors du choix

Ma méthode présentée ici permet :

  • de choisir visuellement une police quelconque de type .ttf parmi des milliers
  • d'y accentuer tous les caractères accentuables souhaités
  • de les transformer en un font Adafruit_GFX_Library

1ere étape :

  1. Choisir visuellement une police .TTF parmi les 1000 ici : https://www.1001freefonts.com/ et la télécharger --> fichier .zip
    par exemple la police Coneria Script:

  2. Choisir le fichier Coneria-Script.zip

  1. Y extraire le fichier Demo_ConeriaScript.tff

2eme étape :
convertir cette police .ttf en format.h sur ce site : truetype2gfx - Converting fonts from TrueType to Adafruit GFX
Pour cela :
4) lancer ce logiciel en ligne : truetype2gfx - Converting fonts from TrueType to Adafruit GFX

  1. avec "parcourir" puis "upload" charger Demo_ConeriaScript.tff
  2. choisir la hauteur de la police à créer .. "20" par exemple
  3. cliquer sur "Get GFX font file" .. un fichier Demo_ConeriaScript.h.html est créé
  4. supprimer l'extension.html

3eme étape :
Ajout des caractères accentués .. pour cela:
8) lancer le logiciel en ligne : https://tchapi.github.io/Adafruit-GFX-Font-Customiser/

  1. cliquez sur le fichier Demo_ConeriaSript.h et copiez/collez l'entièreté de son contenu dans la fenêtre de gauche

  1. cliquez sur "extract" et descendez pour découvrir tous les caractères contenus dans la police originale
    Nous devons maintenant créer le caractère accentué
    Choisissons "é" par exemple :

  2. cliquez sur "+ Add new caracter" et tapez "é"

  1. vous avez interêt à ce niveau de faire une copie du caractère non accentué de "e" pour servir de guide pour créer "é"
    en dernière position on découvre sa grille de construction

  1. Ici je vous laisse découvrir comment ajouter/supprimer des lignes et des colonnes ainsi que l'emplacement de sa partie inferieure .. (ce n'est pas évident car le logiciel n'est pas du tout ergonomique mais on doit arriver à ceci)

  1. cliquez sur "process and Create file"

La fenêtre de droite se remplit avec tous les caractères + le nouveau et son nombre headécimal correspondant

capture 2023-10-27 à 17.07.03

  1. copiez son contenu complet et le collez-le à la place du contenu du fichier Demo_ConeriaScript20Pt7b.h

  1. déplacer ce fichier .h dans Adafruit_GFX_Libraries/Fonts
    C'est fini!

capture 2023-10-27 à 17.17.06

UTILISATION :

  1. ajoutez ces lignes indispensables dans le skech :
#include <Adafruit_GFX.h>
#include <Adafruit_GrayOLED.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>
  1. Puis dans Setup :
#include <Fonts/Demo_ConeriaScript20pt7b.h>
  1. Puis dans Loop:
ecranOLED.setFont(&Demo_ConeriaScript20pt7b);

4) et maintenant le plus important :

si vous devez envoyé sur l'écran "agé de" ... vous devrez écrire :

String s1 = "ag\xE9 de "; // xE9 est la valeur hexadécimale de "é"
String BUFFER = s1;
ecranOLED.setFont(&Demo_ConeriaScript20pt7b);
ecranOLED.DisplayCenter(BUFFER, 40);   // 40 = distance par rapport au sommet

Résultat :

capture 2023-10-27 à 18.16.59

3 Likes

Pas un seul commentaire pour ce boulot qui a certainement demandé pas mal de temps ?

Mon petit grain de sel :
é = 0xE9 correspond à la table ASCII étendue ISO 8859, ou Latin-1, ou Windows-1252.

Merci en tous cas.

petit :heart: rajouté déjà il y a quelques jours et on a enlevé des commentaires respectifs car @jo_6466 avait des soucis pour intégrer ses images.

mais oui, ça va être utile c'est sûr !

Ah OK. Je prête rarement attention aux :heart:.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.