Warum erscheint Text unterschiedliche beim Zeichnen mit GDIPlus im Vergleich zu GDI

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 307208 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Textlayout mit GDIPlus ist unabhängig von Auflösung. Die Wirkung dieser Funktion wird deutlich, wenn GDIPlus Textlayout mit auflösungsabhängig GDI-Text-Layout kontrastiert.

In Raster versehen Rendering (Standard) ändert das Font-hinting in der Regel die Breite eines Symbole. Wenn eine Sequenz von Symbolen, die alle in der Breite erheblich erhöhen, möglicherweise GDIPlus verschärfen der Text, der Auflösung unabhängig bleiben. In extremen Fällen (z. B. eine langfristig fett Kleinbuchstaben "l" Glyphen in 8-zackiger Microsoft Sans Serif-Schriftart auf eine Anzeige 96 Punkte pro Zoll [dpi]) kann der Abstand zwischen einigen Zeichen vollständig entfernt.

Formulare mit GDIPlus Textlayout gebaut werden bei allen Auflösungen und beim Drucken identisch dargestellt.

Weitere Informationen

Auflösung unabhängiges Layout

Die DrawString und "MeasureString" -Funktionen in die GDIPlus-Anwendung, die Layout des Textes unabhängig von der Geräteauflösung Programmierschnittstelle (API); aus diesem Grund nimmt ein Textabsatz dieselbe Anzahl an Linien, unabhängig davon, welches, denen Gerät sie von angezeigt werden. Es gibt viele weitere Vorteile, u. a. die folgenden:
  • Wenn ein Feld in einem Formular angepasst wird, um statischen Text auf einem Entwicklercomputer passen, werden sie, dass Text auf allen Computern entsprechen, die die Anwendung auf, unabhängig von den Einstellungen für Bildschirm Auflösung Entfernung oder Erreichbarkeit ausführen kann.
  • Beim Drucken des Formulars wird es das gleiche Layout wie er auf dem Bildschirm angezeigt wird.
  • Ein Formular in einer Metadatei aufgezeichnet behält seine Layout.
Stellen Sie sich den Forms-Designer. Ein Feld ist vielleicht auf das Formular für einen Text--einen Titel definiert. Sie geben den Titel ein und passen Sie das Kontrollkästchen, um es passt. Leider ist im Gegensatz zu den Zeilen nicht linear mit Auflösung, Skalieren von Text so dass das Feld ordnungsgemäß nur bei der Auflösung passt, die Sie (Designer) gearbeitet haben.

Für grafische Objekte, z. B. Linien und Bilder bedeutet eine anderes Geräteauflösung einen unterschiedliche Skalierungsfaktor zum Zeitpunkt der Anzeige. Eine logische Zeile, die 100 Pixel wären Long-Wert auf eine 96-dpi-Anzeige wird gezeichnet, 125 Pixel lang auf eine 120 dpi-Anzeige und 625 Pixel lang auf einem 600-dpi-Drucker.

Für Text, wird die Schriftarthöhe entsprechend skaliert für die Geräteauflösung: eine Schriftart, die 20 Pixel auf einem 96-dpi-Bildschirm gezeichnet wird gerendert, 25 Pixel auf einem 125-dpi-Bildschirm hoch und 125 Pixel auf einem 600-dpi-Drucker. Die Breite der einzelnen Symbole werden jedoch nur etwa Skalieren mit der Höhe. Die genaue Breite hängt auch von hinting Anweisungen, die in der Schriftart ändern Sie das Symbol Form (Rasteranpassung) für Lesbarkeit eingefügt wurden.

TrueType-Hinting, Grid-Formstück und deren unverhältnismäßig Auswirkungen auf die Breite der Schriftzeichen

Raster einpassen – die Anwendung der TrueType-Hinweise--versteht man das Anpassen der Position der Pixel in einem gerenderten Symbol auf das Symbol zur Bildschirmgrößen leicht lesbar zu machen. Für Schriftarthinweise Techniken umfassen die Ausrichtung des Symbols Stämme auf ganze Pixel und Versicherung, dass ähnliche Features eines Symbols gleichermaßen betroffen sind. Schriftart-Designer verbringen viele Stunden hinting jedes einzelnen Symbols.

