FONTOBJ-Struktur (winddi.h)
Die FONTOBJ-Struktur wird verwendet, um einem Treiber Zugriff auf Informationen über eine bestimmte instance einer Schriftart zu ermöglichen.
Syntax
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;
Member
iUniq
Gibt eine eindeutige Realisierung der Schriftart an. Dieser Wert kann vom Treiber verwendet werden, um eine GDI-Schriftart zu identifizieren, die er möglicherweise zwischengespeichert hat, oder um die Realisierung einer eigenen Schriftart durch einen Treiber zu identifizieren. Wenn dieser Member für eine GDI-Schriftart null ist, sollte die Schriftart nicht zwischengespeichert werden.
iFace
Gibt den Geräteindex für eine Geräteschriftart an, die durch einen Aufruf von DrvQueryFont registriert wurde. Wenn es sich bei der Schriftart um eine GDI-Schriftart handelt, hat dieses Element nur eine Bedeutung für GDI, und der Treiber sollte sie ignorieren.
cxMax
Gibt die Breite der größten Glyphe in der angegebenen Schriftart in Pixel an.
flFontType
Ist ein Wert, der den Typ der Schriftart angibt. Dieser Member kann eine Kombination der in der folgenden Tabelle aufgeführten Flags sein. (Beachten Sie jedoch, dass sich FO_GRAY16 und FO_NOGRAY16 gegenseitig ausschließen.)
Flag | Bedeutung |
---|---|
FO_CFF | Postscript OpenType-Schriftart. |
FO_DBCS_FONT | Schriftart unterstützt DBCS-Codepages. |
FO_EM_HEIGHT | Internes Flag des TrueType-Treibers. |
FO_GRAY16 | Schriftart-Bitmaps sind Vier-Bit-pro-Pixel-Blending-Werte (Alpha). |
FO_MULTIPLEMASTER | Mehrere Master-Schriftarten (Type1 oder OpenType). |
FO_NOGRAY16 | Gibt an, dass der Schriftarttreiber eine bestimmte Schriftrealisierung nicht graustufen kann (oder nicht). |
FO_POSTSCRIPT | Postscript-Schriftart (Type1 oder OpenType). |
FO_SIM_BOLD | Vom Treiber simulierte fett formatierte Schriftart. |
FO_SIM_ITALIC | Vom Treiber simulierte kursiv formatierte Schriftart. |
FO_TYPE_DEVICE | Gerätespezifische Schriftart. |
FO_TYPE_OPENTYPE | OpenType-Schriftart. |
FO_TYPE_RASTER | Bitmapschriftart. |
FO_TYPE_TRUETYPE | TrueType-Schriftart. |
FO_VERT_FACE | Vertikale Schriftart. |
Wenn das flag FO_RASTER festgelegt ist, sind die in die angegebene STROBJ-Struktur geschriebenen Glyphen Bitmaps, andernfalls sind sie Zeiger auf PATHOBJ-Strukturen. Wenn die Glyphenbilder in Form von PATHOBJ-Strukturen zurückgegeben werden, muss der Treiber das FM_INFO_TECH_STROKE Flag des flInfo-Elements der zugeordneten IFIMETRICS-Struktur überprüfen. Wenn dieses Flag festgelegt ist, sollten die Pfade stricheiert werden. Andernfalls müssen die Pfade mit der Konvention für den wechselseitigen Modus ausgefüllt werden.
Wenn das flag FO_GRAY16 festgelegt ist, handelt es sich bei den Schriftartbits um Vier-Bit-pro-Pixel-Mischwerte (Alpha). Der Wert 0 (null) bedeutet, dass das resultierende Pixel dieselbe Farbe wie der Hintergrund aufweisen sollte. Wenn der Alphawert k ist, werden in der folgenden Tabelle die Attribute des resultierenden Pixels beschrieben, wobei entweder lineare Alphamischung oder gammakorrige Alphamischung verwendet wird. In beiden Methoden sind die Vordergrund- und Hintergrundfarben cf bzw. cb.
Pixel-Attribut | BESCHREIBUNG |
---|---|
|
Die lineare Alphamischung erzeugt eine gemischte Farbe, die eine lineare Kombination aus Vordergrund- und Hintergrundfarben ist.
c = b * cf + (1 - b) * cb Die Mischungsfraktion b wird wie folgt ermittelt: b = k / 15, für k = 0, 1, 2, ..., 15 Hinweis: Die Vordergrund- und Hintergrundfarben enthalten alle drei Farbkanäle (R, G, B). |
|
Gammakorrierte Alphamischung erzeugt eine gemischte Farbe, indem eine Variable, die vom Alphawert abhängt, auf eine feste Leistung erhöht wird.
Es werden zwei Formeln bereitgestellt: eine sollte verwendet werden, wenn die Vordergrundfarbe numerisch größer als die Hintergrundfarbe ist; die andere sollte im umgekehrten Fall verwendet werden. (Wenn Vordergrund- und Hintergrundfarben gleich sind, vereinfachen beide Formeln c = cb.)
In diesen Formeln ist gamma = 2,33 und b[k] diek-te Mischungsfraktion, die wie folgt ermittelt wird:
Hinweis: Im Gegensatz zur linearen Alphamischung müssen diese Formeln auf jeden der drei Farbkanäle (R, G, B) angewendet werden. |
GDI legt das FO_GRAY16-Flag für den Eintrag in die DrvQueryFontData-Funktion fest, wenn eine Schriftart auf einen von 16 Werten grau skaliert werden soll. Wenn der Schriftarttreiber eine bestimmte Schriftrealisierung nicht graustufen kann, löscht der Schriftartenanbieter das flag FO_GRAY16 und legt das flag FO_NOGRAY16 fest, um GDI zu informieren, dass die Grauskalierungsanforderung nicht erfüllt wird.
iTTUniq
Gibt die zugeordnete TrueType-Datei an. Zwei separate Punktgrößenrealisierungen einer TrueType-Schriftart haben FONTOBJ-Strukturen, die denselben iTTUniq-Wert , aber unterschiedliche iUniq-Werte haben. Nur TrueType-Schriftarttypen können einen iTTUniq-Member ungleich null aufweisen. Weitere Informationen finden Sie unter flFontType.
iFile
Zeiger auf einen vom Treiber definierten Wert für Geräteschriftarten, die bereits geladen wurden. Wenn es sich bei der Schriftart um eine GDI-Schriftart handelt, wird dieser Member intern verwendet, um die Schriftart zu identifizieren und sollte ignoriert werden.
sizLogResPpi
Gibt die Auflösung des Geräts an, für das diese Schriftart realisiert wird.
ulStyleSize
Gibt den Formatgrad der Schriftart instance in Punkt an.
pvConsumer
Zeiger auf vom Benutzer zugeordnete Daten, die dieser Schriftart instance. Ein Consumer ist ein Treiber, der Glypheninformationen als Eingabe zum Generieren von Textausgaben akzeptiert. Nur ein Schriftartenconsumer kann diesen Member ändern. Der Consumer dieser Schriftart kann alle Informationen an der Stelle speichern, auf die dieses Element verweist. Dieses Element wird von der Engine nicht geändert. Der pvConsumer-Member ist garantiert NULL, wenn eine FONTOBJ-Struktur zum ersten Mal an den Consumer übergeben wird.
pvProducer
Zeiger auf vom Erzeuger zugeordnete Daten, die dieser Schriftart instance. Ein Hersteller ist ein Treiber, der Glypheninformationen als Ausgabe erzeugen kann; dazu gehören Glyphenmetriken, Bitmaps und Gliederungen. Nur ein Schriftartenproduzent kann diesen Member ändern. Der Producer dieser Schriftart kann alle Informationen an der Stelle speichern, auf die dieses Element verweist. Dieses Element wird von der Engine nicht geändert. Der pvProducer-Member ist garantiert NULL, wenn eine FONTOBJ-Struktur zum ersten Mal an den Producer übergeben wird.
Hinweise
Als Beschleuniger kann der Treiber auf die öffentlichen Member der FONTOBJ-Struktur zugreifen.
Ein Treiber kann sowohl ein Produzent als auch ein Consumer sein. Beispielsweise kann ein Druckertreiber als Produzent fungieren, während er einen Aufruf der vom Treiber bereitgestellten DrvQueryFontData-Funktion verarbeitet, um Glyphenmetriken bereitzustellen, und später als Consumer fungieren, während er einen Aufruf der vom Treiber bereitgestellten DrvTextOut-Funktion verarbeitet.
Anforderungen
Anforderung | Wert |
---|---|
Header | winddi.h (einschließlich Winddi.h) |