Estructura FONTOBJ (winddi.h)

La estructura FONTOBJ se usa para proporcionar a un controlador acceso a información sobre una instancia determinada de una fuente.

Sintaxis

typedef struct _FONTOBJ {
  ULONG     iUniq;
  ULONG     iFace;
  ULONG     cxMax;
  FLONG     flFontType;
  ULONG_PTR iTTUniq;
  ULONG_PTR iFile;
  SIZE      sizLogResPpi;
  ULONG     ulStyleSize;
  PVOID     pvConsumer;
  PVOID     pvProducer;
} FONTOBJ;

Miembros

iUniq

Especifica una realización distinta de la fuente. El controlador puede usar este valor para identificar una fuente GDI que podría haber almacenado en caché o para identificar la realización de un controlador de su propia fuente. Si este miembro es cero para una fuente GDI, la fuente no debe almacenarse en caché.

iFace

Especifica el índice del dispositivo para una fuente de dispositivo, que se registró mediante una llamada a DrvQueryFont. Si la fuente es una fuente GDI, este miembro solo tiene significado para GDI y el controlador debe omitirla.

cxMax

Especifica el ancho, en píxeles, del glifo más grande de la fuente especificada.

flFontType

Es un valor que especifica el tipo de la fuente. Este miembro puede ser una combinación de las marcas enumeradas en la tabla siguiente. (Sin embargo, tenga en cuenta que FO_GRAY16 y FO_NOGRAY16 son mutuamente excluyentes).

Marca Significado
FO_CFF Fuente OpenType postscript.
FO_DBCS_FONT Font admite páginas de códigos DBCS.
FO_EM_HEIGHT Marca interna del controlador TrueType.
FO_GRAY16 Los mapas de bits de fuente son cuatro bits por píxel (alfa).
FO_MULTIPLEMASTER Varias fuentes Master (Type1 o OpenType).
FO_NOGRAY16 Indica que el controlador de fuente no puede (o no lo hará) escala de grises una realización de fuente determinada.
FO_POSTSCRIPT Fuente Postscript (Type1 o OpenType).
FO_SIM_BOLD Fuente en negrita simulada por el controlador.
FO_SIM_ITALIC Fuente cursiva simulada por el controlador.
FO_TYPE_DEVICE Fuente específica del dispositivo.
FO_TYPE_OPENTYPE Fuente OpenType.
FO_TYPE_RASTER Fuente de mapa de bits.
FO_TYPE_TRUETYPE Fuente TrueType.
FO_VERT_FACE Fuente vertical.
 

Si se establece la marca de FO_RASTER, los glifos escritos en la estructura STROBJ especificada son mapas de bits; de lo contrario, son punteros a estructuras PATHOBJ. Si las imágenes del glifo se devuelven en forma de estructuras PATHOBJ, el controlador debe inspeccionar la marca FM_INFO_TECH_STROKE del miembro flInfo de la estructura IFIMETRICS asociada. Si se establece esa marca, las rutas de acceso se deben trazar; de lo contrario, las rutas de acceso deben rellenarse mediante la convención de modo alterna.

Si se establece la marca de FO_GRAY16, los mapas de bits de fuente son cuatro bits por píxel combinado (alfa). Un valor de cero significa que el píxel resultante debe tener el mismo color que el fondo. Si el valor alfa es k, en la tabla siguiente se describen los atributos del píxel resultante, mediante la combinación alfa lineal o la combinación alfa con corrección gamma. En ambos métodos, los colores de primer plano y fondo son, respectivamente, cf y cb.

Atributo de píxel Descripción
Color combinado
(combinación alfa lineal)
La combinación alfa lineal produce un color combinado que es una combinación lineal de los colores de primer plano y de fondo.

c = b * cf + (1 - b) * cb

La fracción de mezcla, b, se obtiene de la siguiente manera:

b = k / 15, para k = 0, 1, 2, ..., 15

Nota: Los colores de primer plano y fondo incluyen los tres canales de color (R, G, B).

