Memproses Skrip Kompleks

Untuk memberikan pembenaran teks, aplikasi dapat menggunakan salah satu dari dua metode. Untuk implementasi sederhana pembenaran multibahasa, aplikasi harus memanggil ScriptJustify. Ini menghasilkan array delta dx dengan mempertimbangkan kashida, kemudian spasi antarkata, dan kemudian spasi antarkarakter. Untuk pembenaran yang lebih canggih, aplikasi dapat menghasilkan array delta dx yang diperbarui menggunakan pengetahuan bahasanya sendiri dan informasi yang diambil oleh ScriptShape dalam array SCRIPT_VISATTR .

Ruang pembenaran atau kashida harus dimasukkan jika diidentifikasi oleh anggota SCRIPT_VISATTR uJustification. Saat melakukan pembenaran antar karakter, aplikasi harus menyisipkan ruang ekstra hanya setelah glyph ditandai dengan SCRIPT_JUSTIFY_CHARACTER.

Aplikasi ini melakukan penempatan berkurang dan mencapai pengujian dengan menggunakan ScriptXtoCP dan ScriptCPtoX. Untuk informasi selengkapnya, lihat Mengelola Penempatan Caret dan Pengujian Hit.

Untuk mendapatkan lebar secara independen font, aplikasi memanggil ScriptGetLogicalWidths. Dengan meneruskan lebar logis ke ScriptApplyLogicalWidth, blok teks dapat diputar ulang dalam batas yang sama dengan hilangnya kualitas yang dapat diterima bahkan ketika font asli tidak tersedia. Ini menghasilkan array lebar glyph (lebar lanjutan) yang cocok untuk diteruskan ke ScriptTextOut. Perekaman dan penerapan ulang informasi lebar lanjutan dengan cara yang independen font dapat berguna dalam situasi seperti metafiling dalam format yang ditentukan aplikasi.

Catatan

Metafiles tidak mendukung indeks glyph. Untuk menulis ke metafile yang ditingkatkan, aplikasi harus menggunakan ExtTextOut dan menulis karakter logis secara langsung. Dengan menggunakan mekanisme ini, pembuatan dan penempatan glyph tidak terjadi sampai teks diputar kembali.

 

Untuk mengambil glyph tertentu yang digunakan untuk default, kosong, kashida, dan sebagainya, untuk font saat ini, aplikasi harus memanggil ScriptGetFontProperties. Untuk menentukan karakter mana dalam eksekusi yang didukung oleh font yang dipilih, aplikasi memanggil ScriptGetCMap. Karakter yang tidak tersedia memiliki glyph default di buffer glyph. Perhatikan bahwa metode ini gagal jika font merender karakter menggunakan kombinasi glyph, bukan satu glyph. Misalnya, 00C9; HURUF LATIN KAPITAL E DENGAN ACUTE dapat dirender menggunakan huruf kapital E glyph dan glyph akut. Untuk menentukan dukungan font untuk string yang berisi titik kode semacam ini, aplikasi dapat memanggil ScriptShape. Untuk informasi selengkapnya, lihat Menggunakan Mesin Pembentukan.

Fungsi ScriptCacheGetHeight mengembalikan tinggi font dari cache font. ScriptGetProperties menyediakan informasi tentang pemrosesan khusus yang diperlukan untuk semua skrip, yang diindeks oleh skrip. Misalnya, ini mencakup bahasa utama yang terkait dengan skrip, data yang menunjukkan apakah skrip numerik, dan data yang menunjukkan apakah skrip adalah skrip yang kompleks.

ScriptGetGlyphABCWidth mengembalikan lebar ABC dari glyph tertentu, yang mungkin berguna untuk menggambar bagan glyph. Namun, ini tidak boleh digunakan untuk pemformatan teks skrip kompleks normal.

Menggunakan Uniscribe