H5 中加载生僻字体过慢求助

174 天前
 qingshui33
需求:在 App 中支持生僻字输入

场景描述:在 App 里面某部分功能是套的 H5 的页面,现在整个 App 想要支持生僻字输入,于是我在 H5 的项目中引入了一个生僻字体的库,但是这个字体库有 20 多兆,就导致了加载过慢,在文件没有加载进来的时候,输入生僻字还是显示不出来,这种情况有什么解决的办法吗
1446 次点击
所在节点    HTML
23 条回复
danbai
174 天前
减少字体大小。嵌入到 app 。可行吗
qingshui33
174 天前
@danbai 如果放到 App 中的话,那在 H5 中该怎么使用这个字体呢
chenluo0429
174 天前
unicode-range ?不过也只能稍微缓解
yanng
174 天前
不要用全量的生僻字,只需要一小部分啊
我司的只有 312kb ,你用 woff2 格式,现在大部分都支持了。
为了兼容,我们还搞了个 woff 格式,407kb 。
不要用全量!人名什么的够用就行。
lisxour
174 天前
得看你用的具体实现技术了
1. 半 hybrid ,具有请求拦截,这种直接拦截相关请求,直接返回 App 包里的资源
2. 半 hybrid ,没有请求拦截,这种可以 App 自己开个本地服务器,用来请求一部分静态资源
3. 纯套壳,基本没有本地代码,html 里写好 preload prefetch ,让网页一开始加载就立马发请求,同时代码里做好字体加载的等待,没加载完不让操作等等的交互优化
wuxidixi
174 天前
最简单的办法是看看生僻字的范围是否固定,要是固定就把字体包里面的文字提取出来,这样体积小了,在提前引入,一点不慢
sqlNice
174 天前
如果你想提取一个网页或应用程序中使用的特殊字体,可以使用字体提取工具。Spider 是一种字体提取工具,可以帮助你提取网页中使用的特殊字体。

Spider 是一款功能强大的字体提取工具,可以扫描网页并提取使用的字体文件。你可以在 Spider 的官方网站上下载并安装它。安装完成后,你可以使用 Spider 打开网页并提取使用的字体文件。

除了 Spider ,还有其他一些字体提取工具可供选择,例如 Font Squirrel 、FontForge 、Transfonter 等。这些工具都有不同的功能和使用方式,你可以根据自己的需求选择合适的工具。

请注意,在提取字体文件时,要遵守版权法律和使用许可协议。确保你有权使用和提取这些字体文件。
totoro625
174 天前
我是全部手动提取的,我自用字体: https://conf.totoro.pub/fonts/font-face.css
手动切片工具: https://github.com/ecomfe/fontmin-app

有一个自动化工具,我暂时找不到,他可以把字体切成 45/92/368 片,我贴了完整的数据源: https://github.com/Totoro625/totoro625-font-family/releases/tag/demo
qingshui33
174 天前
@chenluo0429 好的,这个等会试下看看
qingshui33
174 天前
@yanng 刚看了下,按照需求来的话,我们大概需要支持 7w 个左右的生僻字,然后后端给发了三个字体文件,加起来得有 60M 左右了
qingshui33
174 天前
@lisxour 这个也不太明白原生那边有的啥方法,😂
qingshui33
174 天前
@wuxidixi 范围是固定的,但是字数也确实很多,我看看能不能缩小点
qingshui33
174 天前
@sqlNice 可以
qingshui33
174 天前
@totoro625 好的,我看看哈
yanng
174 天前
@qingshui33 为什么需要这么多,你需要问这个问题。
如果需要那么多,放 h5 肯定不行的,必须要放客户端。
totoro625
174 天前
常用 6763 个汉字使用频率表: https://blog.sina.com.cn/s/blog_5e2ffb490100dnfg.html
切片之后就会发现常用的 6k 字其实只有不到 1mb
处理好 Unicode 编码范围,切 92 片是常用的办法,实在不行就 368 片
qingshui33
174 天前
@yanng 我也很想知道他们为什么要支持这么多,奈何人言甚微啊,放客户端的话,那在其中嵌套的 H5 该怎么使用呢
qingshui33
174 天前
@totoro625 好的,我看看啊
lycpang
174 天前
能不能搞一个开关,毕竟大部分不需要生僻字把。需要的就做个弹窗让他等着下载
qingshui33
174 天前
@lycpang 这事情得看需求怎么说了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/993689

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX