android字体文件过大,加载字体文件过大的问题,不是icon,而是fontFamily
目前在写app时遇到ttf文件加载太大了,放本地打包比app还大(差不多了),放服务器加载太慢,于是乎想要看看能不能把这个ttf字体包搞小一点。
首先是加载字体文件的loadFontFace,插件市场也有很好的字体引入插件。但是各种字体文件的通病就是ttf字体包很小的不支持汉字,支持全汉字等的文件比较大(动不动就支持拉丁,日,韩,朝等各种文字,还有各种生僻字,总共5-6万字的字体库)。
后来有人说,这些字体在html中可以这样加载,但是这样加载是不是相当于从字体包中挑出相应的文字重新生成一个文件,这样不能满足我的需求,因为我的文字有新闻类的文章,总不能每次都请求一个字体文件啊(或许这样也可以)。
然后就是类似于阿里icon的在线字体生成,我觉得是不是这样的也许能满足我的需求,直接把汉字常用字生成对应的字体文件,但是发现文字数量有限制,并不现实(某些文本确定的地方这样生成的文件更合适)。
最后,找到了这个将原有字体文件多余文字抽离,精简字体包的方法,精简ttf的方法,按照这个教程,我实现了3500常用字,7600常用字和8000常用字的字体包的生成。
为什么要发这个帖子,效果太显著了,有下面几点,1、我使用的思源宋体,原otf大概23M,精简版ttf只有3M左右(7600字),加载速度大大提升;2、最后的精简字体方法中有坑:首先,FontCreator工具收费,仅有win版,FontSubsetGUI工具仅支持ttf,对于otf支持度不够等;3、最后就是FontSubsetGUI的下载源收费,而且需要.net环境的依赖,各种字体文件大家随便去各种字体网站找一找都有下载的。
##############
刚又发现了,Nvue中引入的字体没有生效,weex引入,loadFontface引入都不行,css引入还是不行oo原来路径的问题啊。比如我的代码‘/static/font/siyuanSimSun.ttf’这个路径,还有就是引入的fontfamily不要用‘string’,倒是和Vue页面内的相反。
var domModule = weex.requireModule('dom');
domModule.addRule('fontFace', {
'fontFamily': "siyuanSimSun",
'src': "url('/static/font/siyuanSimSun.ttf')"
});
##############
刚测试苹果机,注意一下ttf的路径,原安卓的路径(/static/font/siyuanSimSun.ttf)比较随意,倒是iOS相对路径(./static/font/siyuanSimSun.ttf)一定要写准确,也可以转本地绝对路径'src': 'url("'+"file:/" + plus.io.convertLocalFileSystemURL("_www/static/font/siyuanSimSun.ttf")+'")'。
##############
又发现一个问题,之前的环境都是V3引擎,现在我发现关闭V3后Nvue里的字体引入方式失效了,我会重新找方案。
##############
最近把字体的引入搞差不多了,有两个点,V3没有问题,尽量不要在app里引Vue页面的字体,分别引入。Nvue比较好一点,但是不论Nue还是Vue的input,textarea,在安卓端都没办法把内容字体使用指定字体。
##############
本身随笔性质的,也没描述太清楚,既然官方大佬来了,我要把这个字体精简工具放出来,里边有好几个,具体是什么我也不懂,反正按上边的教程,很傻瓜的。
##############
突然发现忘记了一点,我在app.vue里放了一个全局字体
.siyuanSimSun{
font-family: siyuanSimSun; //这里不要带引号
}
android字体文件过大,加载字体文件过大的问题,不是icon,而是fontFamily相关推荐
- 图片在xml文件中直接加载.9文件
图片在xml文件中直接加载.9文件,可能会因为图片压缩的缘故产生锯齿,如果使用 ImageView imageview = (ImageView) view .findViewById(R.id.in ...
- android开发文本字体包,AndroidStudio 实现加载字体资源的方法
AndroidStudio 实现加载字体资源的方法 在android中字体的格式总是不能尽善尽美的显示出来 , 于是要求我们使用一些有美感的字体,加载的方式(就像HTML的字体一样),我们需要通过加 ...
- css:网页引入字体@font-face以及动态加载字体
css:网页引入网络字体@font-face <style >/* 引入字体 */@font-face {font-family: "站酷高端黑 Regular";fo ...
- 动态播放外部FLV 文件和预加载 FLV 文件
/***************** wgscd (c)2005 ' qq:153964481 e-mail:wgscd@126.com blog:http://blog.csdn.net/wgsn ...
- 使用wpf引入资源文件,RichTestBox加载rtf文件
最近临时被拉来负责公司客户端界面的一些开发,因为之前做过一些界面相关的开发内容,所以本想着应该分分钟就搞定,却不曾想浪费了我好几天.这里我吐槽一句,我佩服(wpf)是真不好用,尤其是对于之前没接触过这 ...
- android程序中关于webview加载html文件
这两天用webview加载html时遇到很多问题也学到了不少,仅在这里记载以供以后参考,哪里不完善的还望有心人多加补充. (这里只介绍webview.loadUrl()) 思路:拿到网页url,然后把 ...
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | 加载 dex 文件 | 反射获取系统的 Element[] dexElements )
文章目录 一.dex 文件准备 二.加载 dex 文件流程 三.Element[] dexElements 分析 四.反射获取系统的 Element[] dexElements 参考博客 : [And ...
- Android插件化原理—ClassLoader加载机制
前面<Android 插件化原理学习 -- Hook 机制之动态代理>一文中我们探索了一下动态代理 hook 实现了 启动没有在 AndroidManifest.xml 中显式声明的 Ac ...
- python bottle web框架上传静态文件与加载静态文件
文章目录 1 上传文件 2 加载静态文件 1 上传文件 # 上传文件 @route('/upload', method=['POST','GET']) def upload():f = request ...
最新文章
- LINUX下SVN命令大全
- ffmpeg java linux水印,Linux环境用FFmpeg给视频加水印详细步骤
- abap判断当前月最后一个工作日_油价正式打响第一枪!今天12月3日,今晚油价迎来大幅暴跌,调价后全国地区油价一览!...
- DL之VGG16:基于VGG16(Keras)利用Knifey-Spoony数据集对网络架构FineTuning
- 给git配置http代理
- 构建Squid代理服务器-传统代理、透明代理、反向代理
- 【LeetCode笔记】31. 下一个排列(Java、原地算法、偏数学)
- LINE:不得不看的大规模信息网络嵌入
- android系统一直显示通知栏_Android8以上 显示通知栏简单实现
- bzoj3262: 陌上花开 树套树
- 云计算是什么?云计算的发展趋势是什么?
- 进攻:设备动作流程(一)
- redis - quorum的解释
- 跨界干货:如何在一周内摸清一个行业
- h5 适配 iphoneX 的全面屏 (上有刘海 ,下有呼吸灯) ,在iphonX 上 fixed定位的问题
- 中啦 Computers in Biology and Medicine(CIBM)-- 投稿经验分享
- 手把手教大家如何给域名申请免费SSL证书
- 基于Ant的Mentions自定义公式功能
- 服务器一直显示初始化,服务器一直初始化内存
- Mysql语句+Linux指令一步入门