Betrachten Sie z. B. die Buchstaben "s", "e", "w" und "l" aus der Schriftart Times New Roman auf 8 Punkt auf verschiedenen Lösungen, mit Hilfe der GDI gerendert der Standardgitter Formstück.

Klicken Sie in den folgenden Beispielen jedes einzelnen Symbols sowie seines umgebenden Felds mit hoher Auflösung in Grau gezeichnet wird, und klicken Sie dann die tatsächliche Pixel, die es mit einer angegebenen Größe und dpi darstellt als schwarze Kreise im Vordergrund gezeichnet werden. 96 dpi ist die am häufig verwendeten Bildschirmauflösung, auch bekannt als "kleiner Schriftarten" im Dialogfeld Anzeige-Einstellungen in der Systemsteuerung. Der 120-dpi-Fall entspricht die gemeinsamen "große Schriftarten" Anzeigeeinstellung. 150 dpi ist immer eine gemeinsame Laptop LCD-Bildschirmauflösung und 600 dpi ist eine aktuelle Low-End-Auflösung für einen Laserdrucker.

Beachten Sie, wie mit 96 dpi (standard Bildschirmauflösung), es gibt nur sehr wenige Pixel in eine 8-Punkt-Symbol. Der 8-zackiger 96-dpi Kleinbuchstaben "s" hat z. B. fast keines der Zeichen des Symbols, das es ist vorgesehen, darzustellen.

Bild minimierenBild vergrößern
Kleiner lateinischer Buchstabe "s" von Times New Roman


Die erste Figur unterhalb jedes einzelnen Symbols zeigt die aktuelle Auflösung des gezeichneten Symbols. In der zweite Abbildung ist die Differenz zwischen die entworfene Breite des Symbols und die tatsächliche Breite des gezeichneten als positiven oder negativen Prozentwert. In der dritte Abbildung stellt die Differenz als Bruchzahlen Pixel in der eigentliche für die Anzeige-Auflösung dar.

Im folgenden Beispiel, das am weitesten links stehende Symbol ist eine 8-Punkt-96-dpi-Kleinbuchstaben "e" ca. 11 Prozent oder.61 Pixel schmaler als die ideale Form nach Raster Formstück.

Bild minimierenBild vergrößern
Kleiner lateinischer Buchstabe "e" von Times New Roman


Wenn kein Raster einpassen betrüge, erwarten wir der einzige Unterschied zwischen der entworfenen und angezeigten Breite entsprechend die Auswirkung der Rundung am nächsten Pixel. Wir sehen in diesem Fall würde nie eine Breite Differenz von mehr als zur Hälfte eines Pixels. Mit der höchsten Auflösung (2400 dpi) ist dies tatsächlich der Fall, der größte Unterschied gesehen hier in Höhe von 0,37 Pixel.

Bei niedrigeren Auflösungen, die Auswirkungen der Raster Formstück jedoch überschreiten oder Sumpf einfache Rundung. Berücksichtigen Sie den Buchstaben "w", auf dem die Wirkung der hinting besonders extreme ist. Auf der anderen Seite ist das Buchstabe "l" schmal und nur ein Stamm und aus diesem Grund zeigt milde Auswirkungen der hinting aus.

Bild minimierenBild vergrößern
Kleiner lateinischer Buchstabe "w" in Times New Roman

Bild minimierenBild vergrößern
Kleiner lateinischer Buchstabe "l" von Times New Roman


Wie Raster Formstück kompensiert GDIPlus

Wenn Raster Formstück Glyphen generiert, die schmaler als vorgesehen sind

Der schlimmste Fall in den vorherigen Beispielen ist der 96-dpi Kleinbuchstaben "w". Das "w" ist ein besonders schwierig Symbol ebenfalls einen Vorgeschmack: Wortstämme müssen symmetrisch, gleichmäßigen, und gleich dick angezeigt werden. Eine sorgfältige für Schriftarthinweise Ergebnisse in eine gute Darstellung, aber der Hint Glyph ist schmaler als seine Breite Entwurf mehr als 2 Pixel. Eine Zeichenfolge, die nur von 8-zackiger 96 dpi, "w" zusammengesetzt werden 23 Prozent kürzere, Raster angebracht.

