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.

Nilai Makna
TRUE
Skrip hanya berisi digit dan karakter lain yang digunakan dalam menulis angka dengan aturan algoritma dua arah Unicode.
FALSE
Skrip tidak hanya berisi digit dan karakter lain yang digunakan dalam menulis angka dengan aturan algoritma dua arah Unicode.

fComplex

Nilai yang menunjukkan skrip kompleks untuk bahasa yang memerlukan pembentukan atau tata letak khusus. Nilai yang mungkin ditentukan dalam tabel berikut.

Nilai Makna
TRUE
Skrip memerlukan pembentukan atau tata letak khusus.
FALSE
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
TRUE
Bahasa ini memiliki penempatan pemisah kata yang mengharuskan aplikasi memanggil ScriptBreak dan itu mencakup posisi karakter yang ditandai oleh anggota fWordStop di SCRIPT_LOGATTR.
FALSE
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.

CatatanScriptXtoCP dan ScriptCPtoX secara otomatis menerapkan pembatasan penempatan tanda titik.
 
Nilai Makna
TRUE
Bahasa membatasi penempatan tanda sisipan ke batas kluster.
FALSE
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
TRUE
Atur hanya karakter kontrol dalam skrip.
FALSE
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
TRUE
Gunakan area penggunaan privat.
FALSE
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
TRUE
Gunakan pembenaran karakter.
FALSE
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
TRUE
Hasilkan glyph yang tidak valid untuk mewakili urutan yang tidak valid.
FALSE
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
TRUE
Tandai kombinasi yang tidak valid untuk skrip.
FALSE
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
TRUE
Skrip berisi item yang menyertakan menggabungkan tanda diakritik.
FALSE
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
TRUE
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.
FALSE
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
TRUE
Gunakan ukuran kluster variabel untuk pembentukan kontekstual.
FALSE
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
TRUE
Tolak urutan yang tidak valid.
FALSE
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

Lihat juga

Pengidentifikasi Bahasa

SCRIPT_CONTROL

SCRIPT_LOGATTR

SCRIPT_VISATTR

ScriptBreak

ScriptCPtoX

ScriptGetFontProperties

ScriptGetProperties

ScriptItemize

ScriptShape

ScriptXtoCP

Uniscribe

Struktur Uniscribe