系统字体如何处理不同的语言?

How does system fonts deal with different languages?

如果我在设计中使用 -appel-system 字体堆栈,我会看到根据语言使用的各种字体。例如,罗马字符显示在 "San Francisco" 中,日语显示在 "Hiragino Kaku Gothic Pro"

https://css-tricks.com/snippets/css/system-font-stack/ https://www.quora.com/What-is-the-Mac-OS-X-Japanese-system-font

但是如果你有混合文本会怎样?例如,『100』+『人』是很常见的,但那是两种不同的字型,那么有两种不同的字体吗? half-width (normal) 100人》full-width (special) 100人 你可以看到 100 比使用普通阿拉伯数字的人要短。

字母按字体堆栈顺序解析,其中任何字母都使用支持它的任何字体,从您的第一个字体开始,沿着列表向下直到找不到字体,此时 "the system gets to pick something"。

在你的例子中,“100”肯定会使用SF,但是在SF中找不到它旁边的人,所以检查Hiragino是否支持该字符。它确实如此,所以 Hiragino 被习惯了。如果下一个字形是一些 Arameic 字母,并且您的堆栈中也有支持 Arameic 的字体,那么 SF 会失败,Hiragino 会失败,然后 Arameic 字体会成功。但是,需要注意的是,浏览器不会 "keep using one font for as long as possible",它们总是会尝试使用 "the first font in a stack, falling back to next fonts until they run out of explicit fonts to try".

因此,如果您有一些文本“100人。”,那么 . 将再次由 SF 设置样式,即使 arameic 字体也支持它。浏览器将尝试尽快返回 "higher font in the stack"。