Wenn GDIPlus zeilenweise Raster versehen Symbole, die kürzer als ihre Breite auf dem Design anzeigt sind, befolgt es diesen allgemeinen Regeln:
  • Die Zeile ist, können durch die Breite eines Gevierts ohne inhaltliche Änderung Glyphenabstand Vertrag. (Siehe Abschnitt "Informationsquellen" dieses Artikels Weitere Informationen zu Gevierts und dessen Verwendung als eine typografische Maßeinheit).
  • Verbleibende Kontraktion setzt sich zusammen, wenn Sie keine Leerzeichen zwischen Wörtern um bis zu einer Verdoppelung verbreitern.
  • Verbleibende Kontraktion besteht durch die Einführung von leere Pixel zwischen Glyphen.
Im folgenden Beispiel wird veranschaulicht, wie GDI und GDIPlus die Zeichenfolge "Wwwww Wwwww Wwwww Wwwww Wwwww" in 8-Punkt-Schriftart Times New Roman mit 96 dpi mit Raster Formstück angezeigt.

Tabelle minimierenTabelle vergrößern
GDI (auflösungsabhängig) anzeigen
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "W" von Times New Roman
GDIPlus (Auflösungsunabhängige) anzeigen
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "W" von Times New Roman

Dieses Beispiel zeigt, wie GDIPlus Design Breiten verwendet, um die Zeichenfolge anzuordnen, und so Maßnahmen die gesamte Zeichenfolge länger als GDI ist. GDIPlus ermöglicht die Zeichenfolge, die kleiner als das hintere Ende von 1 Geviert beenden und die verbleibende Expansion in die entsprechenden Felder platziert.

Das folgende Beispiel zeigt die gleichen Zeichenfolgen, wobei die Leerzeichen entfernt. GDIPlus kann nicht die Leerzeichen verwenden, um die Kontraktionen zurückzuführen, dass Raster Formstück auszugleichen und stattdessen Fügt ein zusätzliches Pixel zwischen einigen der Glyphen.

Tabelle minimierenTabelle vergrößern
GDI (auflösungsabhängig) anzeigen
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "W" von Times New Roman
GDIPlus (Auflösungsunabhängige) anzeigen
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "W" von Times New Roman

Wenn Raster Formstück Glyphen generiert, die breiter als konzipiert sind

Betrachten Sie nun die folgenden Beispiele, die die Schriftart Microsoft Sans Serif fett in einer Größe von 8 Punkten verwenden. Microsoft Sans Serif ist die Standardschriftart für die Benutzeroberfläche für Microsoft Windows 2000 und neueren Betriebssystemen.

Bild minimierenBild vergrößern
Kleiner lateinischer Buchstabe "e" von Microsoft Sans Serif

Bild minimierenBild vergrößern
Kleiner lateinischer Buchstabe "l" von Microsoft Sans Serif

Bild minimierenBild vergrößern
Kleiner lateinischer Buchstabe "s" von Microsoft Sans Serif

Bild minimierenBild vergrößern
Kleiner lateinischer Buchstabe "w" von Microsoft Sans Serif


In diesem Fall sind die meisten der Symbole breiter als sie beim Zeichnen mit 96 und 120 dpi entwickelt wurden. Obwohl viele nicht viel größer sind, werden einige besonders schwierige Fälle.

Beachten Sie, dass eine Zeichenfolge mit 96 dpi aus nur einem kleingeschriebenen "l" zusammengesetzt. Jede "l" nur .16 auf Fahrgastschiffen Pixel breiter als seine Breite Design ist zwar eine Reihe von nur 7 Zeichen genug, um die Design-Breite der Ausführung von einem ganzen Pixel überschreiten. In diesem Fall müssen Sie die Zeichenfolge um 1 Pixel komprimieren. Leider die Form der Kleinbuchstabe "l" verhält sehr schlecht als ein paar davon um 1 Pixel überlappt wird: Da nur 1 leere Pixel Spalte vorhanden ist, wird der überlappende Vorgang die angrenzenden Symbole zu einen Volumenkörper zu bilden.