Color combinado
(fusión alfa con corrección gamma)
La combinación alfa corregida gamma produce un color combinado elevando una variable que depende del valor alfa a una potencia fija.

Se proporcionan dos fórmulas: se debe usar una cuando el color de primer plano sea numéricamente mayor que el color de fondo; el otro debe utilizarse en el caso contrario. (Cuando los colores de primer plano y de fondo son iguales, ambas fórmulas simplifican c = cb).)

Si cf>c b,
c = cb + pow(b[k], (1 / gamma)) * (cf - cb)
Si cf<c b,
c = cb + (1 - pow(1 - b[k], 1 / gamma)) * (cf - cb)

En estas fórmulas, gamma = 2,33 y b[k] es la fracciónde mezcla k , obtenida de la siguiente manera:

b[k] = 0, para k = 0 y
b[k] = (k + 1) / 16, para k = 1, 2, ..., 15

Nota: a diferencia de la combinación alfa lineal, estas fórmulas deben aplicarse a cada uno de los tres canales de color (R, G, B).

 

GDI establece la marca de FO_GRAY16 en la entrada a la función DrvQueryFontData cuando solicita que una fuente esté en escala gris en uno de los 16 valores. Si el controlador de fuente no puede escalar en grises una determinada realización de fuentes, el proveedor de fuentes borra la marca de FO_GRAY16 y establece la marca FO_NOGRAY16 para informar a GDI de que no se cumplirá la solicitud de escalado gris.

iTTUniq

Especifica el archivo TrueType asociado. Dos realizaciones de tamaño de punto independientes de una cara de fuente TrueType tendrán estructuras FONTOBJ que comparten el mismo valor iTTUniq , pero tendrán valores iUniq diferentes. Solo los tipos de fuente TrueType pueden tener un miembro iTTUniq distinto de cero. Para obtener más información, consulte flFontType.

iFile

Puntero a un valor definido por el controlador para las fuentes de dispositivo que ya están cargadas. Si la fuente es una fuente GDI, este miembro se usa internamente para identificar la fuente y se debe omitir.

sizLogResPpi

Especifica la resolución del dispositivo para el que se realiza esta fuente.

ulStyleSize

Especifica el tamaño de estilo de la instancia de fuente, en puntos.

pvConsumer

Puntero a los datos asignados por el consumidor asociados a esta instancia de fuente. Un consumidor es un controlador que acepta información de glifo como entrada para generar la salida de texto. Solo un consumidor de fuentes puede modificar este miembro. El consumidor de esta fuente puede almacenar cualquier información en la ubicación a la que apunta este miembro. El motor no modificará este miembro. Se garantiza que el miembro pvConsumer sea null la primera vez que se pasa una estructura FONTOBJ al consumidor.

pvProducer

Puntero a los datos asignados por el productor asociados a esta instancia de fuente. Un productor es un controlador que puede producir información de glifo como salida; esto incluye métricas de glifo, mapas de bits y esquemas. Solo un productor de fuentes puede modificar este miembro. El productor de esta fuente puede almacenar cualquier información en la ubicación a la que apunta este miembro. El motor no modificará este miembro. Se garantiza que el miembro pvProducer sea null la primera vez que se pasa una estructura FONTOBJ al productor.

Comentarios

Como acelerador, el controlador puede acceder a los miembros públicos de la estructura FONTOBJ.

Un controlador puede ser un productor y un consumidor. Por ejemplo, un controlador de impresora puede actuar como productor mientras procesa una llamada a la función DrvQueryFontData proporcionada por el controlador para proporcionar métricas de glifo y, posteriormente, actuar como consumidor mientras procesa una llamada a la función DrvTextOut proporcionada por el controlador.

Requisitos

Requisito Valor
Header winddi.h (incluya Winddi.h)

Consulte también

DrvDestroyFont

DrvGetGlyphMode

DrvQueryFont

DrvQueryTrueTypeOutline

FONTOBJ_cGetAllGlyphHandles

FONTOBJ_cGetGlyphs

FONTOBJ_pifi

FONTOBJ_pxoGetXform

FONTOBJ_vGetInfo

IFIMETRICS