Pengganti dan Karakter Tambahan
Aplikasi Windows biasanya menggunakan UTF-16 untuk mewakili data karakter Unicode . Penggunaan 16 bit memungkinkan representasi langsung 65.536 karakter unik, tetapi Basic Multilingual Plane (BMP) ini tidak hampir cukup untuk mencakup semua simbol yang digunakan dalam bahasa manusia. Unicode versi 4.1 mencakup lebih dari 97.000 karakter, dengan lebih dari 70.000 karakter untuk bahasa Tionghoa saja.
Standar Unicode telah menetapkan 16 "plane" karakter tambahan, masing-masing berukuran sama dengan BMP. Secara alami, sebagian besar titik kode di luar BMP belum memiliki karakter yang ditetapkan untuk mereka, tetapi definisi bidang memberi Unicode potensi untuk menentukan 1.114.112 karakter (yaitu, 216 * 17 karakter) dalam rentang titik kode U+0000 hingga U+10FFFF. Agar UTF-16 mewakili sekumpulan karakter yang lebih besar ini, Standar Unicode mendefinisikan "karakter tambahan".
Tentang Karakter Tambahan
Karakter tambahan adalah karakter yang terletak di luar BMP, dan "pengganti" adalah nilai kode UTF-16. Untuk UTF-16, diperlukan "pasangan pengganti" untuk mewakili satu karakter tambahan. Pengganti pertama (tinggi) adalah nilai kode 16-bit dalam rentang U+D800 hingga U+DBFF. Pengganti kedua (rendah) adalah nilai kode 16-bit dalam rentang U+DC00 hingga U+DFFF. Dengan menggunakan mekanisme pengganti, UTF-16 dapat mendukung semua 1.114.112 karakter Unicode potensial. Untuk detail selengkapnya tentang karakter tambahan, pengganti, dan pasangan pengganti, lihat Standar Unicode.
Catatan
Windows 2000 memperkenalkan dukungan untuk input dasar, output, dan pengurutan karakter tambahan yang sederhana. Namun, tidak semua komponen sistem kompatibel dengan karakter tambahan.
Sistem operasi mendukung karakter tambahan dengan cara berikut:
- Format 12 tabel cmap font OpenType secara langsung mendukung kode karakter 4-byte. Untuk informasi selengkapnya, lihat spesifikasi font OpenType.
- Windows mendukung editor metode input (IMEs) yang mendukung pengganti.
- Windows GDI API mendukung format 12 tabel cmap dalam font sehingga pengganti dapat ditampilkan dengan benar.
- API Uniscribe mendukung karakter tambahan.
- Kontrol Windows, termasuk Edit dan Edit Kaya, mendukung karakter tambahan.
- Mesin HTML mendukung halaman HTML yang menyertakan karakter tambahan untuk tampilan, pengeditan (melalui Outlook Express), dan pengiriman formulir.
- Tabel pengurutan sistem operasi mendukung karakter tambahan.
Panduan Umum untuk Pengembangan Perangkat Lunak Menggunakan Karakter Tambahan
UTF-16 menangani karakter tambahan sebagai pasangan pengganti. Sistem operasi memproses pasangan pengganti yang mirip dengan caranya memproses tanda nonspacing. Pada waktu tampilan, pasangan pengganti ditampilkan sebagai satu glyph dengan cara Uniscribe, seperti yang ditentukan oleh Standar Unicode.
Windows Vista memperkenalkan tiga makro baru untuk membantu mengidentifikasi pasangan pengganti dan pengganti dalam string UTF-16. Ini adalah IS_HIGH_SURROGATE, IS_LOW_SURROGATE, dan IS_SURROGATE_PAIR.
Aplikasi secara otomatis mendukung karakter tambahan jika mendukung Unicode dan menggunakan kontrol sistem dan fungsi API standar, seperti ExtTextOut dan DrawText. Dengan demikian, jika aplikasi Anda menggunakan kontrol sistem standar atau menggunakan panggilan jenis ExtTextOut umum untuk ditampilkan, karakter tambahan harus berfungsi tanpa pengodean khusus.
Aplikasi yang menerapkan dukungan pengeditan mereka sendiri dengan mengerjakan posisi glyph dengan cara yang disesuaikan dapat menggunakan Uniscribe untuk semua pemrosesan teks. Uniscribe memiliki fungsi terpisah untuk menangani pemrosesan skrip yang kompleks, seperti tampilan teks, pengujian hit, dan gerakan kursor. Aplikasi harus memanggil fungsi Uniscribe secara khusus untuk mendapatkan fitur-fitur canggih ini. Perhatikan bahwa aplikasi yang menggunakan fungsi Uniscribe sepenuhnya multibahasa, tetapi ini memberlakukan penalti performa. Dengan demikian beberapa aplikasi harus melakukan pemrosesan karakter tambahan sendiri.
Karena mekanisme pengganti untuk mewakili karakter tambahan didefinisikan dengan baik, aplikasi Anda dapat menyertakan kode untuk menangani pemrosesan teks pengganti UTF-16. Ketika aplikasi menemukan nilai UTF-16 yang dipisahkan dari rentang pengganti yang dipesan lebih rendah (pengganti rendah) atau rentang pengganti cadangan atas (pengganti tinggi), nilainya harus setengah dari pasangan pengganti. Dengan demikian, aplikasi dapat mendeteksi pasangan pengganti dengan melakukan pemeriksaan rentang sederhana. Jika menemukan nilai UTF-16 dalam rentang bawah atau atas, nilai tersebut harus melacak mundur atau meneruskan satu lebar 16-bit untuk mendapatkan sisa karakter. Saat menulis aplikasi Anda, perlu diingat bahwa CharNext dan CharPrev bergerak dengan titik kode 16-bit, bukan oleh pasangan pengganti.
Catatan
Titik kode pengganti mandiri memiliki pengganti tinggi tanpa pengganti rendah yang berdekatan, atau sebaliknya. Titik kode ini tidak valid dan tidak didukung. Perilaku mereka tidak terdefinis.
Jika Anda mengembangkan penyedia font atau IME, perhatikan bahwa sistem operasi XP pra-Windows menonaktifkan dukungan karakter tambahan secara default. Windows XP dan kemudian mengaktifkan karakter tambahan secara default. Jika Anda menyediakan paket font dan IME yang memerlukan karakter tambahan, aplikasi Anda harus mengatur nilai registri berikut:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\LanguagePack]
SURROGATE=(REG_DWORD)0x00000002
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\42]
IEFixedFontName=[Surrogate Font Face Name]
IEPropFontName=[Surrogate Font Face Name]
Topik terkait