Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactoring: font list adjustment #301

Open
wants to merge 6 commits into
base: develop
Choose a base branch
from

Conversation

hafterain
Copy link
Contributor

@hafterain hafterain commented Feb 12, 2025

(相对commit message,此处增加了更详细的内容并修复了原描述中的错误,请以此为准)

优化和精简字体设置。

  • 注释文本:移除无用描述。
  • CJK大字符集:精简一般不会装的字体,优先使用操作系统字体。
    • HYZhongHei、HYZhongHeiTi-ExtBCDEFG未公开发布,故移除。
    • SimSun-ExtB、SimSun-ExtG已覆盖B、C、D、E、F、G、H、I几个扩展区且随所有版本Windows 11分发,因此移除字形偏丑的MingLiU。
    • BabelStone项目将从BabelStone版本17开始分为三个独立文件BabelStone Han BMP、BabelStone Han SIP、BabelStone Han TIP,加入这些为未来做准备。BabelStone Han出于兼容原因保留。
    • 互联网上一部分文章仍推荐使用者安装花园明朝字云,出于热门度和兼容原因保留。因此二者为计算机生成的字体,质量偏低,因此移至回退列表最后。
  • 回退:去除微软正黑体,质量低劣。
  • 英文:去除过时、质量低下、无法直接调用的字体,微调字体顺序。
  • 简体中文:移除手机常用字体,调整字体回退顺序。
    • HarmonyOS Sans、MiSans、MILan Pro VF实际在大部分终端用户的计算机上上装机量较少,且国产Android设备的浏览器 / WebView组件一般直接无视font-family比较有自己的想法),或者本身内置字体就少得可怜,因此也无需为它们准备回退。
    • 都macOS 15.3.1了,苹方还是不给非Safari浏览器开放其可变 / 完整字重,因此将思源调整至最前——这实际是“双赢”选择,没装思源及iOS用户该用苹方还是用苹方。
  • 台湾繁体中文:移除手机常用字体,调整字体回退顺序,移除日标冬青。
    • 日标字还是传统印刷风格,和台标冬青的“楷化印刷体”风格不搭,改为直接回退到字符集较大的国标。
  • 香港繁体中文:移除手机常用字体,调整字体回退顺序,添加一个字重较多的日标冬青(Hiragino Sans,9字重)。
  • 日语:添加一个字重较多的日标冬青(Hiragino Sans,9字重),移除所有中文冬青,移除MS Gothic。
    • 对于未安装日标冬青但安装了中文冬青的用户,原回退顺序将使它们显示中文风格的汉字,这对日语用户有些奇怪。
    • MS Gothic从时代(和技术)上讲和SimHei / SimSun差不多,都是老掉牙的字体。而且点阵字级范围比SimSun都大,实在没必要保留。
  • 徽标:去除无法直接调用的SF Pro Display。
  • 等宽:去除过时、质量低下、无法直接调用的字体。
    • Monaco十分老旧且且只有一个字重;Cousine实属丑陋;Segoe UI Mono、SF Mono无法直接调用。因此移除四者。

优化和精简字体设置。

- 注释文本:调整模糊不清(如拿操作系统指代字体)或错误的描述(如“Roboto Flex”和“可变Roboto”的混淆)。
- CJK大字符集:精简一般不会装的字体,优先使用操作系统字体。
    - SimSun-ExtB、SimSun-ExtG已覆盖B、C、D、E、F、G、H、I几个扩展区且随所有版本Windows分发,因此移除字形偏丑的MingLiU。
    - BabelStone项目将从BabelStone版本17开始分为三个独立文件BabelStone Han BMP、BabelStone Han SIP、BabelStone Han TIP,加入这些为未来做准备。BabelStone Han出于兼容原因保留。
    - 互联网上一部分文章仍推荐使用者安装花园明朝或字云,出于热门度和兼容原因保留。
- 回退:去除微软正黑体,质量低劣。
- 英文:去除过时、质量低下、无法直接调用的字体,微调字体顺序。
    - SF Pro无法直接调用;Oxygen老掉牙(KDE 4时代的东西)字重还不够;Cantarell即将被GNOME项目淘汰,由一Inter变体(Adwaita Sans,实际就Inter开了`ss05`)取代;Ubuntu字面太小,和中文混排效果太差。因此移除三者。
    - Fira Sans实际已停止更新,其LGC部分的bug(见其项目issues页面)再也不会得到修复,因此调整其回退顺序至Noto Sans之后。
