• # atlas textuel

    Posté par (Mastodon) . En réponse à la dépêche LibreOffice : de 5.0 à 5.2, un an après. Évalué à 10.

    Concernant l'«atlas textuel», je vais tenter une explication (même si je ne connais pas le code de LibO). Quand on rend du texte, on doit d'abord avoir à disposition le rendu de la fonte utilisée, dans la taille utilisée, et avec divers autres paramètres (la graisse par exemple). C'est le rôle de bibliothèque comme Freetype. Elles prennent en entrée des descriptions vectorielles (TrueType par exemple) et font le rendu de chaque lettre à la demande. Freetype se contente de renvoyer un tableau à deux dimensions de niveaux d'opacité (parce qu'il y a de l'anti-aliasing évidemment), après on l'utilise comme on veut.

    Or, pour pouvoir minimiser les appels OpenGL, il faut avoir un minimum de textures. Donc, pour rendre un texte, on va rendre toutes les lettres dans la même texture et ensuite, rendre le texte grâce à cette texture. Généralement, on utilise le terme d'«atlas de texture» pour décrire ce genre de texture (ça peut aussi être utilisé avec autre chose que des lettres). Peut-être que «text atlas» (dans la VO) est un atlas de texture spécialisé dans le texte (ce qui ne change fondamentalement pas grand chose).

    Pour aller un peu plus loin, créer une telle texture est intéressant, c'est un problème d'optimisation NP-complet: le 2D bin-packing. Il faut donc trouver des heuristiques de manière à maximiser la place utilisée (ou minimiser la place perdue). Si on dispose de toutes les lettres au départ, c'est la version offline. Mais si on a les lettres au fur et à mesure, c'est la version online, beaucoup plus difficile. Il existe des résultats intéressants sur toutes ces versions et des algorithmes d'approximation (pas forcément simple à comprendre).