又来捣鼓网页字体了,在此之前已经搞了几篇了

中文网页中的字体选型及开发指南

给 Ghost 博客更换字体

字体在设计中的运用

这次要解决的新问题是,如何去掉代码块中难看的中文宋体。

众所周知,绝大部分等宽字体都是不带中文的,如果直接像这样定义代码块的字体:

:root {
    --font-mono: ui-monospace, SFMono-Regular, "SF Mono", "Cascadia Code", "Segoe UI Mono", "Source Code Pro", Menlo, Consolas, "Liberation Mono", monospace;
}

那么在代码里的中文,就会因为没有字体匹配,回落到系统默认的中易宋体,非常影响阅读体验。

下面我们就来解决这个问题。

font-face

通过设置 unicode-range 属性时需要明确字符的 Unicode 范围,可以实现指定中文字符的字体。

@font-face {
    font-family: "ChineseFont";
    src: local("PingFang SC"), local("Microsoft YaHei"), local("Noto Sans CJK SC");
    unicode-range: U+2E80-A4CF, U+F900-FAFF, U+FE30-FE4F;
}

然后在代码字体中加上刚刚设置的自定义字体

:root {
    --font-mono: ChineseFont, ui-monospace, SFMono-Regular, "SF Mono", "Cascadia Code", "Segoe UI Mono", "Source Code Pro", Menlo, Consolas, "Liberation Mono", monospace;
}

代码块中的中文就被替换为了我们指定的中文字体,就是这个效果

print("I can eat glass, it doesn't hurt me."); // 我能吞下玻璃而不伤身体。