Das folgende Beispiel zeigt eine Reihe von 9 kleines "l"-Zeichen, die von GDI und von GDIPlus angezeigt:

Tabelle minimierenTabelle vergrößern
GDI (auflösungsabhängig) anzeigen
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "l" von Microsoft Sans Serif mit GDI
GDIPlus (Auflösungsunabhängige) anzeigen
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "l" von Microsoft Sans Serif mit GDI Plus

Beachten Sie, wie in den letzten beiden GDIPlus "l" s scheinbar berühren.

Sie können auch in diesem Beispiel sehen, dass GDIPlus jedes Ende jedes angezeigte Zeichenfolge eine kleine Menge (1/6 Em) hinzufügt. Dieser 1/6-Em ermöglicht durch Symbole mit überhängende enden und GDIPlus gibt auch ein wenig Spielraum mit Grid-Formstück-Erweiterung helfen.

Ein Beispiel eines Symbols mit Überhängen ist kursiv f von der Schriftart Times New Roman. Das oberste nachgestellte Feature des Symbols für das über das Symbol nach rechts (das Symbol nachgestellte Nachbarn), während die unterste Feature unter Nachbarn in der vorhergehenden erweitert führenden hervorsteht. Da der Überhang und Underhang in den Bereich eines benachbarten Symbols stören, beitragen sie nicht auf die Symbolbreite f . Daher rendert der Überhang über die Breite der Zeichenfolge, wenn das Zeichen am Ende einer Zeichenfolge gefunden wird. 1/6-Em bietet den zusätzlichen Speicherplatz in dem die Überhängen gerendert werden können.

Wie benachbarten Text angezeigt

Vielleicht möchten Sie zwei Zeichenfolgen nebeneinander angezeigt, sodass sie als einzelne Zeichenfolge angezeigt werden. Sie sollten dies tun, wenn Sie einen Editor schreiben oder Text mit einer Änderung der Formatierung in den Absatz anzeigen.

Warnung: Linien, die aus Text mit mehrere DrawString Aufrufe sind grundsätzlich nicht in der Lage, allgemeinen internationalen Text anzuzeigen. Insbesondere lokalisiert in Arabisch, Hebräisch, Farsi und anderen rechts-nach-links-Sprachen, Zeichenfolgen Fortschritt in der Regel von rechts nach links, mit Reihenfolge Rückbuchung um Zahlen und um westliche Ausdrücke. DrawString behandelt dieses Szenario in eine Ausgabe mit Bi-direktionale Verhalten durch Unicode definiert. Die Regeln sind komplex. Weitere Informationen finden Sie unter "The Unicode Standard Version 3.0," Abschnitt 3.12.

Die Standardaktion von DrawString arbeitet beim Anzeigen von benachbarten Ausführungen gegen Sie: Das Standardobjekt StringFormat fügt zunächst einen zusätzlichen 1/6-Em an beiden Enden der einzelnen Ausgaben hinzu; Zweitens Raster angebracht Breiten reichen weniger als entwickelt, die gerenderte Zeichenfolge ist, ausgehend von seiner gemessenen Größe von bis zu ein Em verkleinern können.

Um diese Probleme zu vermeiden, führen Sie folgende Schritte aus:
  • Übergeben Sie "MeasureString" und DrawString immer einem StringFormat -Objekt, das auf der Grundlage von typografischen StringFormat (GenericTypographic).

    - und -

  • TextRenderingHint Grafiken auf TextRenderingHintAntiAliasfestgelegt.
Diese Maßnahmen deaktivieren Sie die extra 1/6-Em am Ende Laufzeit hinzugefügt, die Probleme des Rasters Formstück mit Anti-Aliasing und Subpixel Glyph-Positionierung vermeiden und dazu führen, dass perfekt skalierbare Text. Das Ergebnis möglicherweise ein wenig grau bei kleineren Schriftgrößen. Um dies auszugleichen, verwenden Sie die SetTextContrast -Funktion zum Abdunkeln von Anti-Aliasing Text.

In den folgenden Tabellen vergleichen GDI, GDIPlus GridFitted und Anti-Aliasing GDIPlus-Text für den vorherigen Beispielen.

