Share via


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
Gemischte Farbe
(lineare Alphamischung)
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).

Gemischte Farbe
(gammakorrige Alphamischung)
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.)

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

In diesen Formeln ist gamma = 2,33 und b[k] diek-te Mischungsfraktion, die wie folgt ermittelt wird:

b[k] = 0, für k = 0 und
b[k] = (k + 1) / 16, für k = 1, 2, ..., 15

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)

Weitere Informationen

DrvDestroyFont

DrvGetGlyphMode

DrvQueryFont

DrvQueryTrueTypeOutline

FONTOBJ_cGetAllGlyphHandles

FONTOBJ_cGetGlyphs

FONTOBJ_pifi

FONTOBJ_pxoGetXform

FONTOBJ_vGetInfo

IFIMETRICS