Unicode -Steuerzeichen

Viele Unicode Zeichen werden verwendet, um die Interpretation oder Anzeige von Text zu steuern, aber diese Zeichen selbst haben keine visuelle oder räumliche Darstellung. Zum Beispiel die Nullcharakter (U+0000 NULL) wird in Anwendungsumgebungen von C-Programmierungen verwendet, um das Ende einer Zeichenfolge anzuzeigen. Auf diese Weise erfordern diese Programme nur eine einzige Startspeicheradresse für a Saite (Im Gegensatz zu einer Startadresse und einer Länge), da die Zeichenfolge endet, sobald das Programm den Nullzeichen liest.

Im engsten Sinne, a Kontrollcode ist ein Charakter mit dem Allgemeine Kategorie Cc, was das umfasst C0- und C1 -Kontrollcodes, ein Konzept in definiert in ISO/IEC 2022 und von Unicode geerbt, wobei der häufigste Satz definiert wird in ISO/IEC 6429. Kontrollcodes werden deutlich von gewöhnlichen Unicode -Zeichen gehandhabt, beispielsweise durch nicht zugewiesene Zeichennamen (obwohl ihnen normative formale Aliase zugewiesen wird).[1] In einem breiteren Sinne andere nicht druckende Formatfiguren, wie die in verwendeten in Bidirektionaler Text, werden auch als als bezeichnet als Steuerzeichen durch Software;[2] Diese werden hauptsächlich der allgemeinen Kategorie zugeordnet Cf (Format), verwendet für Format -Effektoren, die von Unicode selbst eingeführt und definiert wurden.

Kategorie "CC" -Kontrollcodes (C0 und C1)

Der Kontrollcode reicht 0x00–0x1f ("C0") und 0x7f stammen aus der Ausgabe von 1967 von 1967 von US-Ascii. Der Standard ISO/IEC 2022 (ECMA-35) Definiert Erweiterungsmethoden für ASCII, einschließlich eines sekundären "C1" -Sputzbereichs von 8-Bit-Kontrollcodes von 0x80 bis 0x9f, entspricht 7-Bit-Sequenzen von 7-Bit-Sequenzen von ESC mit den Bytes 0x40 bis 0x5f. Zusammen sind Codes in diesen Bereichen als die bekannt C0- und C1 -Kontrollcodes. Obwohl ISO/IEC 2022 das Vorhandensein mehrerer Kontrollcode -Sets ermöglicht, die unterschiedliche Interpretationen dieser Kontrollcodes angeben, ist ihre häufigste Interpretation in festgelegt ISO/IEC 6429 (ECMA-48).

Das ISO/IEC 8859 Reihe von Codierung entspricht an ISO/IEC 4873 (ECMA-43) Stufe 1, eine Teilmenge von ISO/IEC 2022, die für 8-Bit-Zeichencodierungen ausgelegt ist, behält sich daher den Bereich 0x80–0x9f für die Verwendung als nicht druckende Codes nach C1-Kontrollcode-Sätzen wie ISO/IEC 6429 vor.[3] Unicode erbt seine Erste und zweite Blöcke (bestehend aus U+0000 bis U+00ff) von ASCII und ISO/IEC 8859-1somit die C0- und C1 -Kontrollcodebereiche (U+0000 - U+001F, U+007F - U+009F) als allgemeine Kategorie "CC". Es weist diesen Kontrollcodes keine normativen Namen zu, obwohl es ihnen normative Aliase zuweist.[1]

Die Kategorie "CC" -Kontrollcodes können eine Vielzahl von Zwecken dienen, die nicht auf Format -Effektoren beschränkt sind: Zum Beispiel enthält der Standard -ASCII -C0 -Set sechs Format -Effektoren (BS, Ht, Lf, Vt, Ff und Cr), zehn Getriebekontrollen, vier Gerätesteuerungen, vier Informationsabscheider und acht weitere Steuercodes.[4] Die meisten dieser Charaktere spielen keine explizite Rolle bei der Handhabung von Unicode-Text Terminalemulatoren. Bestimmte Zeichen werden üblicherweise zum Formatieren oder zum Formatieren verwendet Wächter Zwecke:

  • U+0000 NULL (benutzt in Null-terminierte Saiten)
  • U+0009 Horizontale Tabellierung (HT) (Eingefügt von der Tab-Taste)
  • U+000A Linienfutter (LF) (verwendet als a Zeilenumbruch)
  • U+000C Formfutter (FF) (bezeichnet a Seitenumbruch in einer einfachen Textdatei)
  • U+000D Wagenrückgabe (CR) (verwendet in einigen Linienkonventionen)
  • U+0085 Nächste Zeile (NEL) (Manchmal als Zeilenumbruch im Text verwendet von transkodiert von Ebcdic)

