Bagikan melalui


Unit teks Automation UI

Topik ini menjelaskan unit teks yang didukung oleh pola kontrol TextRange Automation UI Microsoft. Penyedia dan klien Automation UI menggunakan unit teks untuk menentukan jumlah untuk memindahkan atau mengubah ukuran rentang teks.

Elemen API unit teks

API Automasi UI mencakup metode berikut yang mengharuskan unit teks ditentukan:

Enumerasi TextUnit menentukan unit teks yang didukung oleh rentang teks Automation UI. Untuk menentukan unit teks, anggota enumerasi TextUnit ditentukan dalam panggilan ke metode ITextRangeProvider atau IUIAutomationTextRange. Unit teks, dari terkecil hingga terbesar, adalah sebagai berikut:

Jika kontrol berbasis teks tertentu tidak mendukung unit teks yang ditentukan, penyedia harus merespons dengan mengganti unit teks yang lebih besar berikutnya yang didukung oleh kontrol. Misalnya, jika TextUnit_Paragraph ditentukan tetapi tidak didukung, metode dapat menggantikan TextUnit_Page atau TextUnit_Document.

Karakteristik linguistik teks sumber dapat menyulitkan penyedia untuk menentukan batas teks berdasarkan unit teks yang ditentukan. Untuk bantuan dalam menentukan batas teks, penyedia dapat menggunakan fungsi API Uniscribe seperti ScriptBreak. Untuk informasi selengkapnya, lihat Uniscribe di situs web MSDN.

Inklusivitas titik akhir

Titik akhir unit teks dapat berfungsi sebagai titik akhir Mulai dan titik akhir Akhir untuk rentang teks yang berdekatan dengan jenis yang sama. Jika akhir satu unit teks juga merupakan awal unit teks lain, rentang yang berisi titik akhir Akhir tidak berbagi atribut atau objek apa pun dari rentang yang berdekatan yang berisi titik akhir Mulai .

Misalnya, aliran teks, "Halo dunia", berisi dua unit kata dengan atribut bobot font yang berbeda (normal dan tebal). Dalam hal ini, titik akhir akhir unit kata "Hello" dan titik akhir Mulai unit kata "world" sama, yang menghasilkan hal berikut:

  • Rentang "Hello" tidak berbagi atribut tebal dari unit kata "world" dan tidak mengembalikan nilai atribut campuran untuk atribut teks bobot font.
  • Rentang "dunia" memiliki bobot font tunggal (tebal), dan tidak berbagi bobot font unit kata sebelumnya "Hello".

Berikut adalah contoh lain di mana aliran teks berisi dua unit kata, salah satunya adalah tautan: [Foo]() Bar. Dalam hal ini, titik akhir akhir unit [Foo]() kata dan titik akhir Mulai unit kata "Bilah" sama, yang menghasilkan hal berikut:

  • Tautan milik rentang teks yang berisi "Foo".
  • Tautan adalah anak dari rentang teks "Foo", dan diapit oleh ITextProvider.
  • Rentang teks "Bar" tidak memiliki anak dan diapit oleh ITextProvider.

Catatan tambahan:

Rentang degenerasi (kosong) pada batas unit teks dengan rentang teks dengan jenis yang sama mengasumsikan properti unit teks yang segera berdekatan.

Memanggil IUIAutomationTextRange::ExpandToEnclosingUnit pada rentang degenerasi pada batas unit teks dengan rentang teks dengan jenis yang sama, memperluas rentang degenerasi ke unit teks berikut.

Deskripsi Unit Teks

Bagian ini menjelaskan setiap unit teks yang didukung oleh Automation UI.

karakter

TextUnit_Character adalah unit linguistik teks yang mewakili satu karakter. Definisi linguistik karakter bervariasi menurut bahasa. Untuk bahasa Inggris AS, karakter biasanya dibatasi oleh spasi atau karakter lain, seperti tanda baca, angka, atau huruf.

Karakter kontrol seperti pengembalian gerbong dan tanda kiri-ke-kanan (LTM) Unicode tidak boleh dianggap sebagai karakter, tetapi dapat disertakan dalam rentang teks yang dinormalisasi berdasarkan unit teks karakter.

