GetGlyphOutlineA-Funktion (wingdi.h)

Die GetGlyphOutline-Funktion ruft die Gliederung oder Bitmap für ein Zeichen in der TrueType-Schriftart ab, die im angegebenen Gerätekontext ausgewählt ist.

Syntax

DWORD GetGlyphOutlineA(
  [in]  HDC            hdc,
  [in]  UINT           uChar,
  [in]  UINT           fuFormat,
  [out] LPGLYPHMETRICS lpgm,
  [in]  DWORD          cjBuffer,
  [out] LPVOID         pvBuffer,
  [in]  const MAT2     *lpmat2
);

Parameter

[in] hdc

Ein Handle für den Gerätekontext.

[in] uChar

Das Zeichen, für das Daten zurückgegeben werden sollen.

[in] fuFormat

Das Format der Daten, die die Funktion abruft. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
GGO_BEZIER
Die Funktion ruft die Kurvendaten als kubische Bézier-Spline ab (nicht im quadratischen Splineformat).
GGO_BITMAP
Die Funktion ruft die Glyphenbitbit ab. Informationen zur Speicherbelegung finden Sie im folgenden Abschnitt hinweise.
GGO_GLYPH_INDEX
Gibt an, dass der uChar-Parameter ein TrueType-Glyphenindex und kein Zeichencode ist. Weitere Hinweise zur Glyphenindizierung finden Sie in der ExtTextOut-Funktion .
GGO_GRAY2_BITMAP
Die Funktion ruft eine Glyphenbitbit ab, die fünf Graustufen enthält.
GGO_GRAY4_BITMAP
Die Funktion ruft eine Glyphenbitbit ab, die 17 Graustufen enthält.
GGO_GRAY8_BITMAP
Die Funktion ruft eine Glyphenbitbit ab, die 65 Graustufen enthält.
GGO_METRICS
Die Funktion ruft nur die von lpgm angegebene GLYPHMETRICS-Struktur ab. Der lpvBuffer wird ignoriert. Dieser Wert wirkt sich bei einem Fehler auf die Bedeutung des Rückgabewerts der Funktion aus. Weitere Informationen finden Sie im Abschnitt Rückgabewerte.
GGO_NATIVE
Die Funktion ruft die Kurvendatenpunkte im nativen Format des Rasterizers ab und verwendet die Entwurfseinheiten der Schriftart.
GGO_UNHINTED
Die Funktion gibt nur nicht gezeichnete Gliederungen zurück. Dieses Flag funktioniert nur in Verbindung mit GGO_BEZIER und GGO_NATIVE.
 

Beachten Sie, dass die Funktion für die GGO_GRAYn_BITMAP-Werte eine Glyphe-Bitmap abruft, die n^2+1 (n quadratisch plus eins) Graustufen enthält.

[out] lpgm

Ein Zeiger auf die GLYPHMETRICS-Struktur , die die Platzierung der Glyphe in der Zeichenzelle beschreibt.

[in] cjBuffer

Die Größe des Puffers (*lpvBuffer) in Bytes, in dem die Funktion zum Kopieren von Informationen über das Gliederungszeichen dient. Wenn dieser Wert 0 ist, gibt die Funktion die erforderliche Größe des Puffers zurück.

[out] pvBuffer

Ein Zeiger auf den Puffer, der Informationen zum Gliederungszeichen empfängt. Wenn dieser Wert NULL ist, gibt die Funktion die erforderliche Größe des Puffers zurück.

[in] lpmat2

Ein Zeiger auf eine MAT2-Struktur , die eine Transformationsmatrix für das Zeichen angibt.

Rückgabewert

Wenn GGO_BITMAP, GGO_GRAY2_BITMAP, GGO_GRAY4_BITMAP, GGO_GRAY8_BITMAP oder GGO_NATIVE angegeben ist und die Funktion erfolgreich ist, ist der Rückgabewert größer als 0 (null). Andernfalls ist der Rückgabewert GDI_ERROR. Wenn eines dieser Flags angegeben ist und die Puffergröße oder -adresse null ist, gibt der Rückgabewert die erforderliche Puffergröße in Byte an.

Wenn GGO_METRICS angegeben ist und die Funktion fehlschlägt, wird der Rückgabewert GDI_ERROR.

Hinweise

