struktur SCRIPT_PROPERTIES (usp10.h)
Berisi informasi tentang pemrosesan khusus untuk setiap skrip.
Sintaks
typedef struct {
DWORD langid : 16;
DWORD fNumeric : 1;
DWORD fComplex : 1;
DWORD fNeedsWordBreaking : 1;
DWORD fNeedsCaretInfo : 1;
DWORD bCharSet : 8;
DWORD fControl : 1;
DWORD fPrivateUseArea : 1;
DWORD fNeedsCharacterJustify : 1;
DWORD fInvalidGlyph : 1;
DWORD fInvalidLogAttr : 1;
DWORD fCDM : 1;
DWORD fAmbiguousCharSet : 1;
DWORD fClusterSizeVaries : 1;
DWORD fRejectInvalid : 1;
} SCRIPT_PROPERTIES;
Anggota
langid
Pengidentifikasi bahasa untuk bahasa yang terkait dengan skrip. Saat skrip digunakan untuk banyak bahasa, anggota ini mewakili bahasa default. Misalnya, skrip Barat diwakili oleh LANG_ENGLISH meskipun juga digunakan untuk bahasa Prancis, Jerman, dan bahasa Eropa lainnya.
fNumeric
Nilai yang menunjukkan apakah skrip hanya berisi digit dan karakter lain yang digunakan dalam menulis angka dengan aturan algoritma dua arah Unicode. Misalnya, simbol mata uang, pemisah ribuan, dan titik desimal diklasifikasikan sebagai numerik ketika berdekatan dengan atau di antara digit. Nilai yang mungkin untuk anggota ini ditentukan dalam tabel berikut.
fComplex
Nilai yang menunjukkan skrip kompleks untuk bahasa yang memerlukan pembentukan atau tata letak khusus. Nilai yang mungkin ditentukan dalam tabel berikut.
Nilai | Makna |
---|---|
|
Skrip memerlukan pembentukan atau tata letak khusus. |
|
Skrip tidak berisi menggabungkan karakter dan tidak memerlukan pembentukan atau penyusunan ulang kontekstual. |
fNeedsWordBreaking
Nilai yang menunjukkan jenis penempatan pemisah kata untuk bahasa. Nilai yang mungkin ditentukan dalam tabel berikut.
Nilai | Makna |
---|---|
|
Bahasa ini memiliki penempatan pemisah kata yang mengharuskan aplikasi memanggil ScriptBreak dan itu mencakup posisi karakter yang ditandai oleh anggota fWordStop di SCRIPT_LOGATTR. |
|
Word penempatan jeda diidentifikasi dengan memindai karakter yang ditandai oleh anggota fWhiteSpace di SCRIPT_LOGATTR, atau untuk glyph yang ditandai dengan nilai SCRIPT_JUSTIFY_BLANK atau SCRIPT_JUSTIFY_ARABIC_BLANK untuk anggota uJustificationSCRIPT_VISATTR. |
fNeedsCaretInfo
Nilai yang menunjukkan apakah bahasa, misalnya, Thailand atau India, membatasi penempatan tanda titik ke batas kluster. Nilai yang mungkin ditentukan dalam tabel berikut. Untuk menentukan posisi tanda sisipan yang valid, aplikasi memeriksa nilai fCharStop dalam atribut logis yang diambil oleh ScriptBreak, atau membandingkan nilai yang berdekatan dalam array pwLogClust yang diambil oleh ScriptShape.
Nilai | Makna |
---|---|
|
Bahasa membatasi penempatan tanda sisipan ke batas kluster. |
|
Bahasa tidak membatasi penempatan tanda sisipan ke batas kluster. |
bCharSet
Set karakter nominal yang terkait dengan skrip. Selama pembuatan font yang cocok untuk menampilkan skrip, set karakter ini dapat digunakan sebagai nilai anggota lfCharSet dari LOGFONT.
Untuk skrip baru yang tidak memiliki set karakter yang ditentukan, aplikasi biasanya harus mengatur bCharSet ke DEFAULT_CHARSET. Lihat deskripsi anggota fAmbiguousCharSet.
fControl
Nilai yang menunjukkan apakah hanya karakter kontrol yang digunakan dalam skrip. Nilai yang mungkin ditentukan dalam tabel berikut. Perhatikan bahwa setiap karakter kontrol tidak berakhir dalam struktur SCRIPT_CONTROL .
Nilai | Makna |
---|---|
|
Atur hanya karakter kontrol dalam skrip. |
|
Jangan hanya mengatur karakter kontrol dalam skrip. |
fPrivateUseArea
Nilai yang menunjukkan penggunaan area penggunaan privat, sekumpulan karakter khusus yang didefinisikan secara privat untuk rentang Unicode U+E000 hingga U+F8FF. Nilai yang mungkin ditentukan dalam tabel berikut.
Nilai | Makna |
---|---|
|
Gunakan area penggunaan privat. |
|
Jangan gunakan area penggunaan privat. |
fNeedsCharacterJustify
Nilai yang menunjukkan penanganan justifikasi untuk skrip dengan meningkatkan semua spasi antar huruf, bukan hanya spasi antar kata. Nilai yang mungkin ditentukan dalam tabel berikut. Saat melakukan pembenaran antar karakter, Uniscribe menyisipkan ruang ekstra hanya setelah glyph yang ditandai dengan nilai SCRIPT_JUSTIFY_CHARACTER untuk anggota uJustificationSCRIPT_VISATTR.
Nilai | Makna |
---|---|
|
Gunakan pembenaran karakter. |
|
Jangan gunakan pembenaran karakter. |
fInvalidGlyph
Nilai yang menunjukkan apakah ScriptShape menghasilkan glyph yang tidak valid untuk skrip untuk mewakili urutan yang tidak valid. Nilai yang mungkin ditentukan dalam tabel berikut. Aplikasi dapat memperoleh indeks glyph dari glyph yang tidak valid untuk font tertentu dengan memanggil ScriptGetFontProperties.
Nilai | Makna |
---|---|
|
Hasilkan glyph yang tidak valid untuk mewakili urutan yang tidak valid. |
|
Jangan menghasilkan glyph yang tidak valid untuk mewakili urutan yang tidak valid. |
fInvalidLogAttr
Nilai yang menunjukkan apakah ScriptBreak menandai kombinasi yang tidak valid untuk skrip dengan mengatur fInvalid dalam buffer atribut logis. Nilai yang mungkin ditentukan dalam tabel berikut.
Nilai | Makna |
---|---|
|
Tandai kombinasi yang tidak valid untuk skrip. |
|
Jangan tandai kombinasi yang tidak valid untuk skrip. |
fCDM
Nilai yang menunjukkan apakah skrip berisi item yang telah dianalisis oleh ScriptItemize sebagai termasuk Menggabungkan Tanda Diakritik (U+0300 hingga U+36F). Nilai yang mungkin ditentukan dalam tabel berikut.
Nilai | Makna |
---|---|
|
Skrip berisi item yang menyertakan menggabungkan tanda diakritik. |
|
Skrip tidak berisi item yang menyertakan menggabungkan tanda diakritik. |
fAmbiguousCharSet
Nilai yang menunjukkan apakah skrip berisi karakter yang didukung oleh lebih dari satu set karakter. Nilai yang mungkin ditentukan dalam tabel berikut.
Nilai | Makna |
---|---|
|
Skrip berisi karakter yang didukung oleh lebih dari satu set karakter. Dalam hal ini, anggota bCharSet dari struktur ini harus diabaikan, dan anggota lfCharSetdari LOGFONT harus diatur ke DEFAULT_CHARSET. Lihat bagian Keterangan untuk informasi selengkapnya. |
|
Skrip tidak berisi karakter yang didukung oleh lebih dari satu set karakter. |
fClusterSizeVaries
Nilai yang menunjukkan apakah skrip, seperti Arab, mungkin menggunakan pembentukan kontekstual yang menyebabkan ukuran string meningkat selama penghapusan karakter. Nilai yang mungkin ditentukan dalam tabel berikut.
Nilai | Makna |
---|---|
|
Gunakan ukuran kluster variabel untuk pembentukan kontekstual. |
|
Jangan gunakan ukuran kluster variabel untuk pembentukan kontekstual. |
fRejectInvalid
Nilai yang menunjukkan apakah skrip, misalnya, Thailand, harus menolak urutan yang tidak valid yang secara konvensional menyebabkan program editor, seperti Notepad, bip dan mengabaikan penekanan tombol. Nilai yang mungkin ditentukan dalam tabel berikut.
Nilai | Makna |
---|---|
|
Tolak urutan yang tidak valid. |
|
Jangan tolak urutan yang tidak valid. |
Keterangan
Struktur ini diisi oleh fungsi ScriptGetProperties .
Banyak skrip Uniscribe tidak sesuai langsung dengan set karakter 8-bit. Saat beberapa karakter dalam skrip didukung oleh lebih dari satu set karakter, anggota fAmbiguousCharSet diatur. Aplikasi harus melakukan pemrosesan lebih lanjut untuk menentukan set karakter yang akan digunakan saat meminta font yang cocok untuk dijalankan. Misalnya, mungkin menentukan bahwa eksekusi terdiri dari beberapa bahasa dan memisahkan eksekusi sehingga font yang berbeda digunakan untuk setiap bahasa.
Aplikasi menggunakan kode berikut selama inisialisasi untuk mendapatkan penunjuk ke array SCRIPT_PROPERTIES .
const SCRIPT_PROPERTIES **ppScriptProperties; // Array of pointers
// to properties
int iMaxScript;
HRESULT hr;
hr = ScriptGetProperties(&ppScriptProperties, &iMaxScript);
Kemudian aplikasi dapat memeriksa properti skrip item seperti yang ditunjukkan pada contoh berikutnya.
hr = ScriptItemize(pwcInChars, cInChars, cMaxItems, psControl, psState, pItems, pcItems);
//...
if (ppScriptProperties[pItems[iItem].a.eScript]->fNeedsCaretInfo)
{
// Use ScriptBreak to restrict the caret from entering clusters (for example).
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Header | usp10.h |