Unicode gibt nur Semantik für an U+0009—U+000D, U+001c - u+001f, und U+0085 (Die ASCII -Format -Effektoren außer auf BS, plus die ASCII -Informationsabschlüsse und die C1 Nel). Die restlichen "CC" -Kontrollcodes sind für Unicode transparent und ihre Bedeutungen werden den Protokollen auf höherer Ebene überlassen, obwohl die Interpretation wie in ISO/IEC 6429 definiert wird als Standard.[5] Darüber hinaus bestimmte Spezialprotokolle auf höherer Ebene, wie z. B. transkodiert Teletetext, kann a beinhalten a unterschiedliche Interpretation des gesamten C0 -Kontrollcodebereichs.[6]

Unicode führte Separatoren ein

In einem Versuch, die verschiedenen zu vereinfachen Neue Zeile In Legacy -Text verwendete Charaktere wird Unicode seine eigenen neuen Zeichen für die Trennung von Zeilen oder Absätzen einführt: U+2028 Zeilenabscheider (abgekürzte LS oder LSEP) und U+2029 Absatzabscheider (abgekürzte PS oder PSEP).

Ls und PS sind wie CR und LF Effektoren für die Textformatierung; Im Gegensatz zu CR und LF werden sie nicht als "Kontrollcodes" für behandelt ECMA-35/ECMA-48 Zwecke (Kategorie Cc), eher die Semantik vollständig von Unicode selbst definiert. Sie werden zugewiesen SUI generis Unicode -Kategorien Zl und Zp jeweils unter der Hauptkategorie Z (Separator), das für bestimmte verwendet wird Whitespace -Charaktere.

Sprachtags

Unicode enthielt zuvor 128 Zeichen, die jetzt veraltet sind, für Sprach -Tags. Diese Charaktere spiegelten im Wesentlichen die 128 ASCII -Zeichen wider, wurden jedoch verwendet, um den nachfolgenden Text als zu einer bestimmten Sprache zu identifizieren, wie nach BCP 47. Zum Beispiel, um den nachfolgenden Text als die Variante des Englischen anzuzeigen, wie in den Vereinigten Staaten geschrieben, die Sequenz U+E0001 Sprachetikett, U+E0065 Tag kleiner Buchstabe e, U+e006e Tag kleiner Buchstaben n, U+e002d Tag Hyphen-Minus, U+E0075 Tag kleiner Buchstaben u und U+E0073 Tag kleiner Buchstaben s wäre benutzt worden.

Diese Sprach -Tag -Charaktere würden nicht selbst angezeigt. Sie würden jedoch Informationen für die Textverarbeitung oder sogar für die Anzeige anderer Zeichen bereitstellen. Beispielsweise könnte die Anzeige von Unihan -Ideografien verschiedene Glyphen ersetzt haben, wenn die Sprachetiketten Koreanisch angaben, als wenn die Tags Japaner angaben. Ein weiteres Beispiel, könnte die Anzeige der Dezimalstellen 0 bis 9 unterschiedlich beeinflusst haben, je nach der Sprache, in der sie erschienen.

Die Tag -Zeichen U+E0001 Sprachetikett und U+e007f Tag abbrechen wurden in Unicode 5.1 (2008) veraltet und sollten nicht für Sprachinformationen verwendet werden.[7] Die Charaktere U+E0020— U+E0073 wurden auch veraltet, wurden jedoch mit der Veröffentlichung von Unicode 8.0 (2015) wiederhergestellt. Die Änderung wurde vorgenommen, "um den Weg für die potenzielle zukünftige Verwendung von Tag -Zeichen für einen anderen Zweck als die Darstellung von Sprach -Tags zu klären".[8] Unicode besagt, dass "die Verwendung von Tags -Zeichen zur Darstellung von Sprach -Tags in einem einfachen Textstrom immer noch ein veralteter Mechanismus für die Vermittlung von Sprachinformationen über Text ist.[8]