Die Glyphenkontur, die von der GetGlyphOutline-Funktion zurückgegeben wird, gilt für eine mit dem Raster angepasste Glyphe. (Eine mit einem Raster versehene Glyphe ist eine Glyphe, die so geändert wurde, dass ihr Bitmapbild so gut wie möglich dem ursprünglichen Entwurf der Glyphe entspricht.) Wenn eine Anwendung eine unveränderte Glyphengliederung benötigt, kann sie die Glyphengliederung für ein Zeichen in einer Schriftart anfordern, deren Größe der Em-Einheit der Schriftart entspricht. Der Wert für die Em-Einheit einer Schriftart wird im otmEMSquare-Element der OUTLINETEXTMETRIC-Struktur gespeichert.

Die Glyphenbitbit, die von GetGlyphOutline zurückgegeben wird, wenn GGO_BITMAP angegeben wird, ist eine DWORD-ausgerichtete, zeilenorientierte, monochrome Bitmap. Wenn GGO_GRAY2_BITMAP angegeben wird, ist die zurückgegebene Bitmap ein zeilenorientiertes Bytearray mit DWORD-Ausrichtung, dessen Werte von 0 bis 4 liegen. Wenn GGO_GRAY4_BITMAP angegeben wird, ist die zurückgegebene Bitmap ein zeilenorientiertes Array von Bytes mit DWORD-Ausrichtung, deren Werte von 0 bis 16 liegen. Wenn GGO_GRAY8_BITMAP angegeben wird, handelt es sich bei der zurückgegebenen Bitmap um ein zeilenorientiertes Array von Bytes mit DWORD-Ausrichtung, dessen Werte von 0 bis 64 liegen.

Der native Puffer, der von GetGlyphOutline zurückgegeben wird, wenn GGO_NATIVE angegeben wird, ist eine Glyphengliederung. Eine Glyphenkontur wird als Reihe von einer oder mehreren Konturen zurückgegeben, die von einer TTPOLYGONHEADER-Struktur gefolgt von einer oder mehreren Kurven definiert werden. Jede Kurve in der Kontur wird durch eine TTPOLYCURVE-Struktur gefolgt von einer Reihe von POINTFX-Datenpunkten definiert. POINTFX-Punkte sind absolute Positionen, keine relativen Verschiebungen. Der Ausgangspunkt einer Kontur wird vom pfxStart-Element der TTPOLYGONHEADER-Struktur angegeben. Der Ausgangspunkt jeder Kurve ist der letzte Punkt der vorherigen Kurve oder der Startpunkt der Kontur. Die Anzahl der Datenpunkte in einer Kurve wird im cpfx-Element der TTPOLYCURVE-Struktur gespeichert. Die Größe der einzelnen Konturen im Puffer in Bytes wird im cb-Element der TTPOLYGONHEADER-Struktur gespeichert. Zusätzliche Kurvendefinitionen werden nach vorangehenden Kurven in den Puffer gepackt, und zusätzliche Konturen werden nach vorangehenden Konturen in den Puffer gepackt. Der Puffer enthält so viele Konturen, wie in den von GetGlyphOutline zurückgegebenen Puffer passen.

Die GLYPHMETRICS-Struktur gibt die Breite der Zeichenzelle und die Position einer Glyphe innerhalb der Zeichenzelle an. Der Ursprung der Zeichenzelle befindet sich auf der linken Seite der Zelle an der Grundlinie der Schriftart. Die Position des Glyphenursprungs ist relativ zum Ursprung der Zeichenzelle. Die Höhe einer Zeichenzelle, die Baseline und andere globale Metriken für die Schriftart werden von der OUTLINETEXTMETRIC-Struktur angegeben.

Eine Anwendung kann die im Bitmap- oder nativen Format abgerufenen Zeichen ändern, indem sie im lpMatrix-Parameter eine 2-mal-2-Transformationsmatrix angibt. Beispielsweise kann die Glyphe durch Scheren, Drehung, Skalierung oder eine beliebige Kombination der drei mithilfe der Matrixmultiplikation geändert werden.

Weitere Informationen zu einer Glyphengliederung finden Sie in den technischen Spezifikationen von TrueType und OpenType.

Hinweis

Der wingdi.h-Header definiert GetGlyphOutline als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wingdi.h (windows.h einschließen)
Bibliothek Gdi32.lib
DLL Gdi32.dll

Weitere Informationen

ExtTextOut

FORM_INFO_1

Schriftart- und Textfunktionen

Übersicht über Schriftarten und Text

GLYPHMETRICS

GetOutlineTextMetrics

MAT2

OUTLINETEXTMETRIC

PUNKT

POINTFX

TTPOLYCURVE

TTPOLYGONHEADER