Sur cette page

Qt Distance Field Generator Manuel

Si l'interface utilisateur d'une application contient beaucoup de texte, cela peut entraîner un impact léger, mais perceptible, sur les performances lors de son premier affichage à l'utilisateur. C'est particulièrement vrai si le texte est affiché dans plusieurs polices différentes ou s'il utilise un grand nombre de caractères distincts (ce qui est courant, par exemple, dans des systèmes d'écriture tels que le Hanzi, le chinois écrit).

En effet, afin de pouvoir afficher le texte efficacement par la suite, Qt consacre un certain temps à créer des ressources graphiques pour chacun des glyphes, qui seront ensuite réutilisées. Ce processus a lieu la première fois qu’un glyphe est affiché dans la scène.

Pour les utilisateurs avancés qui souhaitent optimiser les performances au démarrage, il est possible de pré-générer ce cache de polices, à condition que le type de rendu utilisé soit Text.QtRendering. L’outil Qt Distance Field Generator peut être utilisé pour pré-générer le cache, soit pour tous les glyphes des polices, soit uniquement pour une sélection de glyphes dont on sait qu’ils seront affichés pendant une phase critique.

Remarque : il s’agit d’un outil pouvant être utilisé par les utilisateurs avancés pour optimiser leur application d’une manière qui ne peut pas être effectuée automatiquement par Qt. Pour la plupart des cas d’utilisation courants, le comportement par défaut de Qt sera suffisant.

Interface utilisateur du Qt Distance Field Generator

Utilisation générale

Utilisez l’ Qt Distance Field Generator de la manière suivante :

  • Chargez un fichier de police via Fichier > Ouvrir une police. Si le fichier de police est volumineux, un temps d’attente sera nécessaire pendant la lecture des polices et la génération des champs de distance.
  • Une fois cette opération terminée, sélectionnez les glyphes que vous souhaitez enregistrer dans le cache pré-généré. Il s’agit idéalement des glyphes utilisés par votre application lors d’une phase critique en termes de performances, afin que la génération préalable ait un impact visible sur les performances.
  • Enfin, cliquez sur « Enregistrer » pour enregistrer le nouveau fichier de police.

Remarque : pour modifier une police de cette manière, vous devez vous assurer que sa licence ne l'interdit pas.

Sélection des glyphes

Les glyphes peuvent être sélectionnés de plusieurs façons. La plus simple consiste à cliquer sur la grille de glyphes pour sélectionner un glyphe particulier. Vous pouvez annuler la sélection en cliquant à nouveau sur le glyphe.

De plus, vous pouvez utiliser la liste des plages Unicode pour sélectionner tous les glyphes correspondant aux caractères d’une plage donnée.

Si vous souhaitez vous assurer de pré-générer les glyphes d’une chaîne spécifique depuis votre interface utilisateur, vous pouvez utiliser la fonction Sélectionner > Sélectionner une chaîne.

Remarque : ces deux dernières méthodes de sélection s’appuient sur la table CMAP de la police et n’effectuent aucun ajustement de forme.

Utilisation du fichier

Une fois que vous avez préparé un fichier, l’étape suivante consiste à le charger dans votre application. Le fichier enregistré est une copie du fichier de police d’origine et peut donc être utilisé de la même manière que n’importe quel autre fichier de police. De plus, il contient une table de polices spéciale qui est reconnue par Qt et utilisée pour préremplir le cache de glyphes lorsque la police est utilisée dans l’ Qt Quick.

Vous pouvez, par exemple, charger la police à l’aide d’une instance de ` FontLoader ` dans le code de votre application. Lorsqu’elle est utilisée pour afficher du texte dans un élément ` Text ` dont la propriété ` renderType ` est définie sur ` Text.QtRendering ` (valeur par défaut), le cache pré-généré sera alors chargé et utilisé.

Mesure des performances

Pour analyser l’impact de la génération du champ de distance sur votre application, vous pouvez définir la variable d’environnement ` QT_LOGGING_RULES ` sur ` "qt.scenegraph.time.glyph=true"`.

Lorsque vous utilisez des polices normales sans cache intégré, vous obtiendrez un résultat similaire à celui-ci :

qt.scenegraph.time.glyph: distancefield: 50 glyphs prepared in 16ms, rendering=15, upload=1

Si vous avez pré-généré tous les glyphes utilisés, la sortie ressemblera plutôt à ceci :

qt.scenegraph.time.glyph: distancefield: 50 pre-generated glyphs loaded in 2ms

Dans ce cas, le temps nécessaire à la préparation des champs de distance utilisés pour le rendu dans l’application a été réduit d’une image complète (16 ms) à 2 ms. Vous pouvez également utiliser cette sortie pour vérifier que tous les glyphes utilisés sont bien chargés à partir du cache et pour identifier les phases problématiques du cycle de vie de votre application en termes de performances.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.