Tanda baca dan karakter pemisah kata seperti spasi harus dianggap sebagai karakter.

Format

TextUnit_Format digunakan untuk memosisikan batas rentang teks berdasarkan atribut pemformatan teks. Misalnya, jika rentang teks saat ini diposisikan pada satu karakter kata, menentukan TextUnit_Format dalam panggilan ke IUIAutomationTextRange::ExpandToEnclosingUnit memperluas rentang teks untuk menyertakan semua teks yang berbagi semua atribut yang sama dengan karakter tunggal. Rentang teks yang dihasilkan mungkin atau mungkin tidak menyertakan seluruh kata. Selain itu, menggunakan unit teks format tidak akan memperluas rentang teks di seluruh batas objek yang disematkan seperti gambar atau hyperlink.

Tidak seperti unit teks lainnya, yang mencakup unit teks yang lebih kecil dari mereka sendiri, TextUnit_Format bisa lebih kecil atau lebih besar dari unit lainnya. Misalnya, jika seluruh dokumen berbagi atribut teks yang sama dan tidak berisi objek yang disematkan, memperluas rentang teks menurut TextUnit_Format akan membuat rentang baru yang mencakup seluruh dokumen, sambil memperluas rentang teks menurut TextUnit_Word akan membuat rentang yang lebih kecil.

Word

TextUnit_Word adalah unit linguistik teks yang mewakili satu kata utuh. Definisi linguistik kata bervariasi menurut bahasa. Untuk bahasa Inggris AS, kata-kata biasanya dibatasi oleh spasi atau karakter tanda baca.

Saat TextUnit_Word digunakan untuk mengatur batas rentang teks, rentang teks yang dihasilkan harus menyertakan karakter pemisah kata apa pun yang ada di akhir kata, tetapi sebelum awal kata berikutnya.

Garis

TextUnit_Line adalah unit teks yang mewakili satu baris teks seperti yang disajikan dalam viewport kontrol. Saat menggunakan TextUnit_Line untuk mengatur batas rentang teks, penyedia harus mengatur batas segera setelah titik di mana karakter kontrol merusak garis, atau di mana viewport kontrol membungkus teks ke baris baru. Batas harus diatur di mana baris baru dimulai.

Paragraph

TextUnit_Paragraph adalah unit linguistik teks yang mewakili paragraf lengkap. Paragraf harus dimulai tepat sebelum karakter pertama paragraf dan biasanya harus berakhir tepat setelah karakter terakhir. Setiap baris kosong yang mengikuti paragraf harus digabungkan ke dalam paragraf, kecuali ada sesuatu di sumber teks yang menunjukkan sebaliknya. Biasanya, batas akhir paragraf juga menandai batas akhir unit teks TextUnit_Line .

Halaman

TextUnit_Page mewakili halaman teks lengkap dokumen. Batas halaman harus diatur di titik-titik langsung di mana halaman dimulai dan berakhir.

Dokumen

TextUnit_Document mewakili seluruh konten dokumen sebagaimana didukung oleh pola Kontrol teks. Teks tidak boleh ada di luar rentang teks yang berisi dokumen. Objek apa pun yang disisipkan ke dalam dokumen, seperti catatan anotasi yang melewati batas halaman, harus diperlakukan sebagai objek dokumen yang disematkan dan bukan bagian dari konten teks dokumen.

Rentang Potensial Lainnya

Spesifikasi pola kontrol TextRange saat ini tidak memungkinkan nilai unit teks baru ditambahkan ke enumerasi TextUnit, juga tidak memungkinkan nilai unit teks yang ada untuk didefinisikan ulang. Untuk mengekspos rentang potensial lainnya, seperti header dan anotasi, penyedia harus mengekspos rentang ini sebagai objek yang disematkan dengan rentang teks terkait. Dengan begitu, Anda juga dapat menambahkan dukungan untuk pola kontrol yang sesuai. Solusi ini lebih fleksibel dan dapat diperluas daripada menentukan unit teks baru.

Referensi

TextPatternRangeEndpoint

ITextRangeProvider::GetChildren

Konseptual

Dukungan Automasi UI untuk Konten Tekstual

Bekerja dengan Kontrol berbasis Teks