Di luar standar Unicode karakter adalah unit teks individual yang terdiri dari satu atau lebih grapheme . Apa yang didefinisikan oleh standar Unicode sebagai "karakter" sebenarnya adalah campuran dari grafem dan karakter. Unicode memberikan aturan untuk interpretasi grapheme yang disandingkan sebagai karakter individu.
Sebuah Unicode titik kode adalah nomor unik yang ditugaskan untuk setiap karakter Unicode (yang baik karakter atau grafem a).
Sayangnya, aturan Unicode memungkinkan beberapa grapheme disandingkan diinterpretasikan sebagai grapheme lain yang sudah memiliki poin kode mereka sendiri ( formulir precomposed ). Ini berarti bahwa ada lebih dari satu cara di Unicode untuk mewakili karakter. Normalisasi Unicode mengatasi masalah ini.
Mesin terbang adalah representasi visual dari suatu karakter. Font menyediakan seperangkat mesin terbang untuk serangkaian karakter tertentu (bukan karakter Unicode). Untuk setiap karakter, ada jumlah mesin terbang yang mungkin tak terbatas.
Balas ke Mark Amery
Pertama, seperti yang saya nyatakan, ada jumlah mesin terbang yang mungkin tak terbatas untuk setiap karakter jadi tidak, karakter tidak "selalu diwakili oleh mesin terbang tunggal". Unicode tidak terlalu mementingkan dirinya sendiri dengan mesin terbang, dan hal-hal yang didefinisikannya dalam diagram kodenya tentu bukan mesin terbang. Masalahnya adalah keduanya bukan karakter. Jadi apa mereka
Mana entitas yang lebih besar, grapheme atau karakter? Apa yang disebut elemen-elemen grafik dalam teks yang bukan huruf atau tanda baca? Satu istilah yang muncul dengan cepat di pikiran adalah "grapheme". Ini adalah kata yang secara tepat memunculkan ide "unit grafis dalam teks". Saya menawarkan definisi ini: Grapheme adalah komponen berbeda terkecil dalam teks tertulis .
Seseorang dapat pergi ke arah lain dan mengatakan bahwa grafem terdiri dari karakter, tetapi kemudian mereka akan disebut "grafem Cina", dan semua potongan-potongan grafem Cina terdiri dari harus disebut "karakter" sebagai gantinya. Namun, itu semua mundur. Graphem adalah bagian-bagian kecil yang berbeda. Karakter lebih berkembang. Ungkapan "mesin terbang adalah komposer", akan lebih baik dinyatakan dalam konteks Unicode sebagai "karakter komposer".
Unicode mendefinisikan karakter tetapi juga mendefinisikan grapheme yang akan disusun dengan grapheme atau karakter lain. Monstrositas yang Anda buat adalah contoh yang bagus untuk ini. Jika mereka mengetahui, mungkin mereka akan mendapatkan poin kode mereka sendiri di versi Unicode yang lebih baru;)
Ada elemen rekursif untuk semua ini. Pada level yang lebih tinggi, grafem menjadi karakter menjadi grafem, tetapi grafeminya sepenuhnya turun.
A Reply to TS
Bab 1 dari standar menyatakan: "Pengodean karakter Unicode memperlakukan karakter alfabet, karakter ideografis, dan simbol secara setara, yang berarti mereka dapat digunakan dalam campuran apa pun dan dengan fasilitas yang sama". Mengingat pernyataan ini, kita harus siap untuk beberapa penggabungan istilah dalam standar. Terkadang terminologi yang tepat hanya menjadi jelas dalam retrospeksi ketika standar berkembang.
Sering terjadi dalam definisi formal bahasa bahwa dua hal mendasar didefinisikan dalam hal satu sama lain. Misalnya, dalam
XML elemen didefinisikan sebagai tag awal yang mungkin diikuti oleh konten, diikuti oleh tag akhir. Konten didefinisikan pada gilirannya sebagai elemen, data karakter, atau beberapa hal lain yang mungkin. Pola definisi referensial diri juga tersirat dalam standar Unicode:
Grapheme adalah titik kode atau karakter.
Karakter terdiri dari urutan satu atau lebih grapheme
Ketika pertama kali dihadapkan dengan dua definisi ini pembaca mungkin keberatan dengan definisi pertama dengan alasan bahwa titik kode adalah karakter, tetapi itu tidak selalu benar. Urutan dua titik kode kadang-kadang mengkodekan satu titik kode di bawah
normalisasi , dan titik kode yang disandikan itu mewakili karakter, seperti yang diilustrasikan dalam
Gambar 2.7 . Urutan titik kode yang menyandikan titik kode lainnya. Ini menjadi sedikit rumit dan kami bahkan belum mencapai lapisan di mana skema pengkodean karakter seperti UTF-8 digunakan untuk menyandikan poin kode ke urutan byte.
Dalam beberapa konteks, misalnya artikel ilmiah tentang
diakritik , dan bagian individu dari karakter mungkin muncul dalam teks dengan sendirinya. Dalam konteks itu, bagian karakter individu dapat dianggap sebagai karakter, sehingga masuk akal bahwa standar Unicode tetap fleksibel juga.
Seperti yang ditunjukkan Mark Avery, karakter dapat dikomposisikan menjadi hal yang lebih kompleks. Artinya, setiap karakter dapat berfungsi sebagai grapheme jika diinginkan. Hasil akhir dari semua komposisi adalah hal yang "dianggap pengguna sebagai karakter". Tampaknya tidak ada perlawanan nyata, baik dalam standar atau dalam diskusi ini, dengan gagasan bahwa pada level tertinggi ada hal-hal ini dalam teks yang pengguna anggap sebagai karakter individu. Untuk menghindari kelebihan istilah itu, kita dapat menggunakan "grapheme" dalam semua kasus di mana kita ingin merujuk ke bagian yang digunakan untuk menulis karakter.
Terkadang standar Unicode ada di mana-mana dengan terminologinya. Sebagai contoh, Bab 3
mendefinisikan UTF-8 sebagai "bentuk penyandian" sedangkan glosarium mendefinisikan "bentuk penyandian" sebagai sesuatu yang lain, dan UTF-8 sebagai "Skema Pengodean Karakter". Contoh lain adalah "Grapheme_Base" dan "Grapheme_Extend", yang diakui sebagai kesalahan tetapi itu tetap ada karena membersihkannya adalah sedikit tugas. Masih ada pekerjaan yang harus dilakukan untuk memperketat terminologi yang digunakan oleh standar.
The Proposal untuk penambahan PENGGABUNGAN Grafem punya salah ketika menyatakan bahwa "grafem adalah urutan satu atau lebih karakter dikodekan yang sesuai dengan apa yang pengguna berpikir sebagai karakter." Seharusnya membaca, "Urutan satu atau lebih grapheme menyusun apa yang pengguna anggap sebagai karakter." Kemudian ia dapat menggunakan istilah "urutan grafik" secara jelas dari istilah "urutan karakter". Kedua istilah itu bermanfaat. "Urutan grapheme" dengan rapi menyiratkan proses membangun karakter dari potongan yang lebih kecil. "urutan karakter" berarti apa yang secara khas kita semua maksud sebagai: "Urutan hal-hal yang pengguna pikirkan sebagai karakter."
Kadang-kadang seorang programmer benar-benar ingin beroperasi pada tingkat urutan grapheme, sehingga mekanisme untuk memeriksa dan memanipulasi urutan tersebut harus tersedia, tetapi secara umum, ketika memproses teks, itu cukup untuk beroperasi pada "urutan karakter" (apa yang dipikirkan pengguna tentang sebagai karakter) dan biarkan sistem mengelola detail level bawah.
Dalam setiap kasus yang dibahas sejauh ini dalam diskusi ini, lebih baik menggunakan "grapheme" untuk merujuk pada komponen dan "karakter" yang tidak dapat dibagi untuk merujuk ke entitas yang dikomposisikan. Penggunaan ini juga lebih mencerminkan makna yang telah lama ada dari kedua istilah tersebut.