2015-08-13 3 views
1

J'utilise Cairo pour le rendu de texte sur un périphérique intégré. J'ai évalué l'API de texte 'toy' (c'est-à-dire cairo_show_text) et cela fonctionne très bien et est efficace. Malheureusement, il ne supporte que les opérations les plus élémentaires et supprime toujours la forme immédiatement.Mise en cache de glyphes du Caire

Ce que je dois faire est de dessiner un texte simple avec remplissage et coup. Lorsque je fais cela en utilisant l'API légèrement plus compliquée (cairo_text_path) cela fonctionne mais les performances chutent à des niveaux inacceptables.

Il est un peu difficile de trouver de la documentation, mais je ne l'ai trouvé cette astuce:

Soyez conscient cairo_show_text() met en cache Glyphes donc est beaucoup plus efficace si vous travaillez avec beaucoup de texte.

Où puis-je lire à propos de cette mise en cache glyphe et comment le faire pour cairo_text_path? Idéalement, y a-t-il un exemple de code pour cela? J'ai seulement besoin de supporter ce cas d'utilisation simple.

Répondre

1

cairo_text_path convertit un texte avec tous les glyphes en un chemin et l'ajoute au contexte. Rendu de ce chemin est coûteux en raison de nombreux segments - des dizaines de mouvements, des lignes, des courbes pour chaque glyphe. Les glyphes en cache par cairo_show_text signifient que les glyphes/caractères répétitifs sont rendus une fois et enregistrés dans un format beaucoup moins cher (comme des lignes de balayage, des triangles ou des bitmaps) pour des occurrences ultérieures. Parce que la police ne change pas entre les deux, ce recyclage n'est pas un problème.

Vous pouvez effectuer cette mise en cache par vous-même, en rendant les glyphes sur image surfaces et en les utilisant comme pattern, ou simplement en utilisant bitmap fonts depuis le début.