Comment fonctionne le rendu des polices?


11

Je me rends compte que je ne sais pratiquement rien sur la façon dont les polices sont rendues sur mon ordinateur.

D'après ce que je peux observer, le rendu des polices est généralement effectué de manière cohérente dans tout le système. Par exemple, les paramètres d'indication de police de sous-pixel que je configure dans mon panneau de configuration DE ont une influence sur le texte qui apparaît sur les bordures de fenêtre, dans mon navigateur, dans mon éditeur de texte, etc. (Je dois remarquer que certaines applications Java présentent une différence notable, donc je suppose qu'elles utilisent un mécanisme de rendu de police différent).

Ce que j'obtiens de ce qui précède est que probablement toutes les applications qui nécessitent un rendu de police utilisent une bibliothèque à l'échelle du système d'exploitation (ou DE).

D'un autre côté, les navigateurs gèrent généralement leur propre rendu via un moteur de rendu, qui prend en charge le positionnement de divers éléments - y compris le texte - selon des règles de flux spécifiques.

Je ne sais pas comment ces deux faits sont compatibles. Je suppose que le navigateur devrait demander au système d'exploitation de dessiner un glyphe à une position donnée, mais comment peut-il gérer le flux de texte sans savoir à l'avance combien d'espace le glyphe prendra? Existe-t-il des appels distincts pour déterminer les tailles de glyphes, afin que le navigateur puisse gérer le flux comme si les caractères étaient de petites cases remplies ultérieurement par le système d'exploitation? (Bien que cela ne s'occupe pas du crénage). Ou le système d'exploitation est-il responsable du dessin d'une zone de texte entière, y compris le flux de texte? Le système d'exploitation renvoie-t-il le glyphe rendu sous forme de bitmap et le laisse-t-il à l'application pour le dessiner à l'écran?


1
La reponse courte est oui".
Graham Borland

@GrahamBorland ...: - / A laquelle des trois alternatives que j'ai décrites est la réponse "oui"?
Andrea

Tous, selon les circonstances. Je vais essayer de composer une bonne réponse.
Graham Borland

Réponses:


9

Vous avez raison de dire qu'en général, les applications utilisent des bibliothèques fournies par le système d'exploitation ou une boîte à outils GUI pour effectuer le rendu des polices.

Les moteurs de polices typiques permettent un certain nombre de modes de fonctionnement. Pour le cas simple, une application peut demander qu'une chaîne de texte soit dessinée à une certaine position, et le moteur s'occupe de tout (mesure, positionnement, dessin des pixels à l'écran, etc.).

Pour les applications qui nécessitent un degré de contrôle plus fin - les navigateurs ou les traitements de texte, par exemple - le moteur exposera les interfaces où l'application peut demander qu'un morceau de texte donné soit mesuré à l'avance. L'application peut ensuite utiliser ces connaissances pour déterminer la quantité de texte qu'elle peut contenir sur une ligne, où les sauts de ligne doivent être, la place qu'un paragraphe prendra, etc. L'application peut toujours demander au moteur de faire le rendu réel. des pixels.

(Il peut y avoir un scénario intermédiaire où le moteur peut prendre un paramètre de largeur maximale, et éventuellement certains paramètres de crénage / remplissage, et rendre automatiquement autant de texte qu'il peut.)

Enfin, le moteur de police peut permettre à l'application de prendre en charge le rendu final du texte, en renvoyant des bitmaps de glyphes pré-rendus à une certaine taille, permettant à l'application de le positionner et de le composer sur l'affichage final. Ou le moteur peut même proposer de renvoyer les données brutes de contour de glyphe pour le rendu avec une boîte à outils vectorielle.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.