Dein arabischer Titel ist nicht kaputt — der Store liest ihn in eine andere Richtung

8 Min. LesezeitJede Zahl belegt

Wenn ein arabischer, persischer oder Urdu-Titel im Store mit der Klammer auf der falschen Seite ankommt, mit der „feat.“-Nennung ans äußerste Ende geschoben oder mit einer Katalognummer, die dort schwebt, wo sie nicht hingehört, ist nichts beschädigt worden. Die Bytes, die du getippt hast, sind fast immer die Bytes, die angekommen sind. Verändert hat sich die Grundrichtung des Kastens, in den der Text gezeichnet wird, und die entscheidet die Seite des Stores, nicht dein Titel. Dieser Artikel erklärt den Mechanismus genau genug, dass du vor der Auslieferung vorhersagen kannst, welche deiner Titel brechen werden.

Eines gleich vorweg, weil es die ehrliche Position ist: Uns ist branchenweit keine veröffentlichte Messung der Fehlerquote bei Metadaten in arabischer Schrift bekannt. Das Problem wird überall erlebt und ist vollständig unquantifiziert. Unten steht keine Zahl, weil es keine Zahl zu nennen gibt.

Logische Reihenfolge und Anzeigereihenfolge sind zwei verschiedene Dinge

Unicode speichert Text in logischer Reihenfolge — der Reihenfolge, in der du ihn sprichst, tippst und vorliest. Die Anzeigereihenfolge wird daraus beim Rendern berechnet, durch den Unicode-Bidirektionalalgorithmus, definiert in Unicode Standard Annex #9 (UAX #9). Der Annex ist unmissverständlich, was diese Trennung angeht: „The Unicode Standard prescribes a memory representation order known as logical order“ und „When working with bidirectional text, the characters are still interpreted in logical order—only the display is affected.“

Dieser eine Satz erklärt das Phänomen, das Künstler mit arabischer Schrift glauben lässt, ihre Metadaten seien verhext: Die gespeicherte Zeichenkette kann vollkommen korrekt sein, während die Anzeige falsch ist, und sie kann optisch korrekt sein, während die gespeicherten Bytes falsch sind — und auf dem Bildschirm sehen die beiden Fehler identisch aus. Das kannst du nicht durch Hinsehen prüfen. Der Support-Mitarbeiter deines Vertriebs auch nicht.

Warum ein lateinischer Baustein in einer RTL-Zeichenkette wandert

UAX #9 gibt jedem Zeichen einen bidirektionalen Typ. Arabische, persische und Urdu-Buchstaben sind AL (rechtsläufige arabische Buchstaben). Lateinische Buchstaben sind L. ASCII-Ziffern sind EN (European Number), arabisch-indische Ziffern sind AN (Arabic Number). Leerzeichen und die meisten Satzzeichen — darunter runde Klammern, eckige Klammern, Bindestrich und Punkt — sind neutral, das heißt, sie haben keine eigene Richtung und erben eine aus ihrer Umgebung.

Zwei Regelgruppen richten den Schaden an.

Absatzrichtung, Regeln P2–P3. Der Algorithmus sucht das erste starke Richtungszeichen und setzt daraus die Grundrichtung. Ein Titel, der mit einem lateinischen Wort beginnt, bekommt linksläufige Grundrichtung, selbst wenn alles danach persisch ist.

Auflösung der Neutralen, Regeln N1–N2. Regel N1: „A sequence of [neutrals] takes the direction of the surrounding strong text if the text on both sides has the same direction.“ Regel N2: Neutrale ohne Konsens bekommen die Absatzrichtung. Dann ordnet Regel L2 für die Anzeige um — „reverse any contiguous sequence of characters that are at that level or higher.“

Zusammengenommen ist der Fehler deterministisch, nicht zufällig. Ein lateinischer Baustein — der Name eines Remixers, feat., Vol. 2, eine Katalognummer, eine Jahreszahl — sitzt auf einer anderen Einbettungsebene als das Arabische ringsum. Die Neutralen an seinen Grenzen (das Leerzeichen, die öffnende Klammer) haben auf der einen Seite Arabisch und auf der anderen Latein, also findet N1 keinen Konsens und N2 gibt ihnen die Absatzrichtung. Eine Klammer, die sich in deinem rechtsläufigen Texteditor so aufgelöst hat, löst sich auf einer linksläufigen Store-Seite andersherum auf, und die Klammer löst sich und kippt.

نام آهنگ (Nima Remix) ist also nicht kaputt. Es ist eine Zeichenkette, die in zwei Kontexten aufgelöst wird. Grundrichtung ist Kontext, nicht Inhalt, und der Kontext des Stores ist nicht deiner.

Das eine, was du niemals tun darfst

