Ketika sebuah judul Arab, Persia atau Urdu sampai di toko dengan kurung di sisi yang salah, kredit “feat.” terdorong ke ujung terjauh, atau nomor katalog melayang di tempat yang seharusnya bukan tempatnya, tidak ada yang rusak. Bita yang Anda ketik hampir selalu bita yang sampai. Yang berubah adalah arah dasar kotak tempat teks itu digambar, dan itu ditentukan oleh halaman tokonya, bukan oleh judul Anda. Artikel ini menjelaskan mekanismenya cukup presisi sehingga Anda bisa memperkirakan judul mana yang akan bermasalah sebelum Anda mengirimkannya.
Satu hal perlu disampaikan di awal, karena inilah posisi yang jujur: kami tidak mengetahui adanya pengukuran terbit mana pun tentang tingkat kesalahan metadata beraksara Arab di industri ini. Masalahnya dialami semua orang dan sama sekali tidak terkuantifikasi. Tidak ada angka yang muncul di bawah, karena memang tidak ada angka untuk diberikan.
Urutan logis dan urutan tampilan adalah dua hal berbeda
Unicode menyimpan teks dalam urutan logis — urutan sebagaimana Anda mengucapkannya, mengetiknya dan membacanya nyaring. Urutan tampilan dihitung dari urutan logis itu saat perenderan, oleh Unicode Bidirectional Algorithm yang didefinisikan dalam Unicode Standard Annex #9 (UAX #9). Aneks itu terang-terangan soal pemisahan tersebut: “The Unicode Standard prescribes a memory representation order known as logical order,” dan “When working with bidirectional text, the characters are still interpreted in logical order—only the display is affected.”
Satu kalimat itu menjelaskan gejala yang membuat artis beraksara Arab percaya metadata mereka berhantu: string yang tersimpan bisa sepenuhnya benar sementara tampilannya salah, dan bisa benar secara visual sementara bita tersimpannya salah — dan di layar kedua kegagalan itu tampak identik. Anda tidak bisa mengauditnya dengan melihat. Begitu pula agen dukungan distributor Anda.
Kenapa token Latin di dalam string RTL berpindah
UAX #9 memberi setiap karakter satu tipe bidirectional. Huruf Arab, Persia dan Urdu berjenis AL (huruf Arab kanan-ke-kiri). Huruf Latin berjenis L. Angka ASCII berjenis EN (European Number), angka Arab-Indik berjenis AN (Arabic Number). Spasi dan sebagian besar tanda baca — termasuk kurung biasa, kurung siku, tanda hubung dan titik — bersifat netral, artinya mereka tidak punya arah sendiri dan mewarisi arah dari sekelilingnya.
Dua kelompok aturan yang menimbulkan kerusakan.
Arah paragraf, aturan P2–P3. Algoritmanya memindai karakter berarah kuat pertama lalu menetapkan arah dasar dari karakter itu. Judul yang diawali kata Latin memperoleh arah dasar kiri-ke-kanan meski seluruh sisanya berbahasa Persia.
Resolusi netral, aturan N1–N2. Aturan N1: “A sequence of [neutrals] takes the direction of the surrounding strong text if the text on both sides has the same direction.” Aturan N2: netral tanpa kesepakatan mengambil arah paragraf. Lalu aturan L2 menyusun ulang untuk tampilan — “reverse any contiguous sequence of characters that are at that level or higher.”
Satukan semuanya dan kegagalannya menjadi deterministik, bukan acak. Sebuah token Latin — nama pe-remix, feat., Vol. 2, nomor katalog, angka tahun — duduk pada tingkat penyematan yang berbeda dari teks Arab di sekitarnya. Karakter netral di batasnya (spasi, kurung buka) punya huruf Arab di satu sisi dan Latin di sisi lain, sehingga N1 tidak menemukan kesepakatan dan N2 menyerahkan arah paragraf kepadanya. Kurung yang teratasi ke satu arah di editor teks kanan-ke-kiri Anda teratasi ke arah lain di halaman toko kiri-ke-kanan, lalu kurungnya terlepas dan terbalik.
Jadi نام آهنگ (Nima Remix) tidak rusak. Itu satu string yang diselesaikan dalam dua konteks. Arah dasar itu konteks, bukan isi, dan konteks toko bukan konteks Anda.
Satu hal yang tidak boleh Anda lakukan
Jangan “memperbaiki” tampilannya dengan mengetik karakternya terbalik sampai pratinjaunya terlihat benar.
Itu menghasilkan string yang salah dalam urutan logis, benar hanya pada satu konteks perenderan, dan rusak di semua tempat lain — termasuk pencarian, pengurutan, pencocokan artis dan setiap toko yang halamannya punya arah dasar berbeda dari alat tempat Anda memperbaikinya. Anda akan mengubah masalah tampilan, yang bisa dipulihkan, menjadi masalah data, yang tidak.
UAX #9 memang mendefinisikan karakter untuk mengendalikan hal ini secara eksplisit: isolat LRI, RLI, FSI dan PDI, serta tanda LRM, RLM dan ALM. Itu perbaikan yang benar secara teknis. Tetapi semuanya juga karakter pemformatan tak kasatmata, dan banyak alur pengiriman membuang karakter pemformatan tak kasatmata tanpa memberi tahu Anda. Anggap mereka tidak bisa diandalkan di dalam kolom metadata.
Perbaikan struktural: keluarkan token Latin dari tengah
Mitigasi yang berhasil di mana-mana, di setiap perender, tanpa karakter tak kasatmata, sifatnya struktural. Berurutan menurut preferensi:
- Gunakan kolom terpisah alih-alih string berarah campur di mana pun model datanya menyediakannya. Artis tamu tempatnya di tingkat peran artis, bukan di judul. Music Metadata Style Guide dari Music Biz menganjurkan mengkredit artis tamu pada tingkat peran artis dan tidak menambahkan data itu ke judul trek atau judul rilis album; panduan publik Spotify berbunyi “You shouldn't include any artists' names in your track or release titles.” Versi tempatnya di kolom versi, yang seluruh tugasnya memang membedakan dua rekaman yang berbagi judul. Setiap token Latin yang Anda pindahkan ke kolomnya sendiri adalah satu batas bidirectional yang berhenti ada.
- Jauhkan token Latin yang tak terhindarkan dari posisi pertama. Posisi pertama menetapkan arah paragraf menurut P2–P3. Judul Persia yang dibuka kata Latin adalah paragraf kiri-ke-kanan yang berisi bahasa Persia, dan itu bukan yang Anda maksud.
- Hindari tanda baca dekoratif di batas arah. Tanda pisah, garis miring, garis tegak dan kurung bertumpuk adalah karakter netral yang duduk persis di tempat algoritmanya punya informasi paling sedikit.
Kalau sebuah kontrak memang mengharuskan kredit tercantum di judul, konvensinya sudah baku dan layak diikuti persis. Music Biz, tentang “feat.” dan “with”: “when included in the title are generally lowercase and in English.” Panduan gaya Apple: “Formatting of 'feat.' and 'with' must be lowercase, in English, not localized, and in parentheses or brackets.” Instruksi “not localized” itu benar-benar bekerja di sini — jangan menerjemahkan “feat.” ke bahasa Arab, Persia atau Urdu di dalam kolom judul. Itu token yang dibaca mesin, bukan sebuah kata.
Angka, dan kenapa angka Anda mungkin bukan angka yang Anda kira
Ada tiga himpunan angka yang terlibat:
| Himpunan | Titik kode | Dipakai di | Kelas bidi |
|---|---|---|---|
| ASCII | 0–9 | di mana-mana | EN |
| Arab-Indik | U+0660–U+0669 (٠١٢٣٤٥٦٧٨٩) | Arab | AN |
| Arab-Indik Diperluas | U+06F0–U+06F9 (۰۱۲۳۴۵۶۷۸۹) | Persia, Urdu | EN |
Ini bukan varian gaya. Ini titik kode yang berbeda, dan menurut Unicode Character Database keduanya bahkan tidak berbagi kelas bidirectional. Aturan W2 di UAX #9 mengubah tipe European number menjadi Arabic number ketika karakter kuat terdekat sebelumnya adalah huruf Arab, sehingga di dalam teks Persia keduanya bisa berperilaku sama saat ditampilkan — tetapi tidak pernah sama dalam pengurutan, pencarian atau perbandingan string, karena keduanya karakter yang berbeda. “Vol. 2” yang diketik dengan ۲ Arab-Indik diperluas dan “Vol. 2” yang diketik dengan 2 ASCII adalah dua string berbeda yang tampak nyaris identik.
Pilih satu himpunan angka per katalog dan jangan pernah mencampur himpunan di dalam satu string.
Cara memeriksa apa yang sebenarnya Anda ketik
Tampilan tidak bisa dipercaya, jadi periksalah bitanya. Tiga hal layak dilakukan sebelum setiap pengiriman:
- Baca string-nya sebagai titik kode, bukan sebagai glif. Alat apa pun yang menampilkan nilai U+ akan langsung memberi tahu Anda apakah itu ی Persia (U+06CC) atau ي Arab (U+064A), ک Persia (U+06A9) atau ك Arab (U+0643) — pembedaan yang diratakan sebagian besar fon dan tak bisa dilihat pembaca koreksi mana pun. Hal yang sama berlaku untuk tatweel nyasar (U+0640), yang tidak dihapus oleh bentuk normalisasi Unicode mana pun, dan untuk zero-width non-joiner (U+200C) yang diam-diam ditelan sebuah kolom formulir.
- Tempelkan judulnya ke konteks kiri-ke-kanan dan ke konteks kanan-ke-kiri lalu bandingkan. Kalau tanda bacanya mendarat berbeda di antara keduanya, Anda punya string berarah campur dan sebuah token Latin yang semestinya berada di kolomnya sendiri.
- Bandingkan dengan rilis Anda sebelumnya, karakter demi karakter, bukan dengan mata. Katalog beraksara Arab yang terbelah hampir selalu disebabkan perbedaan yang tak kasatmata: satu rilis diketik pada tata letak papan ketik Persia, rilis berikutnya pada tata letak Arab.
Alat-alat Mazufa berjalan sepenuhnya di peramban Anda — tidak ada audio dan tidak ada teks yang diunggah — dan alat itu menyetel dir="rtl" secara otomatis ketika sebuah judul berarah kanan-ke-kiri, sehingga apa yang Anda lihat saat mengetik cocok dengan konteks tempat string itu ditulis. mazufa.com juga menyediakan pemeriksa metadata gratis yang berjalan di perangkat Anda sendiri dan menandai beberapa kasus tak kasatmata: himpunan angka tercampur, tatweel, ZWNJ nyasar atau hilang, yeh dan kaf Arab lawan Persia, serta string non-NFC.
Yang perlu dilakukan sebelum Anda mengirim
Ambil judul dan nama artis rilis Anda berikutnya lalu lakukan empat hal. Pindahkan setiap token Latin yang bisa dipindahkan ke kolomnya sendiri — artis tamu ke peran artis, versi ke kolom versi. Pastikan tidak ada yang dimulai dengan kata Latin. Seragamkan himpunan angka Anda dan hapus tatweel mana pun. Lalu baca string-nya sebagai titik kode sekali saja, dan simpan string persis itu sebagai ejaan kanonis yang akan Anda pakai ulang di setiap rilis berikutnya, tanpa mengetiknya ulang.
Kalau sebuah judul tetap harus membawa token Latin di tengahnya, kirimkan saja dan terimalah bahwa ia akan tampil berbeda di tempat yang berbeda. Itu hasil tampilan, bukan kerusakan. String-nya benar. Mengetiknya ulang secara terbalik agar satu pratinjau terlihat benar adalah satu-satunya cara membuatnya benar-benar salah.
Sumber
- 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 — properti karakter: kelas bidirectional, pemetaan dekomposisi — 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/
Korpus mencantumkan tanggal versi dan revisi untuk dokumen-dokumen ini, sebagaimana tercantum di atas, dan tidak mencatat tanggal baca terpisah untuk mereka.