Formatierung mit Leerzeichen
Tabelle minimierenTabelle vergrößern
GDI-Display (Auflösung abhängig)
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "W" von Times New Roman
GDIPlus Raster versehen Display (Auflösung unabhängig)
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "W" von Times New Roman
Anti-Aliasing GDIPlus-Display (Auflösung unabhängig)
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "W" von Times New Roman

Schlimmstenfalls schmal
Tabelle minimierenTabelle vergrößern
GDI-Display (Auflösung abhängig)
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "W" von Times New Roman
GDIPlus Raster versehen Display (Auflösung unabhängig)
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "W" von Times New Roman
Anti-Aliasing GDIPlus-Display (Auflösung unabhängig)
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "W" von Times New Roman

Schlimmstenfalls breit
Tabelle minimierenTabelle vergrößern
GDI-Display (Auflösung abhängig)
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "l" von Times New Roman
Raster versehen GDIPlus anzeigen (Auflösungsunabhängige)
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "l" von Times New Roman
Anti-Aliasing GDIPlus-Display (Auflösung unabhängig)
Bild minimierenBild vergrößern
Zeichenfolge kleiner lateinischer Buchstabe "l" von Times New Roman

Obwohl Anti-Aliasing Text ein wenig grau in sehr kleinen Schriftgrößen aussehen kann, (Dies ist 8-Punkt), zeigt die Form der Glyphen weitaus präziser als Text des Modellrasters ausgestattet und nicht aufgrund der Glyphe Positionsanpassung (früherer Stelle beschrieben) für Grid-Formstück leiden.

Verwendung von GDIPlus

Ein Aufruf von DrawString richtet sich um ganze Zeilen oder Absätzen in einem einzigen Format anzuzeigen. Es ist großartig für Benutzeroberflächen wie z. B. Formulare, in denen die Skalierbarkeit eine Layout unabhängig von der Bildschirmauflösung garantiert. Beim Arbeiten mit multiformat Text durch die Anzeige einzelner ausgeführt wird, müssen Sie eine der folgenden:
  • Verwenden Sie DrawString mit der typografischen Zeichenfolgenformat und TextRenderingHintAntiAlias, wie weiter oben in diesem Artikel beschrieben.

    -oder-

  • Verwenden Sie die GDI ExtTextOut oder UniScribe (Unicode-Skriptprozessor).

Informationsquellen

Glossar

Zeigen Sie:
Ein Maß für die Größe eines Typs in den USA und England. Ein Zoll entspricht etwa herkömmlichen Druckern üblichen 72,27 Punkt. In der Regel verwendet in Informatik als 1/72 Zoll.

EM:
Eine Schriftart-spezifische Einheit gleich der Größe des Gevierts die Schriftart.

Geviert:
Ein Koordinatengitter fiktiven Quadrat, auf denen eine TrueType-Schriftart Glyphen entwickelt wurden.

Weiterführende Literatur

Weitere Informationen zum Unicode-Standard finden Sie in der folgenden: Die Unicode-Konsortium. Unicode-Standard, Version 3.0. Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5.

Im Internet:
Das Unicode-Konsortium
Weitere Informationen zu OpenType-Spezifikation finden Sie auf der folgenden Microsoft-Website:
http://www.Microsoft.com/typography/TT/TT.htm
Auch auf der Microsoft Developer Network Library-CD unter Spezifikationen verfügbar.

Finden Sie für Weitere Informationen über das Gevierts, hinting und den Prozess des Rasters Formstück im Anhang "TrueType-Grundlagen" im OpenType-Spezifikation, oder navigieren Sie zu der folgenden Microsoft-Website:
http://www.Microsoft.com/typography/otspec/TTCH01.htm
Eine Einführung in das UniScribe Skriptprozessor Unicode finden Sie unter:
Unterstützung mehrsprachiger Textlayouts und komplexer Skripts mit Windows NT 5.0, die durch F. Avery Bishop, David C. Brown, David M. Meltzer, Microsoft Systems Journal, November 1998.

Eigenschaften

Artikel-ID: 307208 - Geändert am: Sonntag, 16. Dezember 2012 - Version: 4.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Windows XP Professional
Keywords: 
kbdswgdi2003swept kbgraphxlinkcritical kbinfo kbmt KB307208 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 307208
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns