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

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:

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