Tekan tombol hapus setelah sebuah emoji dan biasanya emoji itu lenyap dalam satu langkah. Rasanya seperti satu karakter. Namun di balik layar, gambar yang sama dapat dikodekan sebagai satu titik kode, dua titik kode, atau urutan yang jauh lebih panjang.
Unicode memiliki beberapa tingkat yang berguna:
- titik kode adalah posisi bernomor seperti U+1F52C;
- karakter terenkode adalah unsur abstrak yang ditempatkan pada posisi itu;
- klaster grafem adalah urutan yang biasanya dialami pengguna sebagai satu unit teks;
- glif adalah gambar yang dihasilkan font atau set emoji.
Tingkat-tingkat itu sering sejalan, tetapi pada emoji perbedaannya tampak sangat jelas.
Sebuah hati dapat tampil sebagai teks atau emoji
Karakter ♥ adalah U+2665 BLACK HEART SUIT. Karakter ❤ adalah U+2764 HEAVY BLACK HEART. Karakter simbol historis seperti ini telah ada sebelum emoji berwarna modern.
Unicode memakai pemilih variasi yang tidak terlihat untuk meminta jenis presentasi:
- U+FE0E, Variation Selector-15, meminta tampilan bergaya teks;
- U+FE0F, Variation Selector-16, meminta tampilan bergaya emoji.
Jadi ❤︎ adalah U+2764 diikuti U+FE0E, sedangkan ❤️ adalah U+2764 diikuti U+FE0F. Pemilih itu bukan gambar kedua, melainkan petunjuk tentang bagaimana karakter sebelumnya perlu ditampilkan.
Jika aplikasi mengabaikannya atau tidak mendukung emoji, hasilnya dapat kembali menjadi hati monokrom. Itu perbedaan perenderan, bukan berarti teksnya rusak.
Warna kulit adalah karakter pengubah
Warna kulit emoji dikodekan sebagai karakter pengubah berdasarkan skala Fitzpatrick. Emoji orang atau anggota tubuh yang kompatibel dapat diikuti satu pengubah.
Sebagai contoh, 👋🏽 terdiri atas:
- U+1F44B WAVING HAND SIGN;
- U+1F3FD EMOJI MODIFIER FITZPATRICK TYPE-4.
Sistem penerima mengenali pasangan itu dan menggambar satu tangan. Jika urutannya tidak didukung, tangan dasar dan pengubahnya dapat muncul secara terpisah.
Perekat tak terlihatnya adalah ZWJ
U+200D ZERO WIDTH JOINER atau ZWJ adalah karakter format tak terlihat. Dalam urutan emoji ZWJ, karakter ini meminta perender untuk menggabungkan emoji di kedua sisinya menjadi satu desain yang didukung.
👩🔬 terdiri atas:
👩WOMAN;- U+200D ZERO WIDTH JOINER;
🔬MICROSCOPE.
Sistem yang mengenali urutan tersebut dapat menggambar ilmuwan perempuan. Sistem yang tidak mengenalinya mungkin menampilkan seorang perempuan diikuti mikroskop. Teks logisnya tetap dapat digunakan; glif gabungan yang rapi bergantung pada kemampuan font dan platform.
Emoji keluarga dan hubungan yang lebih panjang dapat menggabungkan beberapa orang, hati, ciuman, tanda gender, dan pengubah. Ikon ringkas yang tampak tunggal bisa saja merupakan sebuah kalimat kecil dari titik kode.
Bendera memakai mekanisme lain lagi
Sebagian besar bendera negara adalah pasangan karakter regional indicator. Bendera Jepang, misalnya, dibentuk dari indikator wilayah yang mewakili J dan P.
Titik kodenya tidak menyimpan gambar bendera Jepang. Yang dikodekan adalah urutan wilayah yang dapat ditampilkan sebagai bendera oleh sistem berkemampuan emoji. Sistem yang tidak mendukungnya sering menampilkan dua huruf dalam kotak.
Sebagian bendera subdivisi memakai dasar bendera hitam, diikuti karakter tag tak terlihat dan cancel tag. Emoji keycap menggabungkan angka atau simbol, pemilih presentasi opsional, dan U+20E3 COMBINING ENCLOSING KEYCAP. Emoji adalah keluarga resep pengodean, bukan folder berisi gambar kecil.
“Panjang” bergantung pada apa yang dihitung
Programmer dapat mengajukan beberapa pertanyaan yang sama-sama sah:
- Berapa unit kode UTF-16 yang tersimpan?
- Berapa titik kode Unicode yang ada?
- Berapa klaster grafem yang seharusnya dilewati kursor?
- Berapa glif yang digambar perender?
Semua jawabannya bisa berbeda. Memotong string pada sembarang unit kode dapat membelah pasangan surrogate. Memotongnya per titik kode dapat memisahkan warna kulit atau pemilih variasi dari karakter dasarnya. Perangkat lunak teks yang baik mengikuti aturan klaster grafem Unicode untuk gerakan kursor, seleksi, penghapusan, dan batas karakter.
Karena itu batas “20 karakter” untuk nama pengguna memerlukan definisi. Menghitung byte, unit kode, titik kode, dan karakter yang dipersepsikan pengguna akan menghasilkan angka berbeda.
Mengapa desain tiap platform tetap berbeda
Unicode menstandarkan identitas dan perilaku urutan, bukan satu ilustrasi yang persis sama. Apple, Google, Microsoft, Samsung, dan vendor lain menggambar glifnya sendiri, sebagaimana desainer huruf menggambar versi A yang berbeda.
Urutan yang sama seharusnya mewakili konsep terenkode yang sama, tetapi pose, warna, detail, dan nuansa emosinya dapat berubah. Jarak antara kode bersama dan karya seni vendor inilah yang memberi emoji keluwesan sekaligus membuka ruang bagi kesalahpahaman.
Satu emoji di layar paling tepat dipahami sebagai satu klaster grafem—bukan selalu satu titik kode.
Coba emoji keluarga, profesi, bendera, atau hati dari koleksi emoji di mikroskop di atas. Unsur-unsur tak terlihatnya jauh lebih mudah dipahami ketika ditampilkan satu per satu.