Ο αραβικός σου τίτλος δεν έχει αλλοιωθεί — το κατάστημα τον διαβάζει σε άλλη κατεύθυνση

8 λεπτά ανάγνωσηςΚάθε μέγεθος με πηγή

Όταν ένας τίτλος στα αραβικά, τα περσικά ή τα ουρντού φτάνει σε ένα κατάστημα με την παρένθεση στη λάθος πλευρά, με τη μνεία «feat.» σπρωγμένη στην άλλη άκρη ή με έναν αριθμό καταλόγου να αιωρείται εκεί που δεν πρέπει, τίποτα δεν έχει αλλοιωθεί. Τα byte που πληκτρολόγησες είναι σχεδόν πάντα τα byte που έφτασαν. Αυτό που άλλαξε είναι η βασική κατεύθυνση του πλαισίου μέσα στο οποίο σχεδιάζεται το κείμενο, και αυτή την αποφασίζει η σελίδα του καταστήματος, όχι ο τίτλος σου. Το άρθρο εξηγεί τον μηχανισμό αρκετά ακριβώς ώστε να προβλέπεις ποιοι από τους τίτλους σου θα χαλάσουν πριν τους παραδώσεις.

Ένα πράγμα να ειπωθεί εξαρχής, γιατί είναι η τίμια θέση: δεν γνωρίζουμε καμία δημοσιευμένη μέτρηση ποσοστών σφάλματος για μεταδεδομένα σε αραβική γραφή, πουθενά στον κλάδο. Το πρόβλημα το βιώνουν όλοι και δεν είναι καθόλου ποσοτικοποιημένο. Παρακάτω δεν εμφανίζεται κανένα μέγεθος, γιατί δεν υπάρχει μέγεθος να δοθεί.

Η λογική σειρά και η σειρά εμφάνισης είναι δύο διαφορετικά πράγματα

Το Unicode αποθηκεύει κείμενο σε λογική σειρά — τη σειρά με την οποία το λες, το πληκτρολογείς και το διαβάζεις φωναχτά. Η σειρά εμφάνισης υπολογίζεται από αυτήν κατά την απόδοση, από τον αμφίδρομο αλγόριθμο του Unicode που ορίζεται στο Unicode Standard Annex #9 (UAX #9). Το παράρτημα είναι ωμό ως προς τον διαχωρισμό: «The Unicode Standard prescribes a memory representation order known as logical order» και «When working with bidirectional text, the characters are still interpreted in logical order—only the display is affected.»

Αυτή η μία πρόταση εξηγεί το φαινόμενο που κάνει τους καλλιτέχνες της αραβικής γραφής να πιστεύουν ότι τα μεταδεδομένα τους είναι στοιχειωμένα: η αποθηκευμένη συμβολοσειρά μπορεί να είναι απολύτως σωστή ενώ η εμφάνιση είναι λάθος, και μπορεί να δείχνει σωστή ενώ τα αποθηκευμένα byte είναι λάθος — και στην οθόνη οι δύο αστοχίες φαίνονται ίδιες. Δεν μπορείς να το ελέγξεις κοιτάζοντας. Ούτε ο υπάλληλος υποστήριξης του διανομέα σου μπορεί.

Γιατί μετακινείται ένα λατινικό στοιχείο μέσα σε συμβολοσειρά RTL

Το UAX #9 δίνει σε κάθε χαρακτήρα έναν αμφίδρομο τύπο. Τα αραβικά, περσικά και ουρντού γράμματα είναι AL (αραβικά γράμματα από δεξιά προς αριστερά). Τα λατινικά γράμματα είναι L. Τα ψηφία ASCII είναι EN (European Number), τα αραβοϊνδικά ψηφία είναι AN (Arabic Number). Τα κενά και το μεγαλύτερο μέρος της στίξης — μαζί με τις παρενθέσεις, τις αγκύλες, το ενωτικό και την τελεία — είναι ουδέτερα, δηλαδή δεν έχουν δική τους κατεύθυνση και την κληρονομούν από το περιβάλλον τους.

Δύο ομάδες κανόνων κάνουν τη ζημιά.

Κατεύθυνση παραγράφου, κανόνες P2–P3. Ο αλγόριθμος ψάχνει τον πρώτο ισχυρό κατευθυντικό χαρακτήρα και ορίζει από αυτόν τη βασική κατεύθυνση. Ένας τίτλος που ξεκινά με λατινική λέξη παίρνει κατεύθυνση από αριστερά προς δεξιά ακόμη κι αν όλα όσα ακολουθούν είναι περσικά.

