代码之家  ›  专栏  ›  技术社区  ›  Amit

当标签的字体不支持日文字符时,标签控件如何正确显示日文字符?

  •  2
  • Amit  · 技术社区  · 8 年前

    我正在使用.Net 4.5目标框架开发winform应用程序。

    我注意到一件事,如果我在 Label 控制时 Font of label(Arial)也不支持日文字符 标签 可以成功显示这些字符。

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

    什么样的内部功能标签使它能够实现这一点?

    1 回复  |  直到 8 年前
        1
  •  3
  •   Jimi    7 年前

    关于字体回退。
    系统功能,绑定到 International Font Management . 它自动选择应用程序中用户选择的字体以外的字体,以表示正在使用的字体无法处理的字形。
    另见: International Font Enumeration and Selection

    可以在系统注册表中找到预定义的字体替换:

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

    一个例子和一些注释,关于 RichTextBox/RichEdit 控件,报告如下:
    Some keys change my RichTextBox font

    控件是用 EM_SETLANGOPTIONS 设置为 IMF_AUTOFONT 选择。
    预定义的行为是,当当前字体无法显示Unicode子集时,它是自动字体回退。文本选择将报告字体替换引用。

    可以使用 Unicode Subset Bitfields 当默认映射不返回直接匹配时。

    任何字体补充都与当前系统语言和可用的已安装字体相关。系统专门安装了许多字体来支持此功能。回退字体通常在系统字体库中标记为“隐藏”( \Windows\Fonts 在Windows中)。可以使用 Show 工具栏按钮或上下文菜单中的命令。
    ( Arial Unicode 是其中之一)。

    另见:

    International Fonts and Text Display
    About Multilingual User Interface
    Using Font Fallback
    Uniscribe