Vue d'ensemble
Les polices d’un appareil embarqué ne fonctionnent pas comme celles d’un ordinateur. Ce guide explique leur conversion, puis vous accompagne dans leur création avec PicoPixel : choix d’une police intégrée ou importée, prise en charge de l’arabe et de l’hébreu, maîtrise de la taille des polices chinoises, japonaises et coréennes. Vous apprendrez aussi à supprimer les polices inutilisées après vos essais.

Pourquoi les polices doivent-elles être converties ?
Sur un ordinateur, un fichier de police .ttf ou .otf décrit les caractères à l’aide de courbes mathématiques. La machine dispose de suffisamment de mémoire et de puissance pour les dessiner avec netteté à la taille demandée.
Un petit appareil (un ESP32, une puce de montre connectée, un minuscule contrôleur d'affichage) ne peut généralement pas faire cela. Il n'a pas la mémoire ni la puissance de traitement nécessaires pour redessiner des courbes à la volée. LVGL adopte donc une approche différente : au lieu de courbes, il stocke chaque lettre sous forme de petite image prédessinée (un bitmap) à une taille fixe. C'est bien plus léger à gérer pour l'appareil.
PicoPixel effectue cette conversion pour vous. À partir du fichier d’origine, il génère les images bitmap nécessaires à LVGL pour les caractères et les tailles que vous avez choisis.
Comme chaque lettre est prédessinée à une taille fixe, une police LVGL convertie est verrouillée à la taille choisie. Une police de 16px ne peut pas être étirée à 32px et rester nette. Si vous avez besoin de texte à deux tailles différentes, créez la police aux deux tailles (voir Créer une police ci-dessous, où vous pouvez choisir plusieurs tailles à la fois).
C'est aussi pourquoi les polices ont un coût réel sur un appareil : chaque lettre, à chaque taille, occupe un peu d'espace en mémoire. La majeure partie de ce guide vise à maintenir ce coût faible, en n'incluant que les caractères et les tailles réellement utilisés.
Polices intégrées et vos propres polices
Lorsque vous créez une police, vous avez deux points de départ :
- Polices intégrées : une sélection de polices courantes et testées, comme Noto Sans, Roboto, Open Sans, Montserrat, Poppins, Inter, Lato, Nunito et Source Sans 3. Elles constituent un bon point de départ.
- Polices importées : utilisez votre propre fichier
.ttfou.otf, par exemple pour respecter une identité visuelle ou couvrir une langue absente des polices intégrées.
Si vous importez votre propre police, utilisez un fichier de police statique (par exemple Roboto-Regular.ttf) plutôt qu'un fichier de police « variable » (comme Roboto-VariableFont.ttf). Les fichiers statiques se convertissent bien plus fiablement. Les fichiers .ttf simples fonctionnent généralement le mieux.
Dans les deux cas, saisissez votre texte dans l’aperçu pour vérifier le rendu avant de créer la police.
Créer une police
Ouvrez le panneau Create Font. Voici comment remplir les champs :

- Choisissez votre police : sélectionnez une police intégrée et sa graisse, par exemple Regular ou Bold, ou importez votre propre fichier depuis l’onglet d’import.
- Nom de la police : choisissez un nom facile à reconnaître dans la liste du projet, surtout si vous utilisez plusieurs polices.
- Taille (px) : sélectionnez une ou plusieurs tailles. Des préréglages comme 16, 22 et 32 sont accessibles en un clic. Chaque taille est générée séparément ; ne conservez que celles dont vous avez besoin.
- Letters : choisissez les caractères à inclure, par exemple Standard pour l’anglais de base, Latin, Greek, Cyrillic, Hebrew, Arabic ou Thai.
- Asian : ce menu regroupe le chinois, le japonais et le coréen, dont les particularités sont expliquées plus bas.
La section Advanced propose des réglages plus précis. Bits per Pixel définit le nombre de nuances de gris utilisées pour les caractères : une valeur élevée améliore le lissage mais augmente la taille du fichier ; 4 convient dans la plupart des cas. Les champs de plages de caractères et de symboles permettent de choisir exactement ce qui sera inclus.
Toutes les polices ne comprennent pas toutes les langues. Si vous choisissez une écriture non latin et que votre aperçu affiche des cases vides au lieu de lettres, cette police ne le couvre pas — passez à une police intégrée conçue pour cette écriture, ou importez-en une qui le fait. PicoPixel vous avertira lorsque vous choisissez une écriture que toutes les polices ne prennent pas en charge.
Écritures de droite à gauche : arabe et hébreu
L’arabe et l’hébreu s’écrivent de droite à gauche et demandent une prise en charge particulière. Vous pouvez la préparer directement dans le panneau Create Font.
- Dans le menu déroulant Letters, choisissez Arabic ou Hebrew. C'est l'étape importante : elle indique à PicoPixel d'inclure le bon jeu de caractères pour cette écriture (les caractères anglais de base sont incluses aussi, de sorte que les chiffres et le texte latin fonctionnent toujours).
- PicoPixel suggérera une police adaptée à cette écriture, par exemple Noto Sans Arabic. Utilisez la suggestion (ou une autre police adaptée à cette écriture) plutôt qu'une police latine simple qui ne contiendra pas les lettres.
- Vérifiez l'aperçu en direct. Si les lettres s'affichent correctement, c'est bon. Si vous voyez des cases, la police choisie ne prend pas en charge l’écriture — choisissez-en une autre.
Les lettres arabes changent de forme selon leur position dans le mot, et le texte se lit de droite à gauche. À l’export, PicoPixel détecte le texte arabe, persan ou hébreu et active les paramètres LVGL nécessaires, notamment pour la liaison des lettres. Vous n’avez pas à modifier les fichiers de configuration manuellement.
L'essentiel à retenir : choisir Arabic ou Hebrew dans le menu déroulant Letters lors de la création de la police est ce qui inclut ces caractères. Si vous créez d'abord une police normale et n'ajoutez du texte de droite à gauche que plus tard, les caractères manqueront — créez la police avec le bon système d’écriture sélectionné dès le départ.
Chinois, japonais et coréen

CJK est l'abréviation courante pour le chinois, le japonais et le coréen. Ces langues sont particulières car elles possèdent beaucoup de caractères — le coréen en a environ 11 000 et le chinois bien plus de 20 000. Rappelez-vous que chaque caractère est prédessiné et stocké sur l'appareil. Inclure une police CJK complète pourrait ajouter des mégaoctets, ce qui ne tiendra tout simplement pas sur la plupart des appareils embarqués.
Pour réduire la taille de la police, n’incluez que les caractères réellement affichés. Une interface n’en utilise souvent qu’une centaine, bien moins qu’une police complète.
Voici comment procéder :
- Dans le menu déroulant Asian, choisissez Korean, Chinese ou Japanese.
- Trouvez le champ Symbols (dans la section Advanced) et collez le texte réel que votre interface affichera — chaque libellé, bouton et message. PicoPixel n'inclut un glyphe que pour chaque caractère qu'il trouve là.
- Pour vous aider à démarrer, PicoPixel pré-remplit ce champ avec des mots d'interface courants (comme « Paramètres », « Confirmer », « Annuler », etc.) dans la langue choisie. Ajoutez votre propre texte.
Ainsi, une police qui aurait pu peser plusieurs mégaoctets ne pèse plus que quelques centaines de kilo-octets.
Seuls les caractères que vous listez dans Symbols sont inclus. Si votre interface affiche ultérieurement un caractère que vous n'avez pas ajouté, il apparaîtra comme une case vide. Lorsque votre texte change, revenez et mettez à jour le champ Symbols, puis recréez la police.
Pour le CJK, importer la police spécifique que vous souhaitez (plutôt que de vous fier à une police générale) vous donne le plus de contrôle, et coller une copie complète et définitive du texte de votre interface garantit que rien n'est oublié.

Nettoyage : supprimer les polices inutilisées
Les essais de tailles de police peuvent vite encombrer le projet. Si vous créez une police en 16px et en 22px pour comparer, seule la taille retenue reste utile.
Dans la section Fonts de vos ressources, cliquez sur Remove unused fonts. PicoPixel vérifie tous les widgets et supprime en un clic les polices qui ne sont plus utilisées, pour libérer de l’espace.
C'est la façon facile d'expérimenter avec les tailles. Créez quelques tailles, voyez laquelle s'intègre le mieux dans votre design, puis cliquez sur Remove unused fonts pour nettoyer le reste. Chaque police de la liste affiche sa taille et ses paramètres de qualité, il est donc facile de voir d'un coup d'œil ce que vous avez.
« Remove unused fonts » ne supprime que les polices auxquelles aucun widget ne fait référence, votre design ne changera donc pas. Vous pouvez également supprimer une seule police vous-même en faisant un clic droit dessus dans la liste. Si vous supprimez quelque chose par accident, annuler le rétablit immédiatement.