【覆盖几乎所有Unicode 14.0汉字】GlyphWikiFont——我用字形维基生成的免版税字体
字形维基
https://zhs.glyphwiki.org/wiki/Group:hu60_GlyphWikiFont-000000
https://zhs.glyphwiki.org/wiki/Group:hu60_GlyphWikiFont-001000
https://zhs.glyphwiki.org/wiki/Group:hu60_GlyphWikiFont-002000
……
https://zhs.glyphwiki.org/wiki/Group:hu60_GlyphWikiFont-031000
完整列表:
https://zhs.glyphwiki.org/wiki/User:hu60
字体下载
有45个字体,每个字体又有.ttf和.woff2两种格式,共90个文件。
【更新日志】
-
[r2] 删除了两个字符
U+FFFE和U+FFFF,修复了Linux浏览器加载GlyphWikiFont-00F000.woff2/ttf报错
(downloadable font: cmap: Out of order end range (65535 <= 65535))的问题。 -
[r3] 以防万一,又删除了这四个字符:
U+1FFFE、U+1FFFF、U+2FFFE、U+2FFFF。
为什么要分这么多个字体文件?
-
字形维基单次最多生成8000字,由于Unicode采用十六进制,4096字是保持对齐最简单的方式。
因为每个字体文件只有4096字,所以每个Unicode平面(65536字)需要16个字体文件。Unicode 14.0共有3个平面(有些区域没字),所以加起来就有45个字体文件了。 -
CSS
unicode-range可以指定字体对应的Unicode范围,只在需要用到某字时才会去下载它对应范围的字体。
这样一来,字体文件越小就越有优势,因为单次下载的量也小,下载速度也就更快。
所以我没有对字体进行合并,保留了原始的45个字体文件。
.ttf和.woff2有什么区别?
.woff2是浏览器在CSS @font-face里专用的字体格式,操作系统通常不支持,不能直接安装,只能用于网页。
.ttf可以直接安装到操作系统中,但比.woff2大很多,不适合网页。
不过旧浏览器可能不支持.woff2,只支持.ttf,所以我下面的CSS两种都提供了,优先.woff2,.ttf则作为备用。
CSS网页字体定义
unicode-range属性很重要,如果没有它,每次显示生僻字时都会下载全部字体,那性能就非常差了。
定义unicode-range之后,只有出现生僻字的时候才会下载对应的字体文件,用不上的字体文件不会被下载。
- https://hu60.cn/tpl/jhin/css/GlyphWikiFont.css (Gitee | Github)
- https://hu60.cn/tpl/jhin/css/emoji.css (Gitee | Github)
【更新日志】
-
[2022-08-18]
偶然发现多个字体文件对应同一个font-family是完全可以的,所以删掉了多余的font-family定义。 -
[2022-08-19]
为了让旧版安卓webview和Linux chrome浏览器能正常显示彩色emoji表情,添加了emoji.css,里面有Noto Color Emoji的网页字体文件(8MB)。
新版安卓webview用户无需担心下载8MB的问题,因为新版可以正常匹配到本地emoji字体,无需下载。
苹果、Windows和火狐用户则可以匹配到前三个系统自带emoji字体,也不需要下载。
在网页中使用的方法
/*导入emoji字体(注意:@import只能出现在CSS的开头)*/
@import url('https://hu60.cn/tpl/jhin/css/emoji.css');
/*导入字形维基字体(注意:@import只能出现在CSS的开头)*/
@import url('https://hu60.cn/tpl/jhin/css/GlyphWikiFont.css');
html, input, textarea {
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,
"Apple Color Emoji","Segoe UI Emoji","Twemoji Mozilla","Noto Color Emoji",
/*优先系统字体*/
system-ui,fangsong,serif,monospace,emoji,math,cursive,fantasy,
/*用于显示生僻字*/
'GlyphWikiFont';
}
code {
font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace,
"Apple Color Emoji","Segoe UI Emoji","Twemoji Mozilla","Noto Color Emoji",
/*优先系统字体*/
sans-serif,serif,system-ui,fangsong,emoji,math,cursive,fantasy,
/*用于显示生僻字*/
'GlyphWikiFont';
}
在Canvas中使用
上面的css只能用于普通网页内容,想在canvas里用于渲染,必须用FontFace API加载并等待加载完成。



