Menggunakan Fallback Font

Catatan

Dalam topik ini, semua keterangan tentang ScriptShape berlaku sama untuk ScriptShapeOpenType.

 

Aplikasi Anda harus menggunakan fallback font selama tampilan teks jika beberapa karakter dalam string tidak didukung dalam font, atau jika aplikasi menggunakan skrip kompleks yang tidak didukung oleh font. Persyaratan untuk fallback font terdeteksi selama proses tata letak untuk teks, ketika aplikasi memanggil fungsi ScriptShape . Untuk informasi tentang tampilan teks, lihat Menampilkan Teks dengan Uniscribe.

Menentukan Kebutuhan akan Fallback Font untuk Karakter yang Tidak Didukung

Jika beberapa karakter dalam string tidak didukung dalam font yang diminta, panggilan aplikasi ke ScriptShape berhasil. Namun, aplikasi harus memindai buffer output glyph untuk keberadaan glyph yang hilang. Indeks glyph dari glyph yang hilang dapat ditentukan untuk font tertentu dengan memanggil ScriptGetFontProperties. Jika glyph tertentu tidak tersedia, aplikasi harus kembali ke font yang berbeda untuk glyph atau merender simbol grafis yang menunjukkan bahwa tidak ada glyph yang tersedia.

Menentukan Kebutuhan akan Fallback Font untuk Skrip Kompleks yang Tidak Didukung

Font yang lebih disukai aplikasi untuk tampilan mungkin tidak mendukung skrip kompleks yang diperlukan oleh teks. Dalam hal ini, panggilan aplikasi ke ScriptShape gagal dengan kode kesalahan E_SCRIPT_NOT_IN_FONT.

Menetapkan Font Fallback

Setelah menentukan bahwa fallback font diperlukan, aplikasi harus menetapkan font fallback. Aplikasi dapat mencoba teknik berikut:

  • Panggil ScriptShape untuk setiap font dalam daftar font hingga satu panggilan memiliki pengembalian yang dapat diterima.
  • Panggil ScriptShape dengan setiap font dalam daftar hingga dapat ditentukan bahwa tidak ada font yang akan berhasil. Jika kode kesalahan selalu E_SCRIPT_NOT_IN_FONT, skrip kompleks tidak didukung oleh font. Merender simbol grafis yang menunjukkan bahwa tidak ada glyph yang tersedia, atau tentukan ulang skrip sebagai tidak terdefinisi (tidak ada pemrosesan skrip) dan mulai lagi. Untuk mengatur skrip sebagai tidak terdefinis, atur anggota eScript dari struktur SCRIPT_ANALYSIS ke SCRIPT_UNDEFINED.
  • Panggil ScriptShape dengan setiap font dalam daftar hingga dapat ditentukan bahwa tidak ada font yang akan berhasil. Jika kode kesalahan menunjukkan bahwa beberapa karakter dipetakan ke glyph yang hilang, putuskan string menjadi rentang yang lebih kecil. Font yang berbeda dapat ditetapkan ke subranges sehingga lebih banyak karakter dapat dirender.

Hasilkan Informasi Glyph

Setelah aplikasi menetapkan font yang berhasil dalam panggilan ke ScriptShape, aplikasi dapat melakukan panggilan ke ScriptPlace untuk menghasilkan lebar glyph advance dan informasi offset dua dimensi dari output ScriptShape. Font harus berhasil dalam panggilan ini. Kegagalan font dalam panggilan ke ScriptPlace setelah berhasil dalam panggilan ScriptShape menunjukkan font rusak.

Menggunakan Uniscribe