Semua artikel

Text Reverse: mengapa "membalik teks" lebih sulit dari kelihatannya

"Katak" adalah salah satu contoh langka palindrom asli bahasa Indonesia — dibaca dari depan atau belakang, hasilnya tetap sama. Karena bahasa Indonesia ditulis dengan alfabet Latin tanpa diakritik, membalik teksnya karakter demi karakter biasanya berjalan mulus. Masalah baru muncul begitu emoji atau karakter gabungan ikut masuk ke dalam teks.

Apa itu grapheme cluster

Apa yang dipersepsikan manusia sebagai "satu karakter yang terlihat" kadang di Unicode sebenarnya tersusun dari beberapa code point — emoji keluarga (👨‍👩‍👧), misalnya, sebenarnya adalah beberapa emoji terpisah yang disatukan dengan karakter penyambung khusus (zero-width joiner). Gabungan semacam ini disebut grapheme cluster.

Kenapa pembalikan naif merusak semuanya

Kalau string dibalik berdasarkan code point satu per satu, bukan berdasarkan grapheme cluster, karakter penyambung akan berpindah ke posisi yang salah, dan alih-alih satu emoji utuh yang muncul justru kumpulan karakter terpisah yang tidak berhubungan — sering terlihat sebagai kotak "rusak" atau emoji acak yang tidak sesuai aslinya.

Pembalikan yang benar

Implementasi yang benar memecah string menjadi grapheme cluster terlebih dahulu (dengan memperhitungkan penyambung, modifier, dan karakter gabungan), baru kemudian membalik urutan cluster tersebut, bukan code point individual di dalamnya.

Kegunaannya

  • Memeriksa palindrom seperti "katak" atau membuat efek teks "cermin".
  • Mendemonstrasikan atau mendiagnosis bug penanganan Unicode dalam kode.
  • Tugas hiburan atau edukasi yang memerlukan pembalikan teks yang benar, termasuk yang mengandung emoji.
Coba alat