winforms 当使用的字体不支持日语时,Label控件如何正确显示日语字符?

wkftcu5l  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(139)

我正在开发一个Windows窗体应用程序,以.Net 4.5作为目标框架。
我注意到一件事,如果我在Label控件上显示日语文本,而标签(Arial)的Font不支持日语字符,那么Label也可以成功显示这些字符。
如果我在给标签分配日文文本之前和之后检查标签的字体属性,它只显示“Arial”,所以字体可能不会动态变化。
Label有什么内部功能使其能够实现这一点?

dldeef67

dldeef671#

关于字体回退

系统功能,绑定到International Font Management。它自动选择除用户在应用程序中选择的字体以外的字体,以表示正在使用的字体无法处理的字形。
标签:International Font Enumeration and Selection
可以在系统注册表中找到预定义字体替代选项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink

字符串
此处报告了与RichTextBox/RichEdit控制相关的示例和一些注意事项:
某些键更改RichTextBox字体
RichTextBox控件是通过将EM_SETLANGOPTIONS设置为IMF_AUTOFONT选项创建的。
预定义的行为,当当前字体无法显示Unicode子集时,它是自动字体回退。文本选择报告字体替换引用。
当默认Map不返回直接匹配时,可以使用Unicode Subset Bitfields选择字体替代。
任何字体替换都与当前系统语言和可用的已安装字体有关。系统会安装许多字体来支持此功能。后备字体通常在系统字体库中标记为“隐藏”(Windows中为\Windows\Fonts)。可以使用工具栏按钮或上下文菜单中的Show命令将它们标记为可用/可枚举。
Arial Unicode就在其中)。
参见:
International Fonts and Text Display
About Multilingual User Interface
Using Font Fallback字符串
Uniscribe

相关问题