Tentang Model Objek Teks
Model Objek Teks (TOM) mendefinisikan sekumpulan antarmuka manipulasi teks yang didukung dalam berbagai derajat oleh beberapa solusi teks Microsoft, termasuk kontrol edit yang kaya. Topik ini memberikan gambaran umum tingkat tinggi tentang TOM. Ini membahas topik berikut.
- Objek TOM Versi 2
- Konvensi Antarmuka TOM
- Jenis tomBool
- BuildUp matematika dan Build Down
- TOM RTF
- Menemukan Teks Kaya
- Aksesibilitas TOM
- Set Kecocokan Karakter
Objek TOM Versi 2
TOM versi 2 (TOM 2) memperluas model objek teks asli; antarmuka baru berasal dari antarmuka lama. TOM API yang diperbarui mencakup dukungan untuk properti format karakter dan paragraf baru, model tabel, beberapa pilihan, dan dukungan objek sebaris untuk matematika dan ruby.
Objek TOM 2 tingkat atas didefinisikan oleh antarmuka ITextDocument2 , yang memiliki metode untuk membuat dan mengambil objek yang lebih rendah dalam hierarki objek. Untuk pemrosesan teks biasa sederhana, Anda dapat memperoleh objek ITextRange2 dari objek ITextDocument2 dan melakukan sebagian besar dengan itu. Jika Anda perlu menambahkan pemformatan teks kaya, Anda bisa mendapatkan objek ITextFont2 dan ITextPara2 dari objek ITextRange2. ITextFont2 menyediakan pemrograman yang setara dengan dialog format-font Microsoft Word, dan ITextPara2 menyediakan yang setara dengan dialog paragraf format Word.
Selain tiga objek tingkat bawah ini, TOM 2 memiliki objek pilihan (ITextSelection2), yang merupakan objek ITextRange2 dengan penyorotan pilihan dan beberapa metode berorientasi UI.
Rentang dan objek pilihan mencakup metode berorientasi layar yang memungkinkan program memeriksa teks pada layar atau teks yang dapat digulir ke layar. Kemampuan ini membantu membuat teks dapat diakses oleh orang-orang dengan gangguan penglihatan, misalnya.
Setiap antarmuka yang memiliki 2 akhiran mewarisi dari antarmuka yang sesuai tanpa akhiran 2. Misalnya, ITextDocument2 mewarisi dari ITextDocument.
Objek TOM 2 memiliki hierarki berikut.
ITextDocument2 Top-level editing object
ITextRange2 Primary text interface: a range of text
ITextFont2 Character-attribute interface
ITextPara2 Paragraph-attribute interface
ITextRow Table interface
ITextSelection2 Screen highlighted text range
ITextRange2 Selection inherits all range methods
ITextDisplays Displays collection (not yet defined)
ITextStrings Rich-text strings collection
ITextStoryRanges2 Enumerator for stories in document
Objek ITextDocument2 menjelaskan satu atau beberapa rentang teks yang berdekatan yang disebut cerita. Cerita mewakili berbagai bagian dokumen, seperti teks utama dokumen, header dan footer, catatan kaki, anotasi, dan pad awal teks kaya. Cerita pad awal digunakan saat menerjemahkan antara ekspresi matematika yang diformat secara linier dan formulir bawaan. Cerita pad awal juga digunakan saat menyimpan konten rentang yang merupakan sumber salinan saat ini ketika konten akan diubah.
Objek ITextRange2 didefinisikan oleh offset posisi karakter awal dan akhir dan objek cerita. Ini tidak ada secara independen dari objek cerita induknya, meskipun teksnya dapat disalin ke clipboard atau ke target lain. Objek rentang teks berbeda dari spreadsheet dan objek rentang lainnya, yang didefinisikan oleh jenis offset lainnya; misalnya, posisi baris/kolom atau grafik (x, y). Objek rentang teks dapat memodifikasi dirinya dengan berbagai cara, dapat mengembalikan duplikat dirinya sendiri, dan dapat diperintahkan untuk menyalin posisi karakter awal dan akhir dan penunjuk ceritanya ke pilihan saat ini.
Objek cerita eksplisit tidak diperlukan, karena objek ITextRange selalu dapat dibuat untuk mewakili cerita tertentu. Secara khusus, objek ITextDocument dapat membuat objek ITextStoryRanges untuk menghitung cerita dalam dokumen dalam hal rentang dengan nilai posisi karakter awal dan akhir yang menggambarkan cerita lengkap (seperti, 0 dan tomForward).
Dengan objek ITextStoryRanges2, objek cerita eksplisit tidak diperlukan, karena setiap cerita dijelaskan oleh objek ITextRange2. Secara khusus, objek ITextDocument2 dapat membuat objek ITextStoryRanges2 untuk menghitung cerita dalam dokumen dalam hal rentang dengan nilai posisi karakter awal dan akhir yang menggambarkan cerita lengkap (seperti, 0 dan tomForward).
Antarmuka ITextRow bersama dengan metode ITextRange::Move dan ITextRange::Expand memberikan kemampuan untuk menyisipkan, mengkueri, dan mengubah tabel.
Konvensi Antarmuka TOM
Semua metode TOM mengembalikan nilai HRESULT . Secara umum, metode TOM mengembalikan nilai standar berikut.
- E_OUTOFMEMORY
- E_INVALIDARG
- E_NOTIMPL
- E_FILENOTFOUND
- E_ACCESSDENIED
- E_FAIL
- CO_E_RELEASED
- NOERROR (sama dengan S_OK)
- S_FALSE
Ketahuilah bahwa jika instans pengeditan yang terkait dengan objek TOM seperti ITextRange dihapus, objek TOM menjadi tidak berguna, dan semua metodenya mengembalikan CO_E_RELEASED.
Selain nilai pengembalian HRESULT , banyak metode menyertakan parameter, yang merupakan pointer yang digunakan untuk mengembalikan nilai. Untuk semua antarmuka, Anda harus memeriksa semua parameter pointer untuk memastikan bahwa parameter tersebut bukan nol sebelum menggunakannya. Jika Anda meneruskan nilai null ke metode yang memerlukan penunjuk yang valid, metode mengembalikan E_INVALIDARG. Penunjuk keluar opsional dengan nilai null diabaikan.
Gunakan metode dengan Dapatkan dan Atur awalan untuk mendapatkan dan mengatur properti. Variabel Boolean menggunakan tomFalse (0) untuk FALSE, dan tomTrue (-1) untuk TRUE.
Konstanta TOM didefinisikan dalam jenis enumerasi tomConstants dan dimulai dengan tom awalan, misalnya tomWord.
Jenis tomBool
Banyak metode TOM menggunakan jenis variabel khusus yang disebut "tomBool" untuk atribut teks kaya yang memiliki status biner. Jenis tomBool berbeda dari jenis Boolean karena dapat mengambil empat nilai: tomTrue, tomFalse, tomToggle, dan tomUndefined. Nilai tomTrue dan tomFalse menunjukkan true dan false. Nilai tomToggle digunakan untuk mengalihkan properti. Nilai tomUndefined , yang lebih tradisional disebut NINCH, adalah nilai tanpa input, tanpa perubahan khusus yang bekerja dengan panjang, float, dan COLORREFs. Untuk string, tomUndefined (atau NINCH) diwakili oleh string null. Untuk operasi pengaturan properti, menggunakan tomUndefined tidak mengubah properti target. Untuk properti mendapatkan operasi, tomUndefined berarti bahwa karakter dalam rentang memiliki nilai yang berbeda (memberikan kotak centang abu-abu dalam kotak dialog properti).
BuildUp matematika dan Build Down
Anda dapat menggunakan metode ITextRange2::BuildUpMath untuk mengonversi ekspresi matematika yang diformat secara linier menjadi versi bawaan. Metode ITextRange2::Linearize melakukan konversi yang berlawanan, yang disebut linearisasi atau build down, untuk mengonversi versi ekspresi matematika bawaan kembali ke format linier. Kemampuan build down matematika berguna ketika Anda perlu mengekspor teks biasa atau untuk mengaktifkan jenis pengeditan tertentu.
TOM RTF
Di TOM, pertukaran teks kaya dapat dilakukan oleh serangkaian panggilan metode eksplisit atau dengan mentransfer teks kaya dalam Format Teks Kaya (RTF). Bagian ini memberikan tabel kata kontrol RTF untuk properti paragraf dan untuk properti karakter.
Kata-kata Kontrol Paragraf TOM RTF
Kata kontrol | Makna |
---|---|
\ fi n | Inden baris pertama (defaultnya adalah nol). |
\Menjaga | Jaga agar paragraf tetap utuh. |
\ dijaga | Pertahankan dengan paragraf berikutnya. |
\ li n | Inden kiri (defaultnya adalah nol). |
\ noline | Tidak ada penomoran baris. |
\ nowidctlpar | Matikan kontrol janda/yatim piatu. |
\ pagebb | Putuskan halaman sebelum paragraf. |
\Par | Paragraf baru. |
\ pard | Reset ke properti paragraf default. |
\Ql | Rata kiri (default). |
\Qr | Rata kanan. |
\ qj | Dibenarkan. |
\Qc | Berpusat. |
\ ri n | Inden kanan (defaultnya adalah nol). |
\ s n | Gaya n. |
\ sa n | Spasi setelah (defaultnya adalah nol). |
\ sb n | Spasi sebelum (defaultnya adalah nol). |
\ sl n | Jika hilang atau jika n=1000, penspasian baris ditentukan oleh karakter tertinggi dalam baris (spasi baris tunggal); jika n> nol, setidaknya ukuran ini digunakan; jika n adalah < nol, tepatnya |n| digunakan. Penspasian baris adalah penspasian beberapa baris jika \ slmult 1 mengikuti. |
\ slmult m | Mengikuti \ sl. m = nol: Penspasian baris Setidaknya atau Persis seperti yang dijelaskan oleh \ sl n. m = 1: penspasian baris = n/240 kali penspasian baris tunggal. |
\ tb n | Posisi tab batang, dalam twips, dari margin kiri. |
\ tldot | Titik pemandu tab. |
\ tleq | Tanda sama dengan pemandu tab. |
\ tlhyph | Tanda hubung pemandu tab. |
\ tlth | Garis tebal pemandu tab. |
\ tlul | Garis bawah pemandu tab. |
\ tqc | Tab tengah. |
\ tqdec | Tab Desimal. |
\ tqr | Tab flush-right. |
\ tx n | Posisi tab, dalam twips, dari margin kiri. |
Kata-kata Kontrol Format Karakter TOM RTF
Kata kontrol | Makna |
---|---|
\ animasi n | Mengatur tipe animasi ke n. |
\b | Berani. |
\Topi | Semua ibukota. |
\ cf n | Warna latar depan (defaultnya adalah tomAutocolor). |
\ cs n | Gaya karakter n. |
\ dn n | Posisi subskrip dalam setengah titik (defaultnya adalah 6). |
\ embo | Timbul. |
\ f n | Nomor font, n mengacu pada entri dalam tabel font. |
\ fs n | Ukuran font dalam setengah titik (defaultnya adalah 24). |
\ sorot n | Warna latar belakang (defaultnya adalah tomAutocolor). |
\I | Miring. |
\ impr | Jejak. |
\ lang n | Menerapkan bahasa ke karakter. n adalah angka yang sesuai dengan bahasa. Kata kontrol biasa \ mengatur ulang properti bahasa ke bahasa yang ditentukan oleh \ deflang n di properti dokumen. |
\ nosupersub | Menonaktifkan superskrip atau subskrip. |
\ outl | Garis. |
\Polos | Mereset properti pemformatan karakter ke nilai default yang ditentukan oleh aplikasi. Properti pemformatan karakter terkait (dijelaskan di bagian Properti Karakter Terkait dalam spesifikasi RTF) juga diatur ulang. |
\ scaps | Kapital kecil. |
\ bayangan | Bayangan. |
\Strike | Coret. |
\Sub | Menerapkan subskrip ke teks dan mengurangi ukuran titik sesuai dengan informasi font. |
\Super | Menerapkan superskrip ke teks dan mengurangi ukuran titik sesuai dengan informasi font. |
\Ul | Garis bawah berkelanjutan. \ ul0 mematikan semua garis bawah. |
\ uld | Garis bawah putus-putus. |
\ uldb | Garis bawah ganda. |
\ ulnone | Menghentikan semua garis bawah. |
\ ulw | Garis bawah kata. |
\ naik n | Posisi superskrip dalam setengah titik (defaultnya adalah 6). |
\v | Teks tersembunyi. |
Menemukan Teks Kaya
Anda dapat menggunakan metode TOM untuk menemukan teks kaya seperti yang ditentukan oleh rentang teks. Menemukan teks kaya seperti itu persis sering diperlukan dalam pemrosesan kata, meskipun belum pernah terpenuhi dalam prosesor kata "apa yang Anda lihat adalah apa yang Anda dapatkan" (WYSIWYG). Jelas ada domain yang lebih besar dari pencocokan teks kaya yang memungkinkan beberapa properti pemformatan karakter diabaikan (atau menyertakan pemformatan paragraf dan/atau konten objek), tetapi generalisasi tersebut berada di luar cakupan bagian ini.
Salah satu tujuan untuk fungsionalitas ini adalah menggunakan kotak dialog Temukan teks kaya untuk menentukan teks kaya yang ingin Anda temukan dalam dokumen. Kotak dialog akan diimplementasikan menggunakan kontrol edit yang kaya dan metode TOM akan digunakan untuk melakukan pencarian melalui dokumen. Anda dapat menyalin teks kaya yang diinginkan dari dokumen ke dalam kotak dialog Temukan , atau memasukkan dan memformatnya langsung di kotak dialog Temukan .
Contoh berikut menunjukkan cara menggunakan metode TOM untuk menemukan teks yang berisi kombinasi pemformatan karakter yang tepat. Algoritma mencari teks biasa dalam rentang kecocokan, yang diberi nama pr1
. Jika teks biasa ditemukan, teks tersebut ditunjukkan oleh rentang uji coba, yang diberi nama pr2
. Kemudian, dua rentang titik penyisipan (prip1
dan prip2
) digunakan untuk menelusuri rentang uji coba yang membandingkan pemformatan karakternya dengan pr1
. Jika cocok persis, rentang input (diberikan oleh ppr
) diperbarui untuk mengarahkan ke teks rentang uji coba dan fungsi mengembalikan jumlah karakter dalam rentang yang cocok. Dua objek ITextFont, pf1
dan pf2
, digunakan dalam perbandingan pemformatan karakter. Mereka melekat pada rentang titik penyisipan prip1
dan prip2
.
LONG FindRichText (
ITextRange **ppr, // Ptr to range to search
ITextRange *pr1) // Range with rich text to find
{
BSTR bstr; // pr1 plain-text to search for
LONG cch; // Text string count
LONG cch1, cch2; // tomCharFormat run char counts
LONG cchMatch = 0; // Nothing matched yet
LONG cp; // Handy char position
LONG cpFirst1; // pr1 cpFirst
LONG cpFirst2; // pr2 cpFirst
ITextFont * pf1, *pf // Fonts corresponding to IPs prip1 and prip2
ITextRange *pr2; // Range duplicate to search with
ITextRange *prip1, *prip // Insertion points to walk pr1, pr2
if (!ppr || !*ppr || !pr1)
return E_INVALIDARG;
// Initialize range and font objects used in search
if ((*ppr)->GetDuplicate(&pr2) != NOERROR ||
pr1->GetDuplicate(&prip1) != NOERROR ||
pr2->GetDuplicate(&prip2) != NOERROR ||
prip1->GetFont(&pf1) != NOERROR ||
prip2->GetFont(&pf2) != NOERROR ||
pr1->GetText(&bstr) != NOERROR )
{
return E_OUTOFMEMORY;
}
pr1->GetStart(&cpFirst1);
// Keep searching till rich text is matched or no more plain-text hits
while(!cchMatch && pr2->FindText(bstr, tomForward, 0, &cch) == NOERROR)
{
pr2->GetStart(&cpFirst2); // pr2 is a new trial range
prip1->SetRange(cpFirst1, cpFirst1); // Set up IPs to scan match
prip2->SetRange(cpFirst2, cpFirst2); // and trial ranges
while(cch > 0 &&
pf1->IsEqual(pf2, NULL) == NOERROR) // Walk match & trial ranges
{ // together comparing font
prip1->GetStart(&cch1); // properties
prip1->Move(tomCharFormat, 1, NULL);
prip1->GetStart(&cp);
cch1 = cp - cch1; // cch of next match font run
prip2->GetStart(&cch2);
prip2->Move(tomCharFormat, 1, NULL);
prip2->GetStart(&cp);
cch2 = cp - cch2; // cch of next trial font run
if(cch1 < cch) // There is more to compare
{
if(cch1 != cch2) // Different run lengths:
break; // no formatting match
cch = cch - cch1; // Matched format run
}
else if(cch2 < cch) // Trial range format run too
break; // short
else // Both match and trial runs
{ // reach at least to match
pr2->GetEnd(&cp); // text end: rich-text match
(*ppr)->SetRange(cpFirst2, cp) // Set input range to hit
cchMatch = cp - cpFirst2; // coordinates and return
break; // length of matched string
}
}
}
pr2->Release();
prip1->Release();
prip2->Release();
pf1->Release();
pf2->Release();
SysFreeString(bstr);
return cchMatch;
}
Aksesibilitas TOM
TOM menyediakan dukungan aksesibilitas melalui antarmuka ITextSelection dan ITextRange. Bagian ini menjelaskan metode yang berguna untuk aksesibilitas serta bagaimana program dapat menentukan posisi layar x, y objek.
Karena program aksesibilitas berbasis UI biasanya bekerja dengan layar dan mouse, masalah umumnya adalah menemukan antarmuka ITextDocument yang sesuai untuk lokasi mouse saat ini (dalam koordinat layar). Bagian berikut menyajikan dua cara untuk menentukan antarmuka yang tepat:
- Melalui tabel objek berjalan
- Melalui pesan EM_GETOLEINTERFACE, yang berfungsi untuk instans edit kaya berjendela, asalkan klien berada dalam ruang proses yang sama (tidak diperlukan marshaling)
Untuk informasi selengkapnya, lihat spesifikasi Aksesibilitas Aktif Microsoft. Setelah mendapatkan objek dari posisi layar, Anda dapat menggunakan untuk antarmuka ITextDocument dan memanggil metode RangeFromPoint untuk mendapatkan objek rentang kosong di cp yang sesuai dengan posisi layar.
Antarmuka dari Menjalankan Tabel Objek
Tabel objek yang sedang berjalan (ROT) memberi tahu instans objek apa yang aktif. Dengan mengkueri tabel ini, Anda dapat mempercepat proses menyambungkan klien ke objek saat objek sudah berjalan. Sebelum program dapat mengakses antarmuka TOM melalui tabel objek yang sedang berjalan, instans TOM dengan jendela perlu mendaftar di ROT menggunakan moniker. Anda membuat moniker dari string yang berisi nilai heksadesimal HWND-nya. Sampel kode berikut menunjukkan cara melakukan ini.
// This TOM implementation code is executed when a new windowed
// instance starts up.
// Variables with leading underscores are members of this class.
HRESULT hr;
OLECHAR szBuf[10]; // Place to put moniker
MONIKER *pmk;
hr = StringCchPrintf(szBuff, 10, "%x", _hwnd);
if (FAILED(hr))
{
//
// TODO: write error handler
//
}
CreateFileMoniker(szBuf, &pmk);
OleStdRegisterAsRunning(this, pmk, &_dwROTcookie);
....................
// Accessibility Client:
// Find hwnd for window pointed to by mouse cursor.
GetCursorPos(&pt);
hwnd = WindowFromPoint(pt);
// Look in ROT (running object table) for an object attached to hwnd
hr = StringCchPrintf(szBuff, 10, "%x", hwnd);
if (FAILED(hr))
{
//
// TODO: write error handler
//
}
CreateFileMoniker(szBuf, &pmk);
CreateBindContext(0, &pbc);
pmk->BindToObject(pbc, NULL, IID_ITextDocument, &pDoc);
pbc->Release();
if( pDoc )
{
pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
// ...now do whatever with the range pRange
}
Antarmuka dari Pesan Jendela
Pesan EM_GETOLEINTERFACE menyediakan cara lain untuk mendapatkan antarmuka IUnknown untuk objek pada posisi layar tertentu. Seperti yang dijelaskan dalam Antarmuka dari Menjalankan Tabel Objek, Anda mendapatkan HWND untuk posisi layar lalu mengirim pesan ini ke HWND tersebut. Pesan EM_GETOLEINTERFACE bersifat khusus edit kaya dan mengembalikan pointer ke antarmuka IRichEditOle dalam variabel yang ditangani oleh lParam.
Tips Jika penunjuk dikembalikan (pastikan untuk mengatur objek yang ditunjukkan lParam ke null sebelum mengirim pesan), Anda dapat memanggil metode IUnknown::QueryInterface untuk mendapatkan antarmuka ITextDocument. Sampel kode berikut mengilustrasikan pendekatan ini.
HWND hwnd;
ITextDocument *pDoc;
ITextRange *pRange;
POINT pt;
IUnknown *pUnk = NULL;
GetCursorPos(&pt);
hwnd = WindowFromPoint(pt);
SendMessage(hwnd, EM_GETOLEINTERFACE, 0, (LPARAM)&pUnk);
if(pUnk &&
pUnk->QueryInterface(IID_ITextDocument, &pDoc) == NOERROR)
{
pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
// ... continue with rest of program
}
Metode Berorientasi Aksesibilitas
Beberapa metode TOM sangat berguna untuk menavigasi di sekitar layar, sementara metode TOM lainnya meningkatkan apa yang dapat Anda lakukan ketika Anda tiba di tempat-tempat menarik. Tabel berikut ini menjelaskan metode yang paling berguna.
Metode | Cara mempromosikan aksesibilitas |
---|---|
GetSelection | Metode ini mendapatkan pilihan aktif yang dapat digunakan untuk berbagai tujuan berorientasi tampilan, seperti menyoroti teks dan menggulir. |
RangeFromPoint | Ketika digunakan pada pilihan aktif, metode ini dijamin untuk mendapatkan rentang yang terkait dengan tampilan tertentu. |
Luaskan | Memperbesar rentang teks sehingga unit parsial apa pun yang dikandungnya benar-benar terkandung. Misalnya, Expand(tomWindow) memperluas rentang untuk menyertakan bagian yang terlihat dari cerita rentang. |
GetDuplicate | Ketika digunakan pada pilihan aktif, metode ini dijamin untuk mendapatkan rentang yang terkait dengan tampilan tertentu. Lihat deskripsi RangeFromPoint. |
GetPoint | Mendapatkan koordinat layar untuk posisi karakter awal atau akhir dalam rentang teks. |
ScrollIntoView | Menggulir rentang teks ke dalam tampilan. |
SetPoint | Memilih teks pada atau ke atas melalui titik tertentu. |
Set Kecocokan Karakter
Parameter varian dari berbagai metode Move* di ITextRange, seperti MoveWhile dan MoveUntil, dapat mengambil string eksplisit atau indeks 32-bit set pencocokan karakter. Indeks didefinisikan oleh rentang Unicode atau kumpulan karakter GetStringTypeEx. Rentang Unicode mulai dari n dan panjang l (< 32768) diberikan oleh indeks n + (l << 16) + 0x80000000. Misalnya, huruf Yunani dasar didefinisikan oleh CR_Greek = 0x805f0370 dan karakter ASCII yang dapat dicetak ditentukan oleh CR_ASCIIPrint = 0x805e0020. Selain itu, metode MoveWhile dan MoveUntil memungkinkan Anda dengan cepat melewati rentang karakter dalam kumpulan karakter GetStringTypeEx , atau dalam rentang karakter yang tidak ada dalam salah satu set karakter ini.
Set GetStringTypeEx ditentukan oleh nilai untuk Ctype1, Ctype2, dan Ctype3, dan didefinisikan sebagai berikut.
Cset | Makna |
---|---|
Ctype1 | Kombinasi jenis CT_CTYPE1. |
Ctype2 + tomCType2 | Jenis CT_CTYPE2 apa pun. |
Ctype3 + tomCType3 | Kombinasi jenis CT_CTYPE3. |
Secara khusus, Ctype1 dapat berupa kombinasi apa pun dari yang berikut ini.
Nama Ctype1 | Value | Makna |
---|---|---|
C1_UPPER | 0x0001 | Huruf besar. |
C1_LOWER | 0x0002 | Huruf kecil. |
C1_DIGIT | 0x0004 | Digit desimal. |
C1_SPACE | 0x0008 | Karakter spasi. |
C1_PUNCT | 0x0010 | Tanda baca. |
C1_CNTRL | 0x0020 | Karakter kontrol. |
C1_BLANK | 0x0040 | Karakter kosong. |
C1_XDIGIT | 0x0080 | Digit heksadesimal. |
C1_ALPHA | 0x0100 | Setiap karakter linguistik (alfabet, suku kata, atau ideografis). |
C1_DEFINED | 0x0200 | Karakter yang ditentukan, tetapi bukan salah satu jenis C1_*lainnya. |
Jenis Ctype2 mendukung tata letak teks Unicode yang tepat. Atribut arah ditetapkan sehingga algoritma tata letak dua arah yang distandarkan oleh Unicode menghasilkan hasil yang akurat. Jenis-jenis ini saling eksklusif. Untuk informasi selengkapnya tentang penggunaan atribut ini, lihat The Unicode Standard: Worldwide Character Encoding, Volume 1 dan 2, Addison-Wesley Publishing Company: 1991, 1992.
Nama CType2 | Value | Makna |
---|---|---|
Kuat: | ||
C2_LEFTTORIGHT | 0x1 | Kiri ke kanan. |
C2_RIGHTTOLEFT | 0x2 | Kanan ke kiri. |
Lemah: | ||
C2_EUROPENUMBER | 0x3 | Nomor Eropa, digit Eropa. |
C2_EUROPESEPARATOR | 0x4 | Pemisah numerik Eropa. |
C2_EUROPETERMINATOR | 0x5 | Terminator numerik Eropa. |
C2_ARABICNUMBER | 0x6 | Nomor Arab. |
C2_COMMONSEPARATOR | 0x7 | Pemisah numerik umum. |
Netral: | ||
C2_BLOCKSEPARATOR | 0x8 | Pemisah blok. |
C2_SEGMENTSEPARATOR | 0x9 | Pemisah segmen. |
C2_WHITESPACE | 0xA | Spasi kosong. |
C2_OTHERNEUTRAL | 0xB | Netral lainnya. |
Tidak berlaku: | ||
C2_NOTAPPLICABLE | 0x0 | Tidak ada arah implisit. |
Jenis Ctype3 dimaksudkan untuk menjadi tempat penampung untuk ekstensi ke jenis POSIX yang diperlukan untuk pemrosesan teks umum atau untuk fungsi pustaka C standar.
Nama CType3 | Value | Makna |
---|---|---|
C3_NONSPACING | 0x1 | Tanda tidak berpakaian. |
C3_DIACRITIC | 0x2 | Tanda nonspacing diakritik. |
C3_VOWELMARK | 0x4 | Tanda vokal nonspacing. |
C3_SYMBOL | 0x8 | Simbol. |
C3_KATAKANA | 0x10 | Karakter Katakana. |
C3_HIRAGANA | 0x20 | Karakter Hiragana. |
C3_HALFWIDTH | 0x40 | Karakter lebar setengah. |
C3_FULLWIDTH | 0x80 | Karakter lebar penuh. |
C3_IDEOGRAPH | 0x100 | Karakter ideografis. |
C3_KASHIDA | 0x200 | Karakter Arab Kashida. |
C3_ALPHA | 0x8000 | Semua karakter linguistik (alfabet, suku kata, dan ideografis). |
C3_NOTAPPLICABLE | 0x0 | Tidak berlaku. |
Edit Development Kit (EDK) dapat menyertakan definisi indeks pVar untuk rentang berikut yang dijelaskan dalam Standar Unicode.
Set karakter | Rentang Unicode | Set karakter | Rentang Unicode |
---|---|---|---|
ASCII | 0x0—0x7f | ANSI | 0x0—0xff |
ASCIIPrint | 0x20—0x7e | Latin1 | 0x20—0xff |
Latin1Supp | 0xa0—0xff | LatinXA | 0x100—0x17f |
LatinXB | 0x180—0x24f | IPAX | 0x250—0x2af |
SpaceMod | 0x2b0—0x2ff | Menggabungkan | 0x300—0x36f |
Yunani | 0x370—0x3ff | BasicGreek | 0x370—0x3cf |
GreekSymbols | 0x3d0—0x3ff | Sirilik | 0x400—0x4ff |
Armenia | 0x530—0x58f | Ibrani | 0x590—0x5ff |
BasicHebrew | 0x5d0—0x5ea | IbraniXA | 0x590—0x5cf |
IbraniXB | 0x5eb—0x5ff | Arab | 0x600—0x6ff |
BasicArabic | 0x600—0x652 | ArabicX | 0x653—0x6ff |
Devangari | 0x900—0x97f | Bangla (sebelumnya Bengali) | 0x980—0x9ff |
Gurmukhi | 0xa00—0xa7f | Gujarat | 0xa80—0xaff |
Odia (sebelumnya Oriya) | 0xb00—0xb7f | Tamil | 0xb80—0xbff |
Teluga | 0xc00—0xc7f | Kannada | 0xc80—0xcff |
Malayalam | 0xd00—0xd7f | Thailand | 0xe00—0xe7f |
Laos | 0xe80—0xeff | GeorgianX | 0x10a0—0xa0cf |
BascGeorgian | 0x10d0—0x10ff | Jamo | 0x1100—0x11ff |
LatinXAdd | 0x1e00—0x1eff | YunaniX | 0x1f00—0x1fff |
GenPunct | 0x2000—0x206f | Superskrip | 0x2070—0x207f |
Subskrip | 0x2080—0x208f | SuperSubscript | 0x2070—0x209f |
Mata uang | 0x20a0—0x20cf | CombMarkSym | 0x20d0—0x20ff |
LetterLike | 0x2100—0x214f | NumberForms | 0x2150—0x218f |
Panah | 0x2190—0x21ff | MathOps | 0x2200—0x22ff |
MiscTech | 0x2300—0x23ff | CtrlPictures | 0x2400—0x243f |
OptCharRecog | 0x2440—0x245f | EnclAlphaNum | 0x2460—x24ff |
BoxDrawing | 0x2500—0x257f | BlockElement | 0x2580—0x259f |
GeometShapes | 0x25a0—0x25ff | MiscSymbols | 0x2600—0x26ff |
Dingbats | 0x2700—0x27bf | CJKSymPunct | 0x3000—0x303f |
Hiragana | 0x3040—0x309f | Katakana | 0x30a0—0x30ff |
Bopomofo | 0x3100—0x312f | HangulJamo | 0x3130—0x318f |
CJLMisc | 0x3190—0x319f | EnclCJK | 0x3200—0x32ff |
CJKCompatibl | 0x3300—0x33ff | Han | 0x3400—0xabff |
Hangul | 0xac00—0xd7ff | UTF16Lead | 0xd800—0xdbff |
UTF16Trail | 0xdc00—0xdfff | PrivateUse | 0xe000—0xf800 |
CJKCompIdeog | 0xf900—0xfaff | AlphaPres | 0xfb00—0xfb4f |
ArabicPresA | 0xfb50—0xfdff | CombHalfMark | 0xfe20—0xfe2f |
CJKCompForm | 0xfe30—0xfe4f | SmallFormVar | 0xfe50—0xfe6f |
ArabicPresB | 0xfe70—0xfefe | HalfFullForm | 0xff00—0xffef |
Spesial | 0xfff0—0xfffd |