Skip to content

[Bug]: zh-CN UI renders some Han characters with Japanese/Korean glyph forms (bundled Noto Sans SC not used) #1095

Closed

Description

@Jursin

What happened?

When the UI language is set to "Simplified Chinese", a few Chinese characters in the UI are rendered with Japanese/Korean glyphs, for example:

Location Character Screenshot
Home → drop zone 将文件拖放到这里 将 Image
General → language dropdown 跟随系统 系 Image
General → default save location 与源文件相同的文件夹 与 Image
General → 所有转换都保留原文件日期 所 Image

Investigation

ThemeService.Apply sets AppFontFamily using the return value of SoftPalette.FontFamilies(language) (src/Filee.App/Services/SoftPalette.cs:122). For zh-*, the CJK font family order is Noto Sans SC, Noto Sans KR, Noto Sans JP, and all three are embedded via FileeFontCollection (fonts:Filee → avares://Filee/Assets/Fonts, src/Filee.App/Program.cs:307).

I extracted these three font families and compared them against the glyphs mentioned above. Noto Sans JP and Noto Sans KR are the closest matches, and neither is the Simplified Chinese face.

In other words, per-character fallback on the composite FontFamily never actually lands on Noto Sans SC: in the embedded font collection, a character is resolved by the first face that contains it, and the resource enumeration order is NotoSansJP-*, NotoSansKR-*, NotoSansSC-*. So "putting the CJK face for the UI language first" has no effect on Han characters in practice — all zh-* users get Japanese glyphs.

Only a few Han characters look wrong because the vast majority of Han characters are designed identically across the three regional faces; only characters with regional differences (与, 将, 所, 系, 直, …) are visibly affected.

What did you expect?

The Simplified Chinese UI should draw Han characters with Simplified Chinese glyphs, i.e. Noto Sans SC (falling back to Microsoft YaHei when the embedded font is unavailable), while Latin text should still use Noto Sans.

Steps to reproduce

  1. Set the application UI language to "Simplified Chinese".
  2. Open the main window's Home page, General page, and other pages.
  3. Observe 将文件拖放到这里 on the Home page, then 跟随系统, 与源文件相同的文件夹, and 所有转换都保留原文件日期 on the General page.

Files involved

No response

Filee version

2.3.0

Operating system

Windows 11 26H2

Engines page status

No response

Log


Activity

  1. added a commit that references this issue on Nov 4, 2026
    c1aa471
  2. KnifeLemon commented on Nov 4, 2026

    @KnifeLemon
    Owner

    Thanks for the detailed trace, it pointed at the right place. Filee's font list was in the right order, but Avalonia's embedded font collection answers with the first of its own families that has a character, before the list's next font is tried. That was Noto Sans JP in every language, up to the first character it doesn't have, which is why 跟随系 looked wrong and 统 didn't.

    #1121 makes each embedded font match only itself, so the list's order decides: Simplified Chinese gets Noto Sans SC, Japanese Noto Sans JP, Korean Noto Sans KR, and Traditional Chinese the system's Traditional font. Latin text stays in Noto Sans.


    感谢你的详细分析,它指出了正确的位置。Filee 的字体列表顺序是对的,但 Avalonia 的内嵌字体集合会先在自己的字体里找第一个包含该字符的字体,还没轮到列表中的下一个字体就返回了。结果所有语言都用 Noto Sans JP,直到遇到它没有的字符,所以 跟随系 字形不对,而 统 是正常的。

    #1121 让每个内嵌字体只匹配它自己,由列表顺序决定:简体中文用 Noto Sans SC,日语用 Noto Sans JP,韩语用 Noto Sans KR,繁体中文用系统的繁体字体。拉丁文字仍然使用 Noto Sans。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions