Métricas para documentos portátiles

En la tabla siguiente se especifican las métricas de fuente más importantes para las aplicaciones que requieren documentos portátiles y las funciones que permiten que una aplicación las recupere.

Función Métrica Uso
EnumFontFamilies ntmSizeEM Recuperación de métricas de diseño; conversión a métricas de dispositivo.
GetCharABCWidths ABCWidths Colocación precisa de caracteres al principio y al final de los márgenes, los límites de imagen y otros saltos de texto.
GetCharWidth32 AdvanceWidths Colocación de caracteres en una línea.
GetOutlineTextMetrics otmfsType Bits de inserción de fuentes.
otmsCharSlopeRise Componente Y para pendiente de cursor para fuentes en cursiva.
otmsCharSlopeRun Componente X para la pendiente del cursor para fuentes en cursiva.
otmAscent Interlineado.
otmDescent Interlineado.
otmLineGap Interlineado.
otmpFamilyName Identificación de fuente.
otmpStyleName Identificación de fuente.
otmpFullName Identificación de fuente (normalmente, nombre de familia y estilo).

 

Los miembros otmsCharSlopeRise, otmsCharSlopeRun, otmAscent, otmDescent y otmLineGap de la estructura OUTLINETEXTMETRIC se escalan o transforman para que se correspondan con el modo de dispositivo actual y la altura física (como se especifica en el miembro tmHeight de la estructura NEWTEXTMETRIC ).

La identificación de fuentes es importante en esas instancias cuando una aplicación debe seleccionar la misma fuente, por ejemplo, cuando se vuelve a abrir o se mueve un documento a otro sistema operativo. El asignador de fuentes siempre selecciona la fuente correcta cuando una aplicación solicita una fuente por nombre completo. Los nombres de familia y estilo proporcionan entrada al cuadro de diálogo de fuente estándar, lo que garantiza que las barras de selección se coloquen correctamente.

Los valores otmsCharSlopeRise y otmsCharSlopeRun se usan para producir una aproximación cercana del ángulo en cursiva principal de la fuente. Para fuentes romanas típicas, otmsCharSlopeRise es 1 y otmsCharSlopeRun es 0. Para las fuentes en cursiva, los valores intentan aproximar el seno y el coseno del ángulo cursiva principal de la fuente (en grados en sentido contrario a las agujas del reloj pasado vertical); tenga en cuenta que el ángulo cursiva para las fuentes verticales es 0. Dado que estos valores no se expresan en unidades de diseño, no deben convertirse en unidades de dispositivo.

Las métricas de interlineado y colocación de caracteres permiten a una aplicación calcular saltos de línea independientes del dispositivo que son portátiles entre pantallas, impresoras, tipos e incluso plataformas.

Para realizar el diseño de página independiente del dispositivo

  1. Normalizar todas las métricas de diseño a un valor común de resolución ultra alta (UHR) (por ejemplo, 65 536 PPP); Esto evita errores de redondeo.
  2. Saltos de línea de proceso basados en métricas UHR y ancho de página físico; esto produce un punto inicial y un punto final de una línea dentro de la secuencia de texto.
  3. Calcule el ancho de página del dispositivo en unidades de dispositivo (por ejemplo, píxeles).
  4. Ajuste cada línea de texto al ancho de la página del dispositivo mediante los saltos de línea calculados en el paso 2.
  5. Saltos de página de proceso mediante métricas UHR y la longitud física de la página; esto produce el número de líneas por página.
  6. Calcule los alto de línea en unidades de dispositivo.
  7. Ajuste las líneas de texto a la página, utilizando las líneas por página del paso 5 y los alto de línea del paso 6.

Si todas las aplicaciones adoptan estas técnicas, los desarrolladores pueden garantizar virtualmente que los documentos movidos de una aplicación a otra conservarán su apariencia y formato originales.