關於文字物件模型
文字物件模型 (TOM) 定義一組文字操作介面,這些介面受到數個 Microsoft 文字解決方案的不同程度支援,包括豐富的編輯控件。 本主題提供 TOM 的高階概觀。 它會討論下列主題。
TOM 第 2 版物件
TOM 第 2 版 (TOM 2) 延伸原始文字物件模型:新的介面衍生自舊介面。 更新的 TOM API 包含對新字元和段落格式屬性的支持、數據表模型、多重選取範圍,以及數學和 Ruby 的內嵌物件支援。
最上層 TOM 2 物件是由 ITextDocument2 介面所定義,其具有建立和擷取物件階層中較低物件的方法。 針對簡單的純文本處理,您可以從 ITextDocument2 物件取得 ITextRange2 物件,並執行大部分動作。 如果您需要新增 RTF 格式設定,您可以從 ITextRange2 物件取得 ITextFont2 和 ITextPara2 物件。 ITextFont2 提供 Microsoft Word 格式字型對話框的程式設計對等專案,而 ITextPara2 則提供對等的 Word 格式段落對話框。
除了這三個較低層級的物件之外,TOM 2 還有一個選取物件 (ITextSelection2),這是具有選取醒目提示的 ITextRange2 物件,以及一些 UI 導向的方法。
範圍和選取物件包括螢幕導向方法,可讓程式檢查螢幕上可捲動的文字或可捲動到畫面上的文字。 例如,這些功能有助於讓視力受損的人能夠存取文字。
每個具有 2 後綴的介面都會繼承自對應的介面,而沒有 2 個後綴。 例如,ITextDocument2 繼承自 ITextDocument。
TOM 2 物件具有下列階層。
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
ITextDocument2 物件描述一或多個連續的文字範圍,稱為 storys。 劇本代表檔的各個部分,例如檔的主文字、頁首和頁尾、腳注、批注和 RTF 臨時板。 在線性格式化數學表達式與內建窗體之間翻譯時,會使用臨時板本文。 儲存即將變更內容時,也會使用臨時板本文來儲存目前複製來源的範圍內容。
ITextRange2 物件是由它的開始和結束字元位置位移和本文物件所定義。 雖然其文字可以複製到剪貼簿或其他目標,但它並不存在與其父本文對象無關。 文字範圍對象與電子表格和其他範圍物件不同,這些物件是由其他類型的位移所定義;例如,數據列/數據行或圖形位置(x,y)。 文字範圍物件可以透過各種方式修改自己、可以傳回本身的複本,而且可以命令複製其開始和結束字元位置,以及其本文指標至目前的選取範圍。
不需要明確的本文對象,因為 一律可以建立 ITextRange 對象來代表任何指定的本文。 特別是,ITextDocument 物件可以建立 ITextStoryRanges 物件,以範圍來列舉檔中的故事,其開頭和結尾字元位置值會描述完整劇本(例如,0 和 tomForward)。
使用 ITextStoryRanges2 物件時,不需要明確的故事對象,因為每個本文都是由 ITextRange2 物件描述。 特別是,ITextDocument2 物件可以建立 ITextStoryRanges2 物件,以範圍來列舉檔中的故事,其開頭和結尾字元位置值會描述完整劇本(例如,0 和 tomForward)。
ITextRow 介面與 ITextRange::Move 和 ITextRange::Expand 方法一起提供插入、查詢和變更數據表的功能。
TOM 介面慣例
所有 TOM 方法都會傳回 HRESULT 值。 一般而言,TOM 方法會傳回下列標準值。
- E_OUTOFMEMORY
- E_INVALIDARG
- E_NOTIMPL
- E_FILENOTFOUND
- E_ACCESSDENIED
- E_FAIL
- CO_E_RELEASED
- NOERROR (與S_OK相同)
- S_FALSE
請注意,如果刪除與 ITextRange 之類的 TOM 對象相關聯的編輯實例,TOM 物件就會變成無用的,而且其所有方法都會傳回CO_E_RELEASED。
除了 HRESULT 傳回值之外,許多方法都包含 out 參數,這些參數是用來傳回值的指標。 針對所有介面,您應該檢查所有指標參數,以確保它們在使用之前是非零的。 如果您將 null 值傳遞至需要有效指標的方法,此方法會傳回E_INVALIDARG。 忽略具有 Null 值的選擇性 out 指標。
使用方法搭配 Get 和 Set 前置詞來取得和設定屬性。 布爾值變數使用 tomFalse (0) 表示 FALSE,而 tomTrue (-1) 則為 TRUE。
TOM 常數定義在 tomConstants 列舉類型中,並以 tom 前置詞開頭,例如 tomWord。
tomBool 類型
許多 TOM 方法會針對具有二進位狀態的 RTF 屬性使用稱為 「tomBool」 的特殊變數類型。 tomBool 類型與布爾類型不同,因為它可能需要四個值:tomTrue、tomFalse、tomToggle 和 tomUndefined。 tomTrue 和 tomFalse 值表示 true 和 false。 tomToggle 值可用來切換屬性。 tomUndefined 值,較傳統稱為 NINCH,是一個特殊的無輸入、無變更值,適用於 longs、floats 和 COLORREFs。 對於字串, tomUndefined (或 NINCH) 是由 Null 字串表示。 對於屬性設定作業,使用 tomUndefined 並不會變更目標屬性。 對於屬性取得作業, tomUndefined 表示範圍中的字元有不同的值(它會在屬性對話框中提供灰色複選框)。
數學建置和建置
您可以使用 ITextRange2::BuildUpMath 方法,將線性格式化的數學表達式轉換成內建版本。 ITextRange2::Linearize 方法會執行相反的轉換,稱為線性化或向下建置,以將數學表達式的內建版本轉換為線性格式。 當您需要匯出純文本或啟用特定類型的編輯時,數學建置功能很有用。
TOM RTF
在 TOM 中,RTF 可以透過一組明確的方法呼叫或 RTF 中的 RTF 傳輸 RTF 來完成 RT-Text 交換。 本節提供段落屬性和字元屬性的 RTF 控制件字表。
TOM RTF 段落控制字組
控制字組 | 意義 |
---|---|
\ fi n | 第一行縮排(預設值為零)。 |
\保持 | 保留段落不變。 |
\ keepn | 請保留下一個段落。 |
\ li n | 左縮排(預設值為零)。 |
\ noline | 沒有行號。 |
\ nowidctlpar | 關閉寡婦/孤兒控制。 |
\ pagebb | 段落前的分頁。 |
\ par | 新段落。 |
\ pard | 重設為預設段落屬性。 |
\Ql | 靠左對齊(預設值)。 |
\Qr | 靠右對齊。 |
\ qj | 合理。 |
\Qc | 中心。 |
\ ri n | 右縮排(預設值為零)。 |
\ s n | 樣式 n. |
\ sa n | 之後的空間(預設值為零)。 |
\ sb n | 之前的空間(預設值為零)。 |
\ sl n | 如果遺漏或如果 n=1000,則行距是由行中最高的字元決定(單行間距):如果為 n 零,則至少使用這個大小;如果 n> 為<零,則完全 |n| 已使用。 如果 \ slmult 1 接著,行距是多行間距。 |
\ slmult m | 遵循 \ sl。 m = 零:至少或完全行距,如 \ sl n 所述。 m = 1:行距 = n/240 倍單行間距。 |
\ tb n | 左邊界的直方圖索引標籤位置,以 twip 為單位。 |
\ tldot | 索引標籤前置點。 |
\ tleq | 索引標籤領導者等號。 |
\ tlhyph | 索引標籤領導者連字元。 |
\ tlth | 索引標籤前置粗線。 |
\ tlul | 索引標籤前導符底線。 |
\Tqc | 置中索引標籤。 |
\ tqdec | 十進位索引標籤。 |
\ tqr | [排清右] 索引標籤。 |
\ tx n | 左邊界的定位點位置,以 Twip 為單位。 |
TOM RTF 字元格式控制字組
控制字組 | 意義 |
---|---|
\ animation n | 將動畫類型設定為 n。 |
\b | 粗體。 |
\帽 | 所有大寫。 |
\ cf n | 前景色彩(預設值為 tomAutocolor)。 |
\ cs n | 字元樣式 n. |
\ dn n | 下標位置以半點為單位(預設值為 6)。 |
\ embo | 浮雕。 |
\ f n | 字型大小, n 是指字型表格中的專案。 |
\ fs n | 字型大小以半點為單位(預設值為24)。 |
\ highlight n | 背景色彩(預設值為 tomAutocolor)。 |
\我 | 斜體。 |
\ impr | 印記。 |
\ lang n | 將語言套用至字元。 n 是對應至語言的數位。 \ 純控件字會將語言屬性重設為文件屬性中 \ deflang n 所定義的語言。 |
\ nosupersub | 關閉上標或下標。 |
\ outl | 大綱。 |
\平原 | 將字元格式設定屬性重設為應用程式所定義的預設值。 相關聯的字元格式設定屬性(如 RTF 規格中的關聯字元屬性一節所述)也會重設。 |
\ scaps | 小資本。 |
\ shad | 陰影。 |
\罷工 | Strikethrough. |
\子 | 會根據字型資訊,套用文字的下標並縮減點大小。 |
\超級 | 將上標套用至文字,並根據字型信息減少點大小。 |
\Ul | 連續底線。 \ ul0 會關閉所有底線。 |
\ uld | 點線底線。 |
\ uldb | 雙底線。 |
\ ulnone | 停止所有底線。 |
\ ulw | 字底線。 |
\ up n | 上標位置以半分為單位(預設值為 6)。 |
\v | 隱藏的文字。 |
尋找 RTF
您可以使用 TOM 方法來尋找文字範圍所定義的 RTF。 在文字處理中,尋找這類 RTF 通常是必要的,雖然它從未在「你所看到的是你得到的東西」(WYSIWYG)字處理器中完成。 有一個較大的 RTF 比對領域,允許忽略某些字元格式設定屬性(或包含段落格式設定和/或物件內容),但這類一般化超出本節的範圍。
這項功能的其中一個用途是使用 RTF 尋找 對話框來定義您想要在檔案中尋找的 RTF。 對話框會使用豐富的編輯控件來實作,而 TOM 方法會用來透過文件執行搜尋。 您可以將所需的 RTF 文字從檔案複製到 [尋找] 對話框,或直接在 [尋找] 對話框中輸入並格式化它。
下列範例示範如何使用 TOM 方法來尋找包含確切字元格式組合的文字。 演算法會在比對範圍中搜尋純文字,其名稱為 pr1
。 如果找到純文本,則會以名為 pr2
的試用範圍指出。 然後,會使用兩個插入點範圍 (prip1
和 prip2
) 來逐步執行試驗範圍,並將其字元格式與的 pr1
比較。 如果它們完全相符,則會更新輸入範圍(由 ppr
指定),以指向試用範圍的文字,且函式會傳回相符範圍中的字元計數。 字元格式比較中會使用兩個 ITextFont 物件 pf1
和 pf2
。 它們會附加至插入點範圍 prip1
和 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;
}
TOM 輔助功能
TOM 透過 ITextSelection 和 ITextRange 介面提供輔助功能支援。 本節說明對輔助功能很有用的方法,以及程式如何判斷 物件的 x、 y 螢幕位置。
由於UI型輔助功能程式通常會使用螢幕和滑鼠,因此常見的考慮是尋找目前滑鼠位置的對應 ITextDocument 介面(在螢幕座標中)。 下列各節提供兩種方式來判斷適當的介面:
如需詳細資訊,請參閱 Microsoft Active Accessibility 規格。 從螢幕位置取得對象之後,您可以用於 ITextDocument 介面,並呼叫 RangeFromPoint 方法,以取得與螢幕位置相對應之 cp 的空白範圍物件。
來自執行中對象數據表的介面
執行中的物件數據表 (ROT) 會指出哪些物件實例為使用中。 藉由查詢此資料表,您可以在對象已經執行時,加速將用戶端連線到物件的程式。 在程式可以透過執行中的對象數據表存取 TOM 介面之前,具有視窗的 TOM 實例必須使用 Moniker 在 ROT 中註冊。 您可以從包含其 HWND 十六進位值的字串建構 Moniker。 下列程式代碼範例示範如何執行這項操作。
// 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
}
來自視窗訊息的介面
EM_GETOLEINTERFACE訊息提供另一種方式,以取得指定畫面位置上物件的IUnknown 介面。 如執行對象數據表的介面中所述,您會取得螢幕位置的 HWND,然後將此訊息傳送至該 HWND。 EM_GETOLEINTERFACE訊息具有豐富的編輯特定,並傳回 lParam 所尋址變數中 IRichEditOle 介面的指標。
提示 如果傳回指標(請務必在傳送訊息之前將 lParam 指向 Null 的物件設定為 Null),您可以呼叫其 IUnknown::QueryInterface 方法來取得 ITextDocument 介面。 下列程式碼範例說明此方法。
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
}
輔助功能導向方法
某些 TOM 方法特別適合在畫面上巡覽,而其他 TOM 方法可增強您在到達景點時可以執行的動作。 下表描述最有用的方法。
方法 | 其如何提升輔助功能 |
---|---|
GetSelection | 這個方法會取得可用於各種檢視導向用途的作用中選取專案,例如醒目提示文字和卷動。 |
RangeFromPoint | 在使用中選取範圍時,這個方法保證會取得與特定檢視相關聯的範圍。 |
展開 | 放大文字範圍,使其包含的任何部分單位完全包含。 例如, Expand(tomWindow) 展開範圍以包含範圍本文的可見部分。 |
GetDuplicate | 在使用中選取範圍時,這個方法保證會取得與特定檢視相關聯的範圍。 請參閱 RangeFromPoint 的描述。 |
GetPoint | 取得文字範圍中開始或結束字元位置的螢幕座標。 |
ScrollIntoView | 將文字範圍卷動到檢視中。 |
SetPoint | 選取指定點或向上的文字。 |
字元比對集
ITextRange 中各種Move* 方法的 variant 參數,例如 MoveWhile 和 MoveUntil,可以採用明確的字串或字元比對集 32 位索引。 索引是由 Unicode 範圍或 GetStringTypeEx 字元集所定義。 從 n 開始且長度為 l (<32768) 的 Unicode 範圍是由索引 n + (l< <16) + 0x80000000所指定。 例如,基本希臘文字母是由 CR_Greek = 0x805f0370 定義,可列印的 ASCII 字元是由 CR_ASCIIPrint = 0x805e0020 所定義。 此外, MoveWhile 和 MoveUntil 方法可讓您快速略過任何 GetStringTypeEx 字元集中的字元範圍,或在不在上述任何字元集中的字元範圍中。
GetStringTypeEx 集合是由 Ctype1、Ctype2 和 Ctype3 的值所指定,並定義如下。
Cset | 意義 |
---|---|
Ctype1 | CT_CTYPE1型別的組合。 |
Ctype2 + tomCType2 | 任何CT_CTYPE2類型。 |
Ctype3 + tomCType3 | CT_CTYPE3型別的組合。 |
具體來說, Ctype1 可以是下列任何組合。
Ctype1 名稱 | 值 | 意義 |
---|---|---|
C1_UPPER | 0x0001 | 大寫。 |
C1_LOWER | 0x0002 | 小寫。 |
C1_DIGIT | 0x0004 | 十進位數。 |
C1_SPACE | 0x0008 | 空格符。 |
C1_PUNCT | 0x0010 | 標點符號。 |
C1_CNTRL | 0x0020 | 控制字元。 |
C1_BLANK | 0x0040 | 空白字元。 |
C1_XDIGIT | 0x0080 | 十六進位數位。 |
C1_ALPHA | 0x0100 | 任何語言字元(字母、教學大綱或表觀)。 |
C1_DEFINED | 0x0200 | 已定義的字元,但不是另一個C1_* 類型。 |
Ctype2 類型支援 Unicode 文字的適當配置。 指派方向屬性,讓 Unicode 標準化的雙向配置演算法產生精確的結果。 這些類型互斥。 如需使用這些屬性的詳細資訊,請參閱 Unicode 標準:全球字元編碼、磁碟區 1 和 2、Addison-Wesley Publishing Company:1991、1992。
CType2 名稱 | 值 | 意義 |
---|---|---|
強式: | ||
C2_LEFTTORIGHT | 0x1 | 由左至右。 |
C2_RIGHTTOLEFT | 0x2 | 由右至左。 |
弱: | ||
C2_EUROPENUMBER | 0x3 | 歐洲數位,歐洲數位。 |
C2_EUROPESEPARATOR | 0x4 | 歐洲數值分隔符。 |
C2_EUROPETERMINATOR | 0x5 | 歐洲數值終止符。 |
C2_ARABICNUMBER | 0x6 | 阿拉伯數位。 |
C2_COMMONSEPARATOR | 0x7 | 一般數值分隔符。 |
中性: | ||
C2_BLOCKSEPARATOR | 0x8 | 區塊分隔符。 |
C2_SEGMENTSEPARATOR | 0x9 | 區段分隔符。 |
C2_WHITESPACE | 0xA | 空格符。 |
C2_OTHERNEUTRAL | 0xB | 其他中性。 |
不適用: | ||
C2_NOTAPPLICABLE | 0x0 | 沒有隱含的方向。 |
Ctype3 類型是一般文字處理或標準 C 連結庫函式所需 POSIX 類型的擴充功能佔位符。
CType3 名稱 | 值 | 意義 |
---|---|---|
C3_NONSPACING | 0x1 | 非步調標記。 |
C3_DIACRITIC | 0x2 | 變音符號非步調標記。 |
C3_VOWELMARK | 0x4 | Vowel 非步調標記。 |
C3_SYMBOL | 0x8 | 象徵。 |
C3_KATAKANA | 0x10 | 片假名字符。 |
C3_HIRAGANA | 0x20 | 平假名字符。 |
C3_HALFWIDTH | 0x40 | 半角字元。 |
C3_FULLWIDTH | 0x80 | 全角字元。 |
C3_IDEOGRAPH | 0x100 | 表像字元。 |
C3_KASHIDA | 0x200 | 阿拉伯文 Kashida 字元。 |
C3_ALPHA | 0x8000 | 所有語言字元(字母、教學大綱和表觀)。 |
C3_NOTAPPLICABLE | 0x0 | 不適用。 |
編輯開發工具套件 (EDK) 可以包含 Unicode 標準中所述下列範圍的 pVar 索引定義。
字元集 | Unicode 範圍 | 字元集 | 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 | 結合 | 0x300— 0x36f |
希臘文 | 0x370— 0x3ff | BasicGreek | 0x370— 0x3cf |
希臘文 | 0x3d0— 0x3ff | 古斯拉夫文 | 0x400— 0x4ff |
亞美尼亞文 | 0x530— 0x58f | Hebrew | 0x590— 0x5ff |
BasicHebrew | 0x5d0— 0x5ea | 希伯來文XA | 0x590— 0x5cf |
希伯來文XB | 0x5eb— 0x5ff | 阿拉伯文 | 0x600— 0x6ff |
BasicArabic | 0x600— 0x652 | ArabicX | 0x653— 0x6ff |
Devangari | 0x900— 0x97f | 班格拉(前本加利) | 0x980— 0x9ff |
果魯穆奇文 | 0xa00— 0xa7f | 古吉拉特文 | 0xa80— 0xaff |
奧迪亞(前奧里亞) | 0xb00— 0xb7f | 坦米爾文 | 0xb80— 0xbff |
Teluga | 0xc00— 0xc7f | 坎那達文 | 0xc80— 0xcff |
馬來亞拉姆文 | 0xd00— 0xd7f | 泰文 | 0xe00— 0xe7f |
寮文 | 0xe80— 0xeff | 喬治亞文X | 0x10a0— 0xa0cf |
BascGeorgian | 0x10d0— 0x10ff | Jamo | 0x1100— 0x11ff |
LatinXAdd | 0x1e00— 0x1eff | 希臘文X | 0x1f00— 0x1fff |
GenPunct | 0x2000— 0x206f | 上標 | 0x2070— 0x207f |
下標 | 0x2080— 0x208f | SuperSubscript | 0x2070— 0x209f |
貨幣 | 0x20a0— 0x20cf | CombMarkSym | 0x20d0— 0x20ff |
LetterLike | 0x2100— 0x214f | NumberForms | 0x2150— 0x218f |
箭頭 | 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 |
丁巴特 | 0x2700— 0x27bf | CJKSymPunct | 0x3000— 0x303f |
平假名 | 0x3040— 0x309f | 片假名 | 0x30a0— 0x30ff |
波波莫福 | 0x3100— 0x312f | HangulJamo | 0x3130— 0x318f |
CJLMisc | 0x3190— 0x319f | EnclCJK | 0x3200— 0x32ff |
CJKCompatibl | 0x3300— 0x33ff | 漢 | 0x3400— 0xabff |
韓文 | 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 |
特價 | 0xfff0— 0xfffd |