- 简体中文:移除手机常用字体,调整字体回退顺序。
    - HarmonyOS Sans、MiSans、MILan Pro VF实际在大部分终端用户的计算机上上装机量较少,且国产Android设备的浏览器 / WebView一般直接无视CSS中的`font-family`(比较有自己的想法),因此也无需为它们准备回退。
    - 都macOS 15.3.1了,苹方还是不给非Safari浏览器开放其可变字重,因此将思源调整至最前——这实际是“双赢”选择,没装思源及iOS用户该用苹方还是用苹方。
- 台湾繁体中文:移除手机常用字体,调整字体回退顺序,移除日标冬青。
    - 日标字还是传统印刷风格,和台标冬青的“楷化印刷体”风格不搭,改为直接回退到字符集较大的国标。
- 香港繁体中文:移除手机常用字体,调整字体回退顺序,添加一个字重较多的日标冬青(Hiragino Sans,iOS / macOS设备可用,9字重)。
- 日语:添加一个字重较多的日标冬青(Hiragino Sans,iOS / macOS设备可用,9字重),移除所有中文冬青,移除MS Gothic。
    - 对于未安装日标冬青但安装了中文冬青的用户,原回退顺序将使它们显示中文风格的汉字,这对日语用户有些奇怪。
    - MS Gothic和SimHei / SimSun差不多都是老掉牙的字体,而且点阵字级范围比SimSun都大,实在没必要保留。
- 徽标:去除无法直接调用的SF Pro。
- 等宽:去除过时、质量低下、无法直接调用的字体。
    - Monaco十分老旧且且只有一个字重;Cousine实属丑陋;Segoe UI Mono、SF Mono无法直接调用。因此移除三者。
@Aira-Sakuranomiya
Copy link
Member

有个小问题想问下:就是Noto Sans CJK SC作为中文显示之后总觉得文字靠下了,这个是什么情况以及是否有比较好的优化方式?

image image

Copy link
Member

@otomad otomad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

思源黑体我感觉太丑了,看起来感觉甚至还不如微软雅黑(堕朱砂),不如提前苹方。反正至少在陆标下我不喜欢思源黑体。

/// 英语字体:Apple OS Safari/Firefox、macOS Chromium、Inter 可变字体、Apple OS 可变字体但不完全可变(仅有小文本)、Windows 可变字体但不完全可变(仅有中文本)、Windows 普通字体、Android/Chrome OS 可变字体、Android/Chrome OS 普通字体、Android/Chrome OS 没豆腐字体、KDE、Firefox OS、Ubuntu、GNOME。\
/// CJK 大字符集字体。
$pan-unicode-fonts: "MiSans L3", SimSun-ExtB, SimSun-ExtG, "BabelStone Han", "BabelStone Han BMP", "BabelStone Han SIP", "BabelStone Han TIP", HanaMinA, HanaMinB, Jigmo, Jigmo2, Jigmo3;
/// 回退字体顺序:英语字体、CJK 字体、无衬线体通用字体族、表情符号字体、CJK 大字符集字体。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

“表情符号”建议改成“绘文字”。

不要受国内该死的译名影响,我很讨厌目前不协调的“绘文字”和“颜文字”译名。

表情符号对应 emoticon,相当于 QQ 等各平台自定义的表情,一般为图片格式。

绘文字对应 emoji,专指 Unicode 中统一定义的符号表情,是纯文本格式。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

好,这个我改回去。

/// 回退字体顺序:英语字体、中/日/韩字体、微软正黑(为日/韩扩充中文字形)、无衬线体通用字体族、绘文字字体、泛统一码字体。
$fallback-fonts: "Microsoft JhengHei", sans-serif, $emoji-fonts, $pan-unicode-fonts;
/// 英语字体:Apple OS Safari/Firefox、macOS Chromium、Inter 可变字体、Apple OS 可变字体但不完全可变(仅有小文本)、Windows 可变字体但不完全可变(仅有中文本)、Windows 普通字体、Android/Chrome OS 可变字体、Android/Chrome OS 普通字体、Android/Chrome OS 没豆腐字体、KDE、Firefox OS、Ubuntu、GNOME。\
/// CJK 大字符集字体。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

