Struttura FONTOBJ (winddi.h)
La struttura FONTOBJ viene usata per concedere a un driver l'accesso alle informazioni su una determinata istanza di un tipo di carattere.
Sintassi
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;
Members
iUniq
Specifica una realizzazione distinta del tipo di carattere. Questo valore può essere usato dal driver per identificare un tipo di carattere GDI che potrebbe avere memorizzato nella cache o identificare la realizzazione del proprio carattere di un driver. Se questo membro è zero per un tipo di carattere GDI, il tipo di carattere non deve essere memorizzato nella cache.
iFace
Specifica l'indice del dispositivo per un tipo di carattere del dispositivo registrato da una chiamata a DrvQueryFont. Se il tipo di carattere è un tipo di carattere GDI, questo membro ha significato solo per GDI e il driver deve ignorarlo.
cxMax
Specifica la larghezza, in pixel, del glifo più grande nel tipo di carattere specificato.
flFontType
Valore che specifica il tipo del tipo di carattere. Questo membro può essere una combinazione dei flag elencati nella tabella seguente. Si noti tuttavia che FO_GRAY16 e FO_NOGRAY16 si escludono a vicenda.
Contrassegno | Significato |
---|---|
FO_CFF | Tipo di carattere OpenType postscript. |
FO_DBCS_FONT | Il tipo di carattere supporta le pagine codici DBCS. |
FO_EM_HEIGHT | Flag interno del driver TrueType. |
FO_GRAY16 | Le bitmap del tipo di carattere sono quattro bit per pixel con valori di fusione (alfa). |
FO_MULTIPLEMASTER | Tipo di carattere Multi Master (Type1 o OpenType). |
FO_NOGRAY16 | Indica che il driver del tipo di carattere non può (o non) scalare di grigio una particolare realizzazione del tipo di carattere. |
FO_POSTSCRIPT | Carattere Postscript (Type1 o OpenType). |
FO_SIM_BOLD | Carattere grassetto simulato dal driver. |
FO_SIM_ITALIC | Carattere corsivo simulato dal driver. |
FO_TYPE_DEVICE | Carattere specifico del dispositivo. |
FO_TYPE_OPENTYPE | Tipo di carattere OpenType. |
FO_TYPE_RASTER | Tipo di carattere bitmap. |
FO_TYPE_TRUETYPE | Carattere TrueType. |
FO_VERT_FACE | Carattere verticale. |
Se il flag FO_RASTER è impostato, i glifi scritti nella struttura STROBJ specificata sono bitmap, altrimenti sono puntatori alle strutture PATHOBJ. Se le immagini glifi vengono restituite sotto forma di strutture PATHOBJ, il driver deve controllare il flag di FM_INFO_TECH_STROKE del membro flInfo della struttura IFIMETRICS associata. Se tale flag è impostato, i percorsi devono essere tratti, altrimenti i percorsi devono essere riempiti usando la convenzione di modalità alternata.
Se il flag di FO_GRAY16 è impostato, le bitmap del tipo di carattere sono quattro bit per pixel di fusione (alfa). Un valore pari a zero indica che il pixel risultante deve avere lo stesso colore dello sfondo. Se il valore alfa è k, la tabella seguente descrive gli attributi del pixel risultante, usando la fusione alfa lineare o la fusione alfa gamma corretta. In entrambi i metodi, i colori di primopiano e sfondo sono rispettivamente c e cb.
Attributo Pixel | Descrizione |
---|---|
|
La fusione alfa lineare produce un colore misto che è una combinazione lineare dei colori di primo piano e di sfondo.
c = b * cf + (1 - b) * cb La frazione di blend, b, viene ottenuta come segue: b = k / 15, per k = 0, 1, 2, ..., 15 Nota: i colori di primo piano e sfondo includono tutti e tre i canali di colore (R, G, B). |
|
La fusione alfa corretta gamma produce un colore misto aumentando una variabile che dipende dal valore alfa a una potenza fissa.
Vengono fornite due formule: una deve essere usata quando il colore di primo piano è numericamente maggiore del colore di sfondo; l'altro deve essere usato nel caso opposto. Quando i colori di primo piano e sfondo sono uguali, entrambe le formule semplificano c = c.
In queste formule, gamma = 2,33 e b[k] è lafrazione k th blending, ottenuta come indicato di seguito:
Nota: a differenza della fusione alfa lineare, queste formule devono essere applicate a ognuno dei tre canali di colore (R, G, B). |
GDI imposta il flag di FO_GRAY16 sulla voce sulla funzione DrvQueryFontData quando richiede che un tipo di carattere venga ridimensionato su uno dei 16 valori. Se il driver di tipo di carattere non può ridimensionare un tipo di carattere specifico, il provider di caratteri cancella il flag di FO_GRAY16 e imposta il flag FO_NOGRAY16 per informare GDI che la richiesta di scalabilità grigia non verrà soddisfatta.
iTTUniq
Specifica il file TrueType associato. Due distribuzioni di dimensioni del punto separate di un viso carattere TrueType avranno strutture FONTOBJ che condividono lo stesso valore iTTUniq , ma avranno valori iUniq diversi. Solo i tipi di carattere TrueType possono avere un membro iTTUniq diverso da zero. Per altre informazioni, vedere flFontType.
iFile
Puntatore a un valore definito dal driver per i tipi di carattere del dispositivo già caricati. Se il tipo di carattere è un carattere GDI, questo membro viene usato internamente per identificare il tipo di carattere e deve essere ignorato.
sizLogResPpi
Specifica la risoluzione del dispositivo per cui viene realizzato questo tipo di carattere.
ulStyleSize
Specifica le dimensioni dello stile dell'istanza del tipo di carattere, in punti.
pvConsumer
Puntatore ai dati allocati dal consumer associati a questa istanza del tipo di carattere. Un consumer è un driver che accetta le informazioni sul glifo come input per generare l'output di testo. Solo un consumer di tipi di carattere può modificare questo membro. Il consumer di questo tipo di carattere può archiviare tutte le informazioni nella posizione a cui punta questo membro. Il motore non modifica questo membro. Il membro pvConsumer è garantito che sia null la prima volta che viene passata una struttura FONTOBJ al consumer.
pvProducer
Puntatore ai dati allocati dal produttore associati a questa istanza del tipo di carattere. Un produttore è un driver che può produrre informazioni sul glifo come output; sono incluse le metriche del glifo, le bitmap e i contorni. Solo un produttore di caratteri può modificare questo membro. Il produttore di questo tipo di carattere può archiviare qualsiasi informazione nella posizione a cui punta questo membro. Il motore non modifica questo membro. Il membro pvProducer è garantito che sia null la prima volta che una struttura FONTOBJ viene passata al produttore.
Commenti
Come acceleratore, il driver è autorizzato ad accedere ai membri pubblici della struttura FONTOBJ.
Un driver può essere sia un produttore che un consumer. Ad esempio, un driver della stampante può fungere da producer durante l'elaborazione di una chiamata alla funzione DrvQueryFontData fornita dal driver per fornire le metriche del glifo e successivamente agire come consumer durante l'elaborazione di una chiamata alla funzione DrvTextOut fornita dal driver.
Requisiti
Requisito | Valore |
---|---|
Intestazione | winddi.h (include Winddi.h) |