De ce un personaj din Telugu este un dispozitiv care împiedică Apple

Warum ein Telugu-Charakter Apple-Geräte mauert

⌛ Reading Time: 4 minutes

Apple hat seit einigen Monaten einen Buggy. Jetzt haben wir einen neuen, schwerwiegenden Fehler in der Textwiedergabefunktion in iPhones. Der Fehler wird durch einen einzelnen Telugu-Charakter ausgelöst, der dazu führen kann, dass ein iPhone in eine unzerbrechliche Startschleife eintritt, indem nur eine Benachrichtigung mit dem Charakter empfangen wird. Lassen Sie uns untersuchen, warum ein einzelnes Zeichen unter iOS so große Probleme verursachen kann.

Hinweis: Ein Fix für den Telugu-Fehler ist in der neuesten Version von verfügbar iOS (11.2.6). Wenn der Telugu-Charakter Ihre App oder Ihr Gerät gesperrt hat, stellen Sie Ihr iPhone über iTunes wieder her und aktualisieren Sie es auf die neueste Version von iOS. Wenn Ihr iPhone in einer Boot-Schleife steckt, müssen Sie es möglicherweise in die DFU-Status (Device Firmware Update) damit iTunes es erkennt. Wenn Sie fertig sind, stellen Sie Ihr Gerät aus Ihrer letzten Sicherung wieder her, die Sie hoffentlich erstellt haben.

Was ist Telugu?

Telugu ist eine Sprache, die in Teilen Indiens gesprochen und geschrieben wird, insbesondere in den Bundesstaaten Andhra Pradesh, Telangana und in der Stadt Yanam. Wie viele skriptbasierte Sprachen wie Arabisch und andere brahmische Skripte verwendet Telugu einige Besonderheiten des Unicode-Zeichensatzes, um seine Zeichen auf einem Computerbildschirm anzuzeigen.

Während die meisten lateinischen Buchstaben aus Gründen der ASCII-Kompatibilität durch einen einzelnen 8-Bit-Unicode-Codepunkt dargestellt werden (z. B. der Buchstabe) EIN existiert am Unicode-Codepunkt U+0041, die binär dargestellt durch 01000001), Sprachen, die mit Skript oder nicht-lateinischen Buchstaben geschrieben wurden, kombinieren normalerweise mehr als einen Unicode-Codepunkt, um ihre Zeichen darzustellen.

Dies gilt insbesondere für Sprachen wie Telugu, die die Buchstabenversionen der Sprachen in Clustern kombinieren. Im Gegensatz zu den stilistischen Ligaturen des Englischen ist die Verbindung zwischen den einzelnen Telugu-Buchstaben sprachlich wichtig. Um dies zu berücksichtigen, enthält Unicode ein komplexes System zum Anhängen von Zeichen, die jeweils durch einen eigenen Codepunkt dargestellt werden.

In Anbetracht der schieren Anzahl von Unicode-Codepunkten kann dies zu einer nahezu unendlichen Vielfalt führen. Diese Punkte verbinden sich zu einem lesbaren Zeichen. Auf diese Weise benötigt Unicode keinen Unicode-Codepunkt für buchstäblich jedes mögliche Telugu-Wort. Stattdessen kombiniert Unicode Telugu-Konsonanten, Vokale und Diakritika („Virama“), um Wörter zu erstellen, die wie ein einzelnes Zeichen angezeigt werden. Gleiches gilt für andere Sprachen mit orthografischen Regeln für Ligaturen wie Arabisch.

Was verursacht den Absturz?

Telugu-Charakter-Crashing-Ios

Das Problem scheint mit dem Zero Width Non-Joiner (ZWNJ) am Codepunkt zu zusammenhängen U+200C. Das ZWNJ fordert zwei benachbarte Zeichen auf, ohne ihre typische Ligatur zu rendern. Auf Englisch verhindert ein ZWNJ, dass die Zeichen ff mit ihrer Standardverbindungsligatur gedruckt werden, anstatt jedes f zu trennen. In Kombination mit einem bestimmten Satz von vier Telugu-Codepunkten (die alle zu einem einzigen Cluster kombiniert werden sollten) kann iOS das Ergebnis aus irgendeinem Grund nicht richtig anzeigen.

Einige haben spekuliert, dass Apples Schriftart San Francisco das Zeichen nicht anzeigen kann, während andere dies gesagt haben Schuld daran ist der spezifische Rendering-Prozess, den Apple verwendet. Unabhängig von der genauen Ursache führt der Versuch, den Charakter zu rendern, zu einem dramatischen Absturz von allem, was ihn rendert, von Nachrichten und WhatsApp bis Springboard. Die Unicode-Codepunkte, aus denen das Zeichen besteht (“gya” bedeutet “Wissen”), sind unten aufgeführt:

  • U+0C1C ja (Telugu-Charakter-Crashing-Ios-Ja)
  • U+0C4D ein virama oder diakritisches Zeichen (Telugu-Charakter-Crashing-Ios-Virama)
  • U+0C1E nya (Telugu-Charakter-Absturz-ios-nya)
  • U+200C Nicht-Joiner mit einer Breite von Null
  • U+0C3E aa ( Telugu-Charakter-Absturz-ios-aa )

Aber wir können Zero Width Non-Joiner (ZWNJ) nicht einmal allein beschuldigen. Es wird auch in den harmlosen Familien-Emojis (?‍?‍?‍?) Ohne Probleme verwendet. Es scheint eine bestimmte Kombination einiger spezifischer Codepunkte und des ZWNJ zu sein. Wenn man die Verletzung zusätzlich beleidigt, scheint es, dass der ZWNJ entweder keinen besonderen Einfluss auf das Rendering in diesem Telugu-Cluster hat oder dass er überhaupt nicht vorhanden sein sollte.

Andere Probleme mit der brahmischen Schrift

Telugu ist jedoch nicht die einzige Sprache mit diesem Problem. Bengali und Devanagari, die Unicode auf ähnliche Weise für ihre brahmischen Skripte verwenden, haben das gleiche Problem. Manish Goregaokar schreibt einen faszinierenden und detaillierten Blog-Beitrag, der den genauen Crash-Fall noch weiter aufschlüsselt:

Beliebige Reihenfolge <consonant1, virama, consonant2, ZWNJ, vowel> in Devanagari, Bengali und Telugu, wo:

1. consonant2 ist Suffix-Joining (pstf/.vatu)
2. consonant1 ist kein reph-bildender Brief
3. vowel hat keine zwei Glyphenkomponenten

Fazit: Warum wurde das nicht von Apple gefangen?

Um zu verstehen, wie dieser Fehler aufgetreten ist, müssen Sie sich in Apples Schuhe stecken. Sicher, diese Zeichenkombination ist kein super obskures Wort in der Telugu-Sprache. Das iPhone unterstützt jedoch Dutzende von Sprachen. Es gibt buchstäblich Milliarden möglicher Kombinationen in Unicode. Bei dieser Vielfalt würde ein aussagekräftiges Testen auf Unicode-Fehler vor einer Veröffentlichung regelmäßige Software-Updates grundsätzlich unmöglich machen.

Der Fehler sollte jedoch nicht so viel Schaden verursacht haben. Telefone sollten nicht aufgrund des Inhalts einer Textnachricht gemauert werden. Im Nachhinein ist es sicherlich 20/20, aber es scheint, als wäre es besser gewesen, den Charakter als Fragezeichen ( ) zu rendern, als Springboard zum Absturz zu bringen.

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

[pt_view id="5aa2753we7"]

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.