wingdi.h

Estructura TEXTMETRIC

Definición

typedef struct tagTEXTMETRIC { // tm  
    LONG tmHeight; 
    LONG tmAscent; 
    LONG tmDescent; 
    LONG tmInternalLeading; 
    LONG tmExternalLeading; 
    LONG tmAveCharWidth; 
    LONG tmMaxCharWidth; 
    LONG tmWeight; 
    LONG tmOverhang; 
    LONG tmDigitizedAspectX; 
    LONG tmDigitizedAspectY; 
    BCHAR tmFirstChar; 
    BCHAR tmLastChar; 
    BCHAR tmDefaultChar; 
    BCHAR tmBreakChar; 
    BYTE tmItalic; 
    BYTE tmUnderlined; 
    BYTE tmStruckOut; 
    BYTE tmPitchAndFamily; 
    BYTE tmCharSet; 
} TEXTMETRIC;

La estructura TEXTMETRIC contiene información básica sobre una fuente física. Todas las medidas se dan el unidades lógicas; es decir, dependen del modo de proyección actual del contexto de dispositivo.

Descripción

tmHeight: especifica la altura (ascendente + descendente) de los caracteres.

tmAscent: especifica la altura ascendente (unidades sobre la línea de base) de los caracteres.

tmDescent: especifica la altura descendente (unidades por debajo de la línea de base) de los caracteres.

tmInternalLeading: especifica la cantidad de espacio de separación dentro de los límites del miembro tmHeight. Las tildes u otros caracteres de puntiación pueden ocupar ese área. El diseñador puede asignar este miembro a cero.

tmExternalLeading: especifica la cantidad de espacio de separación extra que la aplicación añade entre líneas. Este área está fuera de la fuente, no contiene marcas y no se ve altarada por llamadas a salida de texto ni en el modo OPAQUE ni TRANSPARENT. El diseñador puede asignar cero a este miembro.

tmAveCharWidth: especifica la anchura media de los caracteres de la fuente (generalmente se define como la anchura de la letra 'x'). Este valor no incluye la parte extra requerida para caracteres en negrita o en cursiva.

tmMaxCharWidth: especifica la anchura del carácter más ancho de la fuente.

tmWeight: especifica el peso de la fuente.

tmOverhang: especifica la anchura extra por cadena que debe añadirse a algunas fuentes sintetizadas. Cuando se sintetizan algunos atributos, como negrita o cursiva, el interfaz de dispositivo gráfico (GDI) o un dispositivo puede tener que añadir anchura a la cadena tanto por carácter como por cadena. Por ejemplo, GDI consigue una cadena en negrita expandiendo el espacio entre caracteres sobrescribiendo con un desplazamiento determinado; o hace una fuente cursiva deslizando la cadena. En cualquier caso, existe un espacio extra sobre la cadena básica. Para cadenas en negrita, ese espacio extra es la distancia del desplazamiento de la sobrescritura. Para cadenas cursivas, el espacio extra es la cantidad que la parte superior de la fuente se desplaza sobre la inferior.

El miembro tmOverhang permite a la aplicación determinar qué cantidad del valor devuelto por por la función GetTextExtentPoint32 para un carácter es la anchura actual del carácter, y cuanto es la anchura extra del desplazamiento por cadena. La anchura actual es la extensión menos la anchura extra de desplazamiento.

tmDigitizedAspectX: especifica el aspecto horizontal del dispositivo para el que se diseñó la fuente.

tmDigitizedAspectY: especifica el aspecto vertical del dispositivo para el que se diseñó la fuente. La proporción entre los miembros tmDigitizedAspectX y tmDigitizedAspectY es la proporción de aspecto del dispositivo para el que la fuente fue diseñada.

tmFirstChar: especifica el valor del primer carácter definido en la fuente.

tmLastChar: especifica el valor del último carácter definido en la fuente.

tmDefaultChar: especifica el valor del carácter que sustituye a los caracteres ausentes en la fuente.

tmBreakChar: especifica el valor del carácter que será usado para definir separaciones de palabras para justificación de texto.

tmItalic: especifica que se trata de una fuente cursiva si es distinto de cero.

tmUnderlined: especifica que se trata de una fuente subrayada si es distinto de cero.

tmStruckOut: especifica que se trata de una fuente tachada si es distinto de cero.

tmPitchAndFamily: especifica información sobre el paso, tecnología y la familia de la fuente física.

Los cuatro bits de menor peso de este miembro especifican información sobre el paso y la tecnología de la fuente. Se defien una constante para cada uno de esos cuatro bits:

Constante Significado
TMPF_FIXED_PITCH Si este bit está activo, la fuente tiene un paso variable. Si está no actuvo, la fuente tiene un paso constante. Mucho cuidado, ya que esto es lo contrario de lo que se deduce del nombre de la constante.
TMPF_VECTOR Si este bit está activo, la fuente es vectorial.
TMPF_TRUETYPE Si este bit está activo, la fuente es TrueType.
TMPF_DEVICE Si este bit está activo, la fuente es de dispositivo.

La aplicación debe ser cuidadosa a la hora de verificar las características codificadas en estos bits, no haciendo suposiciones arbitrarias. Por ejemplo, aparte de tener sus propios bits activos, las fuentes TrueType y PostScript activan también el bit TMPF_VECTOR. Una fuente de mapa de bits de ancho constante tiene todos los bits de menor peso desactivados; una fuente de mapa de bits proporcional activa el bit TMPF_FIXED_PITCH. Una fuente de dispositivo de impresora Postscript activa los bits TMPF_DEVICE, TMPF_VECTOR y TMPF_FIXED_PITCH.

Los cuatro bits de mayor peso del tmPitchAndFamily indican la familia de la fuente. La aplicación puede usar el valor 0xF0 y el operador de bits AND para desechar los cuatro bits de menor peso de tmPitchAndFamily, y obtener un valor que puede ser comparado directamente con los nombres de familia de fuente para encontrar una coincidencia. Para más información sobre familias de fuentes, ver la descripción de la estructura LOGFONT.

tmCharSet: especifica el conjunto de caracteres de la fuente.