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.
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;
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 |
---|---|
|
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). |
|
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).)
En estas fórmulas, gamma = 2,33 y b[k] es la fracciónde mezcla k , obtenida de la siguiente manera:
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.
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.
Requisito | Valor |
---|---|
Header | winddi.h (incluya Winddi.h) |