Επίλυση ουδετέρων, κανόνες N1–N2. Κανόνας N1: «A sequence of [neutrals] takes the direction of the surrounding strong text if the text on both sides has the same direction.» Κανόνας N2: τα ουδέτερα χωρίς συμφωνία παίρνουν την κατεύθυνση της παραγράφου. Έπειτα ο κανόνας L2 αναδιατάσσει για την εμφάνιση — «reverse any contiguous sequence of characters that are at that level or higher.»

Βάλ' τα μαζί και η αστοχία είναι ντετερμινιστική, όχι τυχαία. Ένα λατινικό στοιχείο — το όνομα ενός remixer, το feat., ένα Vol. 2, ένας αριθμός καταλόγου, μια χρονιά — κάθεται σε διαφορετικό επίπεδο ενσωμάτωσης από τα αραβικά γύρω του. Τα ουδέτερα στα όριά του (το κενό, η ανοιχτή παρένθεση) έχουν αραβικά από τη μία πλευρά και λατινικά από την άλλη, οπότε ο N1 δεν βρίσκει συμφωνία και ο N2 τους δίνει την κατεύθυνση της παραγράφου. Μια παρένθεση που επιλυόταν με έναν τρόπο στον δικό σου επεξεργαστή κειμένου από δεξιά προς αριστερά επιλύεται αντίστροφα σε μια σελίδα καταστήματος από αριστερά προς δεξιά, και η παρένθεση αποκολλάται και γυρίζει.

Άρα το نام آهنگ (Nima Remix) δεν είναι χαλασμένο. Είναι μία συμβολοσειρά που επιλύεται σε δύο περιβάλλοντα. Η βασική κατεύθυνση είναι περιβάλλον, όχι περιεχόμενο, και το περιβάλλον του καταστήματος δεν είναι το δικό σου.

Το ένα πράγμα που δεν πρέπει ποτέ να κάνεις

Μη «διορθώνεις» την εμφάνιση πληκτρολογώντας τους χαρακτήρες ανάποδα ώσπου η προεπισκόπηση να δείχνει σωστή.

Αυτό παράγει μια συμβολοσειρά λανθασμένη σε λογική σειρά, σωστή σε ακριβώς ένα περιβάλλον απόδοσης και χαλασμένη παντού αλλού — μαζί με την αναζήτηση, την ταξινόμηση, την αντιστοίχιση καλλιτεχνών και κάθε κατάστημα του οποίου η σελίδα έχει άλλη βασική κατεύθυνση από το εργαλείο μέσα στο οποίο τη «διόρθωσες». Θα έχεις μετατρέψει ένα πρόβλημα εμφάνισης, που είναι ανακτήσιμο, σε πρόβλημα δεδομένων, που δεν είναι.

Το UAX #9 όντως ορίζει χαρακτήρες για ρητό έλεγχο αυτού: τους απομονωτές LRI, RLI, FSI και PDI, και τα σημάδια LRM, RLM και ALM. Είναι η τεχνικά σωστή λύση. Είναι επίσης αόρατοι χαρακτήρες μορφοποίησης, και πολλές αλυσίδες παράδοσης αφαιρούν τους αόρατους χαρακτήρες μορφοποίησης χωρίς να σου το πουν. Αντιμετώπισέ τους ως αναξιόπιστους μέσα σε πεδίο μεταδεδομένων.

Η δομική λύση: βγάλε το λατινικό στοιχείο από τη μέση