Repariere die Anzeige nicht dadurch, dass du die Zeichen rückwärts tippst, bis die Vorschau richtig aussieht.

Das erzeugt eine Zeichenkette, die in logischer Reihenfolge falsch ist, in genau einem Rendering-Kontext richtig und überall sonst kaputt — auch in Suche, Sortierung, Künstlerzuordnung und in jedem Store, dessen Seite eine andere Grundrichtung hat als das Werkzeug, in dem du es repariert hast. Du hättest damit ein Anzeigeproblem, das behebbar ist, in ein Datenproblem verwandelt, das es nicht ist.

UAX #9 definiert durchaus Zeichen, um das ausdrücklich zu steuern: die Isolate LRI, RLI, FSI und PDI sowie die Marken LRM, RLM und ALM. Sie sind die technisch korrekte Lösung. Sie sind aber auch unsichtbare Formatierungszeichen, und viele Lieferketten entfernen unsichtbare Formatierungszeichen, ohne es dir zu sagen. Behandle sie in einem Metadatenfeld als unzuverlässig.

Die strukturelle Lösung: den lateinischen Baustein aus der Mitte holen

Die Abhilfe, die überall funktioniert, in jedem Renderer, ohne unsichtbare Zeichen, ist strukturell. In dieser Vorzugsreihenfolge:

  • Nutze getrennte Felder statt Zeichenketten mit gemischter Richtung, wo immer das Datenmodell sie anbietet. Ein Gastkünstler gehört auf die Ebene der Künstlerrolle, nicht in den Titel. Der Music Metadata Style Guide der Music Biz rät, Gastkünstler auf der Ebene der Künstlerrolle zu nennen und diese Angabe nicht in den Track- oder Album-Titel zu schreiben; Spotifys öffentliche Vorgabe lautet „You shouldn't include any artists' names in your track or release titles.“ Eine Version gehört ins Versionsfeld, dessen ganze Aufgabe darin besteht, zwei Aufnahmen mit gleichem Titel zu unterscheiden. Jeder lateinische Baustein, den du in ein eigenes Feld verschiebst, ist eine Richtungsgrenze, die aufhört zu existieren.
  • Halte jeden unvermeidbaren lateinischen Baustein aus der ersten Position heraus. Die erste Position setzt nach P2–P3 die Absatzrichtung. Ein persischer Titel, der mit einem lateinischen Wort beginnt, ist ein linksläufiger Absatz mit persischem Inhalt, und das war nicht gemeint.
  • Vermeide dekorative Satzzeichen an Richtungsgrenzen. Gedankenstriche, Schrägstriche, Pipes und verschachtelte Klammern sind Neutrale, die genau dort sitzen, wo der Algorithmus die wenigsten Informationen hat.

Wo ein Vertrag die Nennung im Titel tatsächlich verlangt, sind die Konventionen festgelegt und es lohnt sich, ihnen genau zu folgen. Music Biz zu „feat.“ und „with“: „when included in the title are generally lowercase and in English.“ Apples Style Guide: „Formatting of 'feat.' and 'with' must be lowercase, in English, not localized, and in parentheses or brackets.“ Diese Anweisung „not localized“ leistet hier echte Arbeit — übersetze „feat.“ in einem Titelfeld nicht ins Arabische, Persische oder Urdu. Es ist ein maschinenlesbarer Baustein, kein Wort.

Ziffern, und warum deine vielleicht nicht die sind, für die du sie hältst

Drei Ziffernsätze sind im Spiel:

SatzCodepunkteVerwendet inBidi-Klasse
ASCII0–9überallEN
Arabisch-indischU+0660–U+0669 (٠١٢٣٤٥٦٧٨٩)ArabischAN
Erweitert arabisch-indischU+06F0–U+06F9 (۰۱۲۳۴۵۶۷۸۹)Persisch, UrduEN

Das sind keine stilistischen Varianten. Es sind verschiedene Codepunkte, und laut Unicode Character Database teilen sie nicht einmal dieselbe bidirektionale Klasse. UAX #9 Regel W2 typisiert eine europäische Zahl in eine arabische Zahl um, wenn das nächste vorangehende starke Zeichen ein arabischer Buchstabe ist, sodass sich die beiden innerhalb persischen Textes bei der Anzeige gleich verhalten können — aber nie beim Sortieren, Suchen oder Vergleichen von Zeichenketten, denn es sind verschiedene Zeichen. Ein „Vol. 2“ mit einer erweitert arabisch-indischen ۲ und ein „Vol. 2“ mit einer ASCII-2 sind zwei verschiedene Zeichenketten, die fast identisch aussehen.

Wähle einen Ziffernsatz pro Katalog und mische innerhalb einer Zeichenkette nie zwei Sätze.

