如何在 Rich Edit 控件中使用字体绑定
Microsoft Rich Edit 3.0 会根据上下文为纯文本字符分配一个字符集。 一些示例如:
- 希腊文字符分配为 GREEK_CHARSET。
- 韩文符号分配为 HANGUL_CHARSET。
- 如果附近找到了汉字假名,则分配 SHIFTJIS_CHARSET;如果附近未找到汉字假名,则分配 GB2312_CHARSET。
- 在任何情况下,非中性 ANSI 字符都被分配为 ANSI_CHARSET。
注意
Rich Edit 控件内部使用 Unicode,因此使用的字符集与字体规范中使用的原始字符集有所不同。 但是,CHARFORMAT 结构为字符集规定了明确的位置。
会根据中性字符(如空白和数字)的上下文来为其分配一个字符集。 例如,被同一字符集的字符包围的空白会获取该字符集。 用于双向文本的中性字符和数字是根据 Unicode 双向算法来分配字符集的。
需要了解的事项
技术
先决条件
- C/C++
- Windows 用户界面编程
说明
在 Rich Edit 控件中使用字体绑定
在分配字符集后,Rich Edit 会向前和向后扫描插入点周围的文本,以找到与字符集最接近的字体。 如果没有为某个字符集找到字体,则 Rich Edit 会使用客户端为该字符集选择的字体。 如果客户端没有为字符集指定字体,则 Rich Edit 就会使用该字符集的默认字体。 如果客户端想要其他字体,则可以随时更换,但这种方法在大多数情况下都是可行的。 当前默认字体选择基于下表。 请注意,默认字体是按进程设置的,用户界面使用和非用户界面使用都有不同的列表。
语言 | 用户界面字体名称 | 用户界面字体大小 | 非用户界面字体名称 | 非用户界面字体大小 |
---|---|---|---|---|
西方语言、CE、ME、越南语 | Tahoma | 8 | Arial | 10 |
日语 | MS UI Gothic | 9 | MS P Gothic | 10 |
韩语 | Gulim | 9 | Gulim | 9 |
简体中文 | Simsun | 9 | SimSun | 10 |
繁体中文 | PMingLiU | 9 | PMingLiU | 9 |
泰语 | MS Sans Serif | 8 | Tahoma | 14 |
符号 | Wingdings | 8 | Wingdings | 10 |
梵语 | Mangal | 8 | Mangal | 10 |
泰米尔语 | Latha | 8 | Latha | 10 |
格鲁吉亚语、亚美尼亚语 | Arial Unicode | 8 | Arial Unicode | 10 |
因此,在默认字体绑定表中(条目具有字符集、字体名称和大小),Rich Edit 允许 ANSI_CHAR标准版T 匹配多个字符集,而相应的字符集则以一对一的方式匹配其他字体。 更确切地说,只要找不到其他选择,Rich Edit 就会使用 ANSI_CHARSET。 可以指定比这更精细的粒度;例如,为阿拉伯语运行指定特定的 ARABIC_CHARSET,为希腊语运行指定特定的希腊字体等。 如果在要进行字体绑定的区域之前,在文档的某处找到了带有所需字符集标记的字体,则也会使用这种更精细的粒度。
请注意,Rich Edit 目前不处理声称支持字符集但不完整的字体中的缺失标志符号。 在复杂脚本的显示过程中,Rich Edit 最终会发现缺少这样一个标志符号,但不会导致后备存储使用新字体。 通常,操作系统的基础字体链接将完成这一操作。
注解
Rich Edit 4.1:要为脚本设置默认字体,请使用 CHARFORMAT2 调用 EM_SETCHARFORMAT 并指定 yHeight、bCharSet、bPitchAndFamily、szFaceName 和 lcid 成员的值。 此外,要获取特定代码页的默认字体,可以调用 EM_GETCHARFORMAT 和 CHARFORMAT2,并指定 bCharSet 和 lcid 成员的值。
相关主题