Interlineare Annotation

Drei Formatierzeichen bieten Unterstützung für Interlineare Annotation ( U+fff9 ANKER, U+FFFA SEPARATOR, U+fffb Terminator). Dies kann zur Bereitstellung von Notizen verwendet werden, die normalerweise zwischen den Zeilen anderer Text angezeigt werden. Unicode betrachtet eine solche Annotation als reichhaltiger Text und empfiehlt die Verwendung anderer Protokolle für eine solche Annotation. Der W3C Ruby Markup Die Empfehlung ist ein Beispiel für ein alternatives Protokoll, das fortgeschrittenere interlineare Annotation unterstützt.

Bidirektionale Textkontrolle

Unicode unterstützt den Standard -Bidirektionaltext ohne Sonderzeichen. Mit anderen Worten sollte Unicode konforme Software von Rechts nach links wie hebräischen Buchstaben als Recht nach links aus einfach aus den Eigenschaften dieser Zeichen anzeigen. In ähnlicher Weise verarbeitet Unicode die Mischung aus links nach rechts neben rechts nach links ohne Sonderzeichen. Zum Beispiel kann man Arabisch („بسم الله“) (übersetzt als "Bismillah") direkt neben Englisch zitieren, und die arabischen Buchstaben fließen von rechts nach links und den lateinischen Buchstaben links nach rechts.

Die Direktionalität kann jedoch nicht korrekt erkannt werden, wenn zu Beginn eines Absatzes von rechts nach links links nach rechts (oder zu Beginn eines Rechts nach links) angegeben ist und umgekehrt),[2] und die Unterstützung für bidirektionalen Text wird noch komplizierter, wenn der in entgegengesetzte Richtungen fließende Text hierarchisch eingebettet wird, beispielsweise wenn ein englischer Text eine arabische Phrase zitiert, die wiederum einen englischen Satz zitiert. Andere Situationen können dies ebenfalls komplizieren, z. Während diese Situationen ziemlich selten sind, bietet Unicode zwölf Zeichen, um diese eingebetteten bidirektionalen Textstufen bis zu 125 Ebenen tief zu kontrollieren:[9]

  • U+061c ؜ Arabische Briefmarke
  • U+200e Marke von links nach rechts
  • U+200f Recht nach links
  • U+202a Einbettung von links nach rechts
  • U+202b Einbettung von Recht nach links
  • U+202c Pop -Richtungsformatierung
  • U+202d Überschreibung von links nach rechts
  • U+202E Recht nach links
  • U+2066 Links zu rechts Isolat
  • U+2067 Recht nach links
  • U+2068 Erster starkes Isolat
  • U+2069 Pop -Richtungs -Isolat

Variationswählern

Viele Zeichen müssen je nach Kontext zu alternativen Glyphen geordnet werden. Zum Beispiel ersetzen arabische und lateinische Kursivzeichen unterschiedliche Glyphen, um Glyphen miteinander zu verbinden, je nachdem, ob der Charakter der anfängliche Charakter in einem Wort, dem endgültigen Charakter, einem medialen Charakter oder einem isolierten Charakter ist. Diese Arten von Glyphensubstitution können durch den Kontext des Charakters ohne andere Autorierungseingaben leicht behandelt werden. Autoren können auch Spezialzeichen wie Tischler und Nichtjoiner verwenden, um eine alternative Form von Glyphen zu erzwingen, in der sie sonst nicht erscheinen würde. Ligaturen sind ähnliche Fälle, in denen Glyphen einfach durch Ein- oder Ausschalten von Ligaturen als reichhaltiges Textattribut ersetzt werden können.

Für andere Glyphensubstitution muss jedoch möglicherweise die Absicht des Autors mit dem Text codiert werden und kann nicht kontextuell bestimmt werden. Dies ist der Fall bei Zeichen/Glyphen, die als als bezeichnet Gaiji wo verschiedene Glyphen für denselben Charakter entweder historisch oder für Ideografien für Familiennamen verwendet werden. Dies ist einer der Grauzonen bei der Unterscheidung zwischen einer Glyphe und einem Charakter. Wenn sich ein Familienname geringfügig vom ideographischen Charakter unterscheidet, aus dem er abgeleitet ist, dann ist eine einfache Glyphe -Variante oder eine Zeichenvariante. Ab Unicode 3.2 und 4.0 enthält der Zeichensatz nun 256 Variationswählern, so dass diese Kombinationszeichen aus 256 möglichen Zeichen/Glyphenvariationen für das vorhergehende Zeichen auswählen können.