Το μέτρο που δουλεύει παντού, σε κάθε μηχανή απόδοσης, χωρίς αόρατους χαρακτήρες, είναι δομικό. Κατά σειρά προτίμησης:

  • Χρησιμοποίησε χωριστά πεδία αντί για συμβολοσειρές μεικτής κατεύθυνσης, όπου σου τα προσφέρει το μοντέλο δεδομένων. Ένας συμμετέχων καλλιτέχνης ανήκει στο επίπεδο του ρόλου καλλιτέχνη, όχι στον τίτλο. Ο Music Metadata Style Guide της Music Biz συμβουλεύει να πιστώνονται οι συμμετέχοντες καλλιτέχνες στο επίπεδο του ρόλου καλλιτέχνη και να μην προστίθενται αυτά τα δεδομένα στον τίτλο του κομματιού ή της κυκλοφορίας· η δημόσια οδηγία του Spotify είναι «You shouldn't include any artists' names in your track or release titles.» Μια εκδοχή ανήκει στο πεδίο εκδοχής, του οποίου όλη η δουλειά είναι να ξεχωρίζει δύο ηχογραφήσεις που μοιράζονται τίτλο. Κάθε λατινικό στοιχείο που μετακινείς στο δικό του πεδίο είναι ένα αμφίδρομο όριο που παύει να υπάρχει.
  • Κράτα κάθε αναπόφευκτο λατινικό στοιχείο έξω από την πρώτη θέση. Η πρώτη θέση ορίζει την κατεύθυνση της παραγράφου κατά τους P2–P3. Ένας περσικός τίτλος που ανοίγει με λατινική λέξη είναι παράγραφος από αριστερά προς δεξιά που περιέχει περσικά, που δεν είναι αυτό που εννοούσες.
  • Απόφυγε τη διακοσμητική στίξη στα όρια κατεύθυνσης. Οι παύλες, οι κάθετοι, οι κατακόρυφες γραμμές και οι στοιβαγμένες αγκύλες είναι ουδέτερα που κάθονται ακριβώς εκεί όπου ο αλγόριθμος έχει τη λιγότερη πληροφορία.

Εκεί όπου ένα συμβόλαιο απαιτεί πράγματι τη μνεία μέσα στον τίτλο, οι συμβάσεις είναι παγιωμένες και αξίζει να τηρούνται κατά γράμμα. Η Music Biz, για το «feat.» και το «with»: «when included in the title are generally lowercase and in English.» Ο οδηγός ύφους της Apple: «Formatting of 'feat.' and 'with' must be lowercase, in English, not localized, and in parentheses or brackets.» Εκείνο το «not localized» κάνει εδώ πραγματική δουλειά — μη μεταφράζεις το «feat.» στα αραβικά, τα περσικά ή τα ουρντού μέσα σε πεδίο τίτλου. Είναι σύμβολο αναγνώσιμο από μηχανή, όχι λέξη.

Τα ψηφία, και γιατί τα δικά σου μπορεί να μην είναι αυτά που νομίζεις

Παίζουν τρία σύνολα ψηφίων:

ΣύνολοΣημεία κώδικαΧρήση σεΑμφίδρομη κλάση
ASCII0–9παντούEN
ΑραβοϊνδικάU+0660–U+0669 (٠١٢٣٤٥٦٧٨٩)αραβικάAN
Εκτεταμένα αραβοϊνδικάU+06F0–U+06F9 (۰۱۲۳۴۵۶۷۸۹)περσικά, ουρντούEN

Δεν είναι υφολογικές παραλλαγές. Είναι διαφορετικά σημεία κώδικα και, σύμφωνα με το Unicode Character Database, δεν μοιράζονται καν αμφίδρομη κλάση. Ο κανόνας W2 του UAX #9 επανατυποποιεί έναν ευρωπαϊκό αριθμό σε αραβικό όταν ο πλησιέστερος προηγούμενος ισχυρός χαρακτήρας είναι αραβικό γράμμα, οπότε μέσα σε περσικό κείμενο τα δύο μπορεί να συμπεριφέρονται όμοια κατά την εμφάνιση — ποτέ όμως στην ταξινόμηση, την αναζήτηση ή τη σύγκριση συμβολοσειρών, γιατί είναι διαφορετικοί χαρακτήρες. Ένα «Vol. 2» γραμμένο με εκτεταμένο αραβοϊνδικό ۲ και ένα «Vol. 2» γραμμένο με ASCII 2 είναι δύο διαφορετικές συμβολοσειρές που δείχνουν σχεδόν πανομοιότυπες.

Διάλεξε ένα σύνολο ψηφίων ανά κατάλογο και μην ανακατεύεις ποτέ σύνολα μέσα στην ίδια συμβολοσειρά.

Πώς ελέγχεις τι πληκτρολόγησες πράγματι

