Adobe与Google的noto-cjk在linux web端css如何设置?
Author:zhoulujun Date:
linux docker Puppeteer ,如过使用alpine相关达镜像,必然乱码!这个时候用此方法生成截图或PDF注定无法用
这个时候推荐使用 notofonts :https://github.com/notofonts/noto-cjk/tree/main/Sans
推荐安装字体:
apk add --no-cache fontconfig font-noto-cjk ttf-freefont ttf-liberation font-droid-nonlatin
包最好在官网搜索下,确保安装成功:https://pkgs.alpinelinux.org/packages
但如何在网页端正确显示呢?
在windows上,即使你胡乱指定字体,比如
body{font-family:'fuck-test-font-not-found'}
windows也会正确显示,以系统默认字体,比如微软雅黑展示。
因为windows有非常智能的字体回退技术
Windows 维护了一个字体回退链(Font Fallback Chain),当指定的字体无法显示某个字符时,系统会按照预定义的顺序尝试其他字体,直到找到能够显示该字符的字体为止。
如果指定了 Arial 字体,但 Arial 不支持中文字符,Windows 会自动回退到支持中文的字体(如 Microsoft YaHei 或 SimSun)。
Windows 使用 Unicode 范围映射来确定哪些字体支持哪些字符。每种字体都定义了它支持的 Unicode 字符范围。当某个字符不在指定字体的支持范围内时,系统会根据 Unicode 范围映射找到合适的备用字体。
现代浏览器(如 Chrome、Edge、Firefox)在渲染网页时,会结合操作系统的字体回退机制,确保即使开发者指定的字体不完整,页面内容也能正确显示。
但是linux上,没有这玩意儿(一些古董用户已终端操作为荣!——vim永不为奴)!
机制 | Windows | Linux |
---|---|---|
字体族匹配(Font Families) | ✔ 自动回退到 sans-serif / serif 族 | ✔ 但默认安装的字体较少,可能缺失 |
字体链接(Font Linking) | ✔ 自动从其他字体补全缺失字符 | ❌ 需要 fontconfig 手动配置 |
字体替代(Font Substitution) | ✔ 注册表维护替代表,自动映射字体 | ❌ 需要 fontconfig 手动映射 |
内置默认字体丰富 | ✔ 自带 Microsoft YaHei 、Arial | ❌ 需要安装额外字体 |
文本渲染(DirectWrite) | ✔ 自动匹配、调整字体 | ❌ 依赖 Pango 或 Harfbuzz |
linux上自己去配置 fontconfig 让 sans-serif / serif 族包含中文字体。
运维反杀就是给前端耳光!
给你装个字体就不错了!
但是,比如我安装了noto 系列字体,如何在前端展示呢?
具体参看:https://fonts.google.com/noto/use#use-noto-fonts-as-web-fonts
For example, the CSS portion for a website in Hindi and Tamil could look like this:
body {
font-family: 'Noto Sans Devanagari', 'Noto Sans Tamil', 'Noto Sans', 'Noto Sans Symbols 2', sans-serif;
}
For a Japanese website, the font-family property would be:
font-family: 'Noto Sans', 'Noto Sans JP', sans-serif;
而chatGPT 与deepSeek告诉我,使用啥Noto Sans GJK,卧槽,都没有这玩意
转载本站文章《Adobe与Google的noto-cjk在linux web端css如何设置?》,
请注明出处:https://www.zhoulujun.cn/html/design/ui/2025_0208_9484.html