我最早的设想是可以泛统一码字符全部显示出来,而不是只支持中日韩。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

实际旧情况也大部分是CJK,如果要比较广泛的泛统一码我认为可能只能加上Unifont和Unifont Upper。

/// 优先使用“冬青黑体”系列字体,以提供一致的体验。如果用户安装了“冬青黑体”中文字体,则会避免回退到非“冬青黑体”系列字体而破坏一致性的观感。\
/// 由于冬青黑体采用喇叭口、方形逗号等,与项目风格理念不合,故采用思源黑体优先。如未安装思源黑体则会显示为冬青黑体。\
/// 注意:我们听说在远东地区,当那里的人们在 Windows Vista / 7 中使用 Windows 经典主题时,默认字体会显示为如此古老而又复古的光栅字体宋体或明体,这简直糟透了。噢天呐,看在上帝的份上,千万不要使用 system-ui 通用字体族,否则整个界面就会变得和珍妮婶婶做的苹果派一样烂了,真是该死。因此我们决定,为了保证网站的一致性体验,我们不能将用户甩出复印机与窗口,我们必须将 system-ui 从字体堆栈中踢出去!见 https://github.com/twbs/bootstrap/issues/22328 和 https://github.com/w3c/csswg-drafts/issues/3658 。
$english-fonts: -apple-system, BlinkMacSystemFont, InterVariable, Inter, "Segoe UI Variable Text", "Segoe UI", "Roboto Flex", Roboto, "Noto Sans", "Fira Sans" /* , "Yozora Sans", Monu */;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Segoe UI Variable 字体无法在 Chromium 下正常调用(加了 Text 只会识别到字体但不会可变),删了吧。

不信测试下字重变化看是否连续不可导?


InterVariable 字体不是已经移除了吗,怎么还在这里?

InterVariable 嵌入字体已被删除,因此你可以放心地移除该字体了。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

??没有移除过,只是改成了官方源,不自己提供源文件而已
image

Copy link
Member

@otomad otomad Feb 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

哦我就说怎么之前看文件发现不见了。

不过名字要不要改一下?现在的名字看起来有点奇怪。也许应该改成 “Inter Variable” 或者 “Inter VF”。

另外我忘了在 Windows 下,优先显示的是 Inter 还是 SF?假定两个字体用户都装了的话。

OK,我知道了。

@hafterain
Copy link
Contributor Author

有个小问题想问下:就是Noto Sans CJK SC作为中文显示之后总觉得文字靠下了,这个是什么情况以及是否有比较好的优化方式?
image image

可能文字基线问题吧。

@hafterain
Copy link
Contributor Author

思源黑体我感觉太丑了,看起来感觉甚至还不如微软雅黑(堕朱砂),不如提前苹方。反正至少在陆标下我不喜欢思源黑体。

不安装思源,以及Safari用户不受此影响(Safari默认屏蔽系统字体)。

Noble Scarlet中宫有点过小,说到底这只是“个人喜好”,我更希望能让界面字体尽可能统一。

@Aira-Sakuranomiya
Copy link
Member

Aira-Sakuranomiya commented Feb 18, 2025

macOS上这个基线问题感觉还是有点难绷,或许PingFang还是放Noto Sans CJK前面?没有完整字重相对来说还可以接受

@otomad
Copy link
Member

otomad commented Feb 18, 2025

有一个新的 text-box-trim 属性,可以调节字体的基线等问题。
https://developer.chrome.com/blog/css-text-box-trim?hl=zh-cn

不过要求至少 Chromium 133 和 Safari 18.2。

@otomad
Copy link
Member

otomad commented Feb 18, 2025

确实感觉我不太喜欢中宫太大的字,感觉中宫太大的字看起来有点“肥大”(?)。中宫小一点的字看起来匀称一些。

@otomad
Copy link
Member

otomad commented Feb 18, 2025

话说如果把中宫的大小运用到光学尺寸上,字号越小时中宫越大,字号越大时中宫越小,似乎还不错?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants