Freigeben über


Ersatz- und Zusatzzeichen

Windows-Anwendungen verwenden normalerweise UTF-16, um Unicode- Zeichendaten darzustellen. Die Verwendung von 16 Bit ermöglicht eine direkte Darstellung von 65.536 eindeutigen Zeichen, aber diese grundlegende mehrsprachige Ebene (BMP) reicht nicht fast aus, um alle symbole abzudecken, die in menschlichen Sprachen verwendet werden. Unicode Version 4.1 enthält mehr als 97.000 Zeichen, mit über 70.000 Zeichen allein für Chinesisch.

Der Unicode-Standard hat 16 zusätzliche "Ebenen" von Zeichen eingerichtet, die jeweils die gleiche Größe wie der BMP aufweisen. Natürlich haben die meisten Codepunkte außerhalb des BMP noch keine Zeichen zugewiesen, aber die Definition der Ebenen bietet Unicode das Potenzial, 1.114.112 Zeichen (d. h. 216 * 17 Zeichen) innerhalb des Codepunktbereichs U+0000 bis U+10FFFF zu definieren. Damit UTF-16 diesen größeren Satz von Zeichen darstellt, definiert der Unicode-Standard "Zusatzzeichen".

Informationen zu Zusatzzeichen

Ein ergänzendes Zeichen ist ein Zeichen, das sich außerhalb des BMP befindet, und ein "Ersatz" ist ein UTF-16-Codewert. Für UTF-16 ist ein "Ersatzpaar" erforderlich, um ein einzelnes ergänzendes Zeichen darzustellen. Der erste (hohe) Ersatz ist ein 16-Bit-Codewert im Bereich U+D800 bis U+DBFF. Der zweite (niedrige) Ersatz ist ein 16-Bit-Codewert im Bereich U+DC00 bis U+DFFF. Mithilfe des Ersatzmechanismus kann UTF-16 alle 1.114.112 potenziellen Unicode-Zeichen unterstützen. Weitere Informationen zu ergänzungen Zeichen, Ersatzpaaren und Ersatzpaaren finden Sie unter Unicode Standard.

Anmerkung

In Windows 2000 wird Unterstützung für einfache Eingaben, Ausgaben und einfache Sortierung zusätzlicher Zeichen eingeführt. Nicht alle Systemkomponenten sind jedoch mit Zusatzzeichen kompatibel.

 

Das Betriebssystem unterstützt ergänzende Zeichen auf folgende Weise:

  • Format 12 der OpenType-Schriftart cmap-Tabelle unterstützt direkt den 4-Byte-Zeichencode. Weitere Informationen finden Sie in der OpenType-Schriftartspezifikation.
  • Windows unterstützt surrogatefähige Eingabemethoden-Editoren (IMEs).
  • Die Windows GDI--API unterstützt Format 12 cmap-Tabellen in Schriftarten, sodass Surrogate korrekt angezeigt werden können.
  • Die Uniscribe-API unterstützt ergänzende Zeichen.
  • Windows-Steuerelemente, einschließlich Bearbeiten und Rich Edit, unterstützen Ergänzende Zeichen.
  • Das HTML-Modul unterstützt HTML-Seiten, die zusätzliche Zeichen für die Anzeige, Bearbeitung (über Outlook Express) und die Formularübermittlung enthalten.
  • Die Sortiertabelle des Betriebssystems unterstützt Ergänzende Zeichen.

Allgemeine Richtlinien für die Softwareentwicklung mit Zusatzzeichen

UTF-16 behandelt Ergänzende Zeichen als Ersatzpaare. Das Betriebssystem verarbeitet ein Ersatzpaar ähnlich wie die Art und Weise, wie es nicht übersteigenden Markierungenverarbeitet. Zur Anzeigezeit wird das Ersatzpaar als eine Glyphe mithilfe von Uniscribe angezeigt, wie vom Unicode-Standard vorgeschrieben.

Windows Vista führt drei neue Makros ein, um Surrogate- und Ersatzpaare in UTF-16-Zeichenfolgen zu identifizieren. Dies sind IS_HIGH_SURROGATE, IS_LOW_SURROGATEund IS_SURROGATE_PAIR.

Anwendungen unterstützen automatisch ergänzende Zeichen, wenn sie Unicode unterstützen und Systemsteuerelemente und Standard-API-Funktionen verwenden, z. B. ExtTextOut- und DrawText-. Wenn Ihre Anwendung standardmäßige Systemsteuerelemente verwendet oder allgemeine ExtTextOut--Typ-Aufrufe zum Anzeigen verwendet, sollten ergänzende Zeichen ohne spezielle Codierung funktionieren.

Anwendungen, die ihre eigene Bearbeitungsunterstützung implementieren, indem sie Glyphenpositionen auf angepasste Weise ausarbeiten, können Uniscribe für alle Textverarbeitungen verwenden. Uniscribe verfügt über separate Funktionen zum Umgang mit komplexer Skriptverarbeitung, z. B. Textanzeige, Treffertests und Cursorbewegungen. Eine Anwendung muss die Uniscribe-Funktionen speziell aufrufen, um diese erweiterten Features abzurufen. Beachten Sie, dass Anwendungen, die die Uniscribe-Funktionen verwenden, vollständig mehrsprachig sind, dies führt jedoch zu Leistungseinbußen. Daher sollten einige Anwendungen ihre eigene Verarbeitung von Zusatzzeichen durchführen.

Da der Ersatzmechanismus zur Darstellung zusätzlicher Zeichen gut definiert ist, kann Ihre Anwendung Code zum Behandeln von UTF-16-Ersatztextverarbeitung enthalten. Wenn die Anwendung einen getrennten UTF-16-Wert aus dem unteren reservierten Ersatzbereich (einem niedrigen Ersatz) oder dem oberen reservierten Ersatzbereich (einem hohen Ersatzbereich) findet, muss der Wert eine Hälfte eines Ersatzpaars sein. So kann die Anwendung ein Ersatzpaar erkennen, indem sie einfache Bereichsüberprüfungen durchführt. Wenn ein UTF-16-Wert im unteren oder oberen Bereich auftritt, muss er eine 16-Bit-Breite rückwärts oder vorwärts verfolgen, um den Rest des Zeichens abzurufen. Beachten Sie beim Schreiben Ihrer Anwendung, dass CharNext und CharPrev um 16-Bit-Codepunkte und nicht durch Ersatzpaare verschoben werden.

Anmerkung

Eigenständige Ersatzcodepunkte haben entweder einen hohen Ersatz ohne angrenzenden niedrigen Ersatz oder umgekehrt. Diese Codepunkte sind ungültig und werden nicht unterstützt. Ihr Verhalten ist nicht definiert.

 

Wenn Sie einen Schriftart- oder IME-Anbieter entwickeln, beachten Sie, dass vor Windows XP-Betriebssystemen standardmäßig die Unterstützung für ergänzende Zeichen deaktiviert wird. Windows XP und höher aktivieren standardmäßig Ergänzende Zeichen. Wenn Sie eine Schriftart und ein IME-Paket bereitstellen, das zusätzliche Zeichen erfordert, muss Ihre Anwendung die folgenden Registrierungswerte festlegen:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\LanguagePack]
SURROGATE=(REG_DWORD)0x00000002

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\42]
IEFixedFontName=[Surrogate Font Face Name]
IEPropFontName=[Surrogate Font Face Name]

Zeichensätze