Partager via


Métriques pour les documents portables

Le tableau suivant spécifie les métriques de police les plus importantes pour les applications qui nécessitent des documents portables et les fonctions qui permettent à une application de les récupérer.

Fonction Métrique Utilisation
EnumFontFamilies ntmSizeEM Récupération des métriques de conception ; conversion en métriques d’appareil.
GetCharABCWidths ABCWidths Positionnement précis des caractères au début et à la fin des marges, des limites d’image et d’autres sauts de texte.
GetCharWidth32 AdvanceWidths Placement des caractères sur une ligne.
GetOutlineTextMetrics otmfsType Bits d’incorporation de polices.
otmsCharSlopeRise Composant Y pour la pente du curseur pour les polices italiques.
otmsCharSlopeRun X-component pour la pente du curseur pour les polices italiques.
otmAscent Interligne.
otmDescent Interligne.
otmLineGap Interligne.
otmpFamilyName Identification de la police.
otmpStyleName Identification de la police.
otmpFullName Identification de la police (généralement, famille et nom de style).

 

Les membres otmsCharSlopeRise, otmsCharSlopeRun, otmAscent, otmDescent et otmLineGap de la structure OUTLINETEXTMETRIC sont mis à l’échelle ou transformés pour correspondre au mode d’appareil actuel et à la hauteur physique (comme spécifié dans le membre tmHeight de la structure NEWTEXTMETRIC ).

L’identification de la police est importante dans les cas où une application doit sélectionner la même police, par exemple lorsqu’un document est rouvert ou déplacé vers un autre système d’exploitation. Le mappeur de polices sélectionne toujours la police appropriée lorsqu’une application demande une police par nom complet. Les noms de famille et de style fournissent une entrée dans la boîte de dialogue de police standard, ce qui garantit que les barres de sélection sont correctement placées.

Les valeurs otmsCharSlopeRise et otmsCharSlopeRun sont utilisées pour produire une approximation étroite de l’angle italique main de la police. Pour les polices romaines typiques, otmsCharSlopeRise est 1 et otmsCharSlopeRun est 0. Pour les polices italiques, les valeurs tentent d’approcher le sinus et le cosinus de la main’angle italique de la police (dans le sens inverse des aiguilles d’une montre au-delà de la verticale). Notez que l’angle italique pour les polices verticales est de 0. Étant donné que ces valeurs ne sont pas exprimées en unités de conception, elles ne doivent pas être converties en unités d’appareil.

Les métriques de positionnement des caractères et d’espacement des lignes permettent à une application de calculer des sauts de ligne indépendants de l’appareil qui sont portables sur les écrans, les imprimantes, les types et même les plateformes.

Pour effectuer une mise en page indépendante de l’appareil

  1. Normaliser toutes les métriques de conception à une valeur commune d’ultra-haute résolution (UHR) (par exemple, 65 536 PPP) ; cela évite les erreurs d’arrondi.
  2. Sauts de ligne de calcul basés sur les métriques UHR et la largeur de page physique ; cela génère un point de départ et un point de fin d’une ligne dans le flux de texte.
  3. Calculez la largeur de la page de l’appareil en unités d’appareil (par exemple, pixels).
  4. Ajustez chaque ligne de texte dans la largeur de la page de l’appareil, à l’aide des sauts de ligne calculés à l’étape 2.
  5. Calculez les sauts de page à l’aide de métriques UHR et de la longueur de page physique ; cela génère le nombre de lignes par page.
  6. Calculez les hauteurs de ligne en unités d’appareil.
  7. Ajustez les lignes de texte sur la page, en utilisant les lignes par page de l’étape 5 et les hauteurs de ligne de l’étape 6.

Si toutes les applications adoptent ces techniques, les développeurs peuvent pratiquement garantir que les documents déplacés d’une application à une autre conserveront leur apparence et leur format d’origine.