Η εμφάνιση δεν είναι αξιόπιστη, οπότε έλεγξε τα byte. Τρία πράγματα αξίζουν πριν από κάθε παράδοση:

  1. Διάβασε τη συμβολοσειρά ως σημεία κώδικα, όχι ως γλύφους. Οποιοδήποτε εργαλείο σου δείχνει τιμές U+ θα σου πει αμέσως αν αυτό είναι περσικό ی (U+06CC) ή αραβικό ي (U+064A), περσικό ک (U+06A9) ή αραβικό ك (U+0643) — διάκριση που οι περισσότερες γραμματοσειρές ισοπεδώνουν και που κανένας διορθωτής δεν μπορεί να δει. Το ίδιο ισχύει για ένα ξεχασμένο tatweel (U+0640), που καμία μορφή κανονικοποίησης Unicode δεν αφαιρεί, και για έναν μη συνδετικό μηδενικού πλάτους (U+200C) που τον κατάπιε σιωπηλά ένα πεδίο φόρμας.
  2. Επικόλλησε τον τίτλο σε περιβάλλον από αριστερά προς δεξιά και σε ένα από δεξιά προς αριστερά και σύγκρινε. Αν η στίξη πέφτει διαφορετικά στα δύο, έχεις συμβολοσειρά μεικτής κατεύθυνσης και ένα λατινικό στοιχείο που θα έπρεπε να βρίσκεται στο δικό του πεδίο.
  3. Σύγκρινε με την προηγούμενη κυκλοφορία σου, χαρακτήρα προς χαρακτήρα, όχι με το μάτι. Οι σπασμένοι κατάλογοι σε αραβική γραφή σχεδόν πάντα οφείλονται σε μια διαφορά που είναι αόρατη: μια κυκλοφορία γραμμένη σε περσική διάταξη πληκτρολογίου, η επόμενη σε αραβική.

Τα εργαλεία της Mazufa τρέχουν εξ ολοκλήρου στον browser σου — δεν ανεβαίνει κανένα αρχείο ήχου και κανένα κείμενο — και θέτουν αυτόματα dir="rtl" όταν ένας τίτλος είναι από δεξιά προς αριστερά, ώστε αυτό που βλέπεις όσο γράφεις να ταιριάζει με το περιβάλλον για το οποίο γράφτηκε η συμβολοσειρά. Το mazufa.com φιλοξενεί επίσης έναν δωρεάν ελεγκτή μεταδεδομένων που τρέχει στη δική σου συσκευή και επισημαίνει αρκετές από τις αόρατες περιπτώσεις: ανακατεμένα σύνολα ψηφίων, tatweel, ξεχασμένο ή απόν ZWNJ, αραβικό έναντι περσικού yeh και kaf, και συμβολοσειρές που δεν είναι σε NFC.

Τι να κάνεις πριν παραδώσεις

Πάρε τον τίτλο και το όνομα καλλιτέχνη της επόμενης κυκλοφορίας σου και κάνε τέσσερα πράγματα. Μετακίνησε κάθε λατινικό στοιχείο που μπορείς στο δικό του πεδίο — τους συμμετέχοντες καλλιτέχνες στον ρόλο καλλιτέχνη, τις εκδοχές στο πεδίο εκδοχής. Βεβαιώσου ότι τίποτα δεν ξεκινά με λατινική λέξη. Ενοποίησε το σύνολο ψηφίων σου και αφαίρεσε κάθε tatweel. Έπειτα διάβασε μία φορά τη συμβολοσειρά ως σημεία κώδικα, και αποθήκευσε ακριβώς αυτή τη συμβολοσειρά ως την κανονική γραφή που θα ξαναχρησιμοποιείς σε κάθε μελλοντική κυκλοφορία, χωρίς να την ξαναπληκτρολογείς.

Αν ένας τίτλος πρέπει οπωσδήποτε να κουβαλά λατινικό στοιχείο στη μέση, παράδωσέ τον και δέξου ότι θα αποδίδεται διαφορετικά σε διαφορετικά σημεία. Αυτό είναι αποτέλεσμα εμφάνισης, όχι ζημιά. Η συμβολοσειρά είναι σωστή. Το να την ξαναγράψεις ανάποδα ώστε να δείχνει σωστή σε μία προεπισκόπηση είναι ο μόνος τρόπος να τη χαλάσεις πραγματικά.

Πηγές

  • 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 — ιδιότητες χαρακτήρων: αμφίδρομη κλάση, αντιστοιχίσεις αποσύνθεσης — 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/

Το σώμα κειμένων δίνει τις ημερομηνίες έκδοσης και αναθεώρησης αυτών των εγγράφων, όπως παρατίθενται παραπάνω, και δεν καταγράφει χωριστή ημερομηνία ανάγνωσης για αυτά.

ΔΩΡΕΑΝ ΕΡΓΑΛΕΙΑ

Κάθε εργαλείο που φτιάχνει η Mazufa τρέχει στον browser σου, δεν κοστίζει τίποτα και δεν χρειάζεται λογαριασμό.

Άνοιξε τα εργαλεία ⇥