Wie du prüfst, was du tatsächlich getippt hast

Der Anzeige ist nicht zu trauen, also prüfe die Bytes. Drei Dinge lohnen sich vor jeder Lieferung:

  1. Lies die Zeichenkette als Codepunkte, nicht als Glyphen. Jedes Werkzeug, das dir U+-Werte zeigt, sagt dir sofort, ob das ein persisches ی (U+06CC) oder ein arabisches ي (U+064A) ist, ein persisches ک (U+06A9) oder ein arabisches ك (U+0643) — ein Unterschied, den die meisten Schriften einebnen und den kein Korrekturleser sehen kann. Dasselbe gilt für ein verirrtes Tatweel (U+0640), das keine Unicode-Normalisierungsform entfernt, und für einen Zero-Width-Non-Joiner (U+200C), den ein Formularfeld stillschweigend verschluckt hat.
  2. Füge den Titel in einen linksläufigen und in einen rechtsläufigen Kontext ein und vergleiche. Landet die Interpunktion in beiden unterschiedlich, hast du eine Zeichenkette mit gemischter Richtung und einen lateinischen Baustein, der in ein eigenes Feld gehört.
  3. Vergleiche zeichenweise mit deiner vorigen Veröffentlichung, nicht nach Augenmaß. Aufgespaltene Kataloge in arabischer Schrift entstehen fast immer durch einen unsichtbaren Unterschied: eine Veröffentlichung auf einem persischen Tastaturlayout getippt, die nächste auf einem arabischen.

Mazufas Werkzeuge laufen vollständig in deinem Browser — es wird weder Audio noch Text hochgeladen — und sie setzen automatisch dir="rtl", wenn ein Titel rechtsläufig ist, sodass das, was du beim Tippen siehst, dem Kontext entspricht, für den die Zeichenkette geschrieben wurde. Auf mazufa.com liegt außerdem ein kostenloser Metadatenprüfer, der auf deinem eigenen Gerät läuft und mehrere der unsichtbaren Fälle meldet: gemischte Ziffernsätze, Tatweel, verirrte oder fehlende ZWNJ, arabisches gegen persisches Yeh und Kaf sowie Zeichenketten, die nicht in NFC vorliegen.

Was du vor der Lieferung tust

Nimm Titel und Künstlernamen deiner nächsten Veröffentlichung und tu vier Dinge. Verschiebe jeden lateinischen Baustein, den du verschieben kannst, in ein eigenes Feld — Gastkünstler in die Künstlerrolle, Versionen ins Versionsfeld. Sorge dafür, dass nichts mit einem lateinischen Wort beginnt. Vereinheitliche deinen Ziffernsatz und entferne jedes Tatweel. Lies die Zeichenkette dann einmal als Codepunkte und speichere genau diese Zeichenkette als die kanonische Schreibweise, die du bei jeder künftigen Veröffentlichung wiederverwendest, ohne sie neu zu tippen.

Wenn ein Titel doch einen lateinischen Baustein in der Mitte tragen muss, liefere ihn und akzeptiere, dass er an verschiedenen Orten verschieden dargestellt wird. Das ist ein Anzeigeergebnis, kein Schaden. Die Zeichenkette ist korrekt. Sie rückwärts neu zu tippen, damit eine Vorschau richtig aussieht, ist die einzige Art, sie tatsächlich falsch zu machen.

Quellen

  • Unicode Standard Annex #9, Unicode Bidirectional Algorithm (Revision 51, Unicode 17.0.0, 2025-08-13) — https://www.unicode.org/reports/tr9/
  • Unicode Standard Annex #15, Unicode Normalization Forms (Version 57, Unicode 17.0.0, 2025-07-30) — https://www.unicode.org/reports/tr15/
  • Unicode Character Database — Zeicheneigenschaften: bidirektionale Klasse, Zerlegungsabbildungen — https://www.unicode.org/ucd/
  • Music Business Association, Music Metadata Style Guide v2.1 — https://www.musicbiz.org/wp-content/uploads/2016/04/MusicMetadataStyleGuide_V2.1.pdf
  • Apple Music Style Guide — https://help.apple.com/itc/musicstyleguide/en.lproj/static.html
  • Spotify for Artists, Music metadata guidelines — https://support.spotify.com/us/artists/article/metadata-formatting-guidelines/

Der Korpus gibt für diese Dokumente Versions- und Revisionsdaten an, wie oben aufgeführt, und erfasst kein gesondertes Lesedatum für sie.

KOSTENLOSE WERKZEUGE

Jedes Werkzeug, das Mazufa baut, läuft in deinem Browser, kostet nichts und braucht kein Konto.

Werkzeugkasten öffnen ⇥