如何在 Rich Edit 控制件中使用字型系結

Microsoft Rich Edit 3.0 會根據其內容,將字元集指派給純文本字元。 一些範例包括:

  • 會GREEK_CHARSET指派希臘文字符。
  • 韓文符號會指派 HANGUL_CHARSET
  • 如果在附近找到假名字符,則會指派 漢字SHIFTJIS_CHARSET ,如果 附近找不到假名,則GB2312_CHARSET
  • 在任何事件中,非中性 ANSI 字元會指派 ANSI_CHARSET

注意

豐富的編輯控制件會在內部使用 Unicode,因此此字元集的使用與字型規格中使用的原始字元集不同。 但是 CHARFORMAT 結構具有定義完善的字元集位置。

 

空白和數位等中性字元會根據其內容指派字元集。 例如,以相同字元集字元括住的空白會取得該字元集。 用於雙向文字的中性與數位會以 Unicode 雙向演算法為基礎的方式來指派字元集。

您需要知道的事項

技術

必要條件

  • C/C++
  • Windows 使用者介面程序設計

指示

在 Rich Edit 控制件中使用字型系結

指派字元集之後,Rich Edit 會向前和向後掃描插入點周圍的文字,以尋找已用於字元集的最接近字型。 如果找不到字元集的字型,Rich Edit 會使用用戶端為該字元集選擇的字型。 如果用戶端尚未指定字元集的字型,Rich Edit 會使用該字元集的預設字型。 如果用戶端想要其他一些字型,用戶端一律可以變更它,但這種方法大部分時間都會運作。 目前的預設字型選擇是以下表為基礎。 請注意,預設字型會依進程設定,而且UI使用量和非UI使用方式有個別的清單。

語言 UI 字型名稱 UI 字型大小 非UI字型名稱 非 UI 字型大小
西方、CE、ME、越南文 塔霍馬文 8 Arial 10
日文 MS UI 哥特式 9 MS P 哥特式 10
韓文 古利姆 9 古利姆 9
簡體中文 Simsun 9 SimSun 10
繁體中文 PMingLiU 9 PMingLiU 9
泰文 MS Sans Serif 8 塔霍馬文 14
符號 Wingdings 8 Wingdings 10
梵文字母 8 10
坦米爾文 拉塔 8 拉塔 10
喬治亞文、亞美尼亞文 Arial Unicode 8 Arial Unicode 10

 

因此,在預設字型系結數據表中(專案具有字元集、字型名稱和大小),Rich Edit 允許ANSI_CHARSET比對數個字元集,而適當的字元集會以一對一的方式比對其他字型。 更精確地說,只要找不到其他替代方案,豐富編輯就會使用ANSI_CHARSET選擇。 您將能夠指定比這個更精細的數據粒度;例如,為阿拉伯文執行指派特定的ARABIC_CHARSET、希臘文執行的特定希臘字型等等。 如果在檔內找到具有所需字元集戳記的字型,在字型系結的區域之前,也會使用這個更精細的數據粒度。

請注意,Rich Edit 目前不會在宣告支援字元集但不完整的字型中處理遺漏的字元。 在複雜的腳本中顯示時,Rich Edit 最終會知道缺少這類字元,但不會讓支援存放區使用新的字型。 一般而言,操作系統的基礎字型連結會達成此目的。

備註

Rich Edit 4.1:若要設定腳本的預設字型,請使用 CHARFORMAT2 呼叫 EM_SETCHARFORMAT,並指定 yHeight、bCharSetbPitchAndFamilyszFaceNamelcid 成員的值。 此外,若要取得特定代碼頁的預設字型,請使用 CHARFORMAT2 呼叫EM_GETCHARFORMAT,並指定 bCharSetlcid 成員的值。

使用 Rich Edit 控制件

Windows 通用控件示範 (CppWindowsCommonControls)