Kontrollbilder

Unicode bietet grafische Zeichen für die Darstellung C0 -Steuercodes (und Platz und ein generisches Neue Zeile) in dem Kontrollbilder Block. Sie sind visuelle Darstellungen, nicht die tatsächlichen Kontrollcodes selbst. Es gibt keine äquivalenten Zeichen für die C1 -Kontrollcodes.

Kontrollbilder[1][2]
Offizielles Unicode -Konsortium -Code -Diagramm (PDF)
  0 1 2 3 4 5 6 7 8 9 A B C D E F
U+240x
U+241x
U+242x
U+243x  
1. ^ Ab der Unicode Version 14.0
2. ^ Graubereiche geben nicht zugewiesene Codepunkte an

Siehe auch

Verweise

  1. ^ a b "Name Aliase". Unicode -Zeichendatenbank. Unicode -Konsortium.
  2. ^ a b Segan, Danilo. "Auf dem Weg zu einem lokalisierten Desktop". In einigen Fällen, in denen die automatische Entscheidungsfindung nicht funktioniert, können Sie bestimmte Richtungsmarkierungen manuell hinzufügen, indem Sie mit der rechten Maustaste auf das Textfeld klicken, "Einfügen von Unicode Control-Zeichen einfügen" aus dem Menü auswählen und die entsprechende Richtungsmarke auswählen. Auf diese Weise können Sie beispielsweise Ihren RTL -Text mit einem ansonsten LTR -Wort (z. B. "GNOME") starten.
  3. ^ ISO/IEC JTC 1/SC 2/WG 3 (1998-02-12). Endgültiger Text von Dis 8859-1, 8-Bit-Single-Byte-Coded Grafikzeichen-Sets-Teil 1: Lateinisches Alphabet Nr. 1 (PDF). ISO/IEC FDIS 8859-1: 1998; JTC1/SC2/N2988; WG3/N411. Dieser Satz codierter grafischer Zeichen kann als Version eines 8-Bit-Codes gemäß ISO/IEC 2022 oder ISO/IEC 4873 auf Stufe 1 angesehen werden Grafikzeichen darstellen. Ihre Verwendung liegt außerhalb des Rahmens von ISO/IEC 8859; Es ist in anderen internationalen Standards angegeben, zum Beispiel ISO/IEC 6429.
  4. ^ ISO/TC 97/SC 2 (1975). Die Menge der Kontrollzeichen des ISO 646 (PDF). Itcj/Ipsj. ISO-IR-1.
  5. ^ Unicode -Konsortium (2019). 23.1: Kontrollcodes (PDF). Der Unicode -Standard (12.0.0 ed.). S. 868–870. ISBN 978-1-936213-22-1.
  6. ^ Ewell, Doug (2020-10-16). "TeleText getrennte Mosaikgrafiken". Unicode Mailing List Archiv. Unicode -Konsortium. Ich wiederhole, dass es UTC war [Unicode Technischer Ausschuss] und Skript ad hoc, die die Anleitung für die Gruppe gegeben haben, die das schrieb Symbole für Legacy Computing Vorschlag (und es gibt eine Sekunde unterwegs), dass 0x00 bis 0x1f im ursprünglichen TeleText -Set beim Konvertieren in Unicode auf U+0000 über U+001F zugeordnet werden sollte.
  7. ^ Klensin, John C.;Presuhn, Randy;Whistler, Ken;Dürst, Martin J.;Adams, Glenn (November 2010). "RFC6082: Unicode -Sprach -Tag -Zeichen abwerten: RFC 2482 ist historisch".Internet Engineering Task Force (IETF). {{}}: Journal zitieren erfordert |journal= (Hilfe)
  8. ^ a b "Unicode 8.0.0, Auswirkungen auf die Migration". Unicode -Konsortium.
  9. ^ "UAX #9: Unicode Bidirektionaler Algorithmus".Unicode -Konsortium.2018-05-09.