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

Ami*_*mit 5 .net c# unicode label winforms

我正在开发一个 Windows 窗体应用程序,以 .Net 4.5 作为目标框架。

Label我注意到的一件事是,如果我在控件上显示日语文本,而Font标签(Arial)不支持日语字符,那么也Label可以成功显示这些字符。

如果我在分配日语文本之前和之后检查标签的字体属性,它只会显示“Arial”,因此字体可能不会动态更改。

Label 具有哪些内部功能使其能够实现这一目标?

Jim*_*imi 6

关于字体回退系统功能,与国际字体管理
相关。它自动选择用户在应用程序中选择的字体以外的字体,以表示正在使用的字体无法处理的字形。 另请参阅:国际字体枚举和选择

可以在系统注册表中找到一系列预定义的字体替代品:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink
Run Code Online (Sandbox Code Playgroud)

RichTextBox/RichEdit此处报告了与控件相关的示例和一些注释:
某些键更改了我的 RichTextBox 字体

RichTextBox控件是在EM_SETLANGOPTIONS设置为IMF_AUTOFONT选项的情况下创建的。
预定义的行为,当当前字体无法显示 Unicode 子集时,它是自动字体回退。文本选择报告字体替代参考。

当默认映射不返回直接匹配时,可以使用Unicode 子集位字段选择字体替代。

任何字体替换都与当前系统语言和可用的已安装字体有关。系统安装了许多字体来支持此功能。后备字体通常在系统字体存储库(在 Windows 中)中标记为“隐藏” \Windows\Fonts。可以使用工具栏按钮或上下文菜单中的命令将它们标记为可用/可枚举Show
Arial Unicode其中之一)。

也可以看看:

国际字体和文本显示关于使用字体后备Uniscribe 的
多语言用户界面