过期主题 该主题因在两个月内没有任何回复而自动关闭。
如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。
主题工具  
RadarNyan 帅哥
RadarNyan 的头像
极客II
级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时
注册日期: 2013-11
帖子: 97
致谢: 148
Android 5.0 开始,系统的字体配置文件由 system_fonts.xml + fallback_fontx.xml 两个文件合并成了一个 fonts.xml,通过修改这个文件可以实现不修改字体文件的前提下更换系统字体和 fallback 字体。最近给手机刷上了 Android 6.0,Roboto 看了这么久实在是审美疲劳,于是我通过这种方式换上了我个人很喜欢的一套 UI 字体 Ubuntu:
换完之后是图一中的样子。虽然字体换过来了但总觉得不太对劲。换回原来的(图二) Roboto 对比可以发现通知内文字的显示高度不同,这是由于 Ubuntu 字体和 Roboto 的规格(Metrics, 这翻译是微软给的别问我为什么)不同造成的。虽然可以通过修改 Ubuntu 字体本身来达到和原版统一的效果,但这种有点「脏」的解决方法我个人不喜欢。于是琢磨了一会儿之后实现了在不修改 Ubuntu 字体的前提下,还原文字显示高度(图三)。

嘛,其实这个实现起来也不难,就是通过 Android 系统的 fallback 机制会利用原始字体规格的特点,让 Ubuntu 用上了 Roboto 的规格。最后 fonts.xml 修改如下:
其中的 RobotoFake 字体(见附件)是我从原版 Roboto 修改而来的假字体 —— 包含了 Roboto 的规格但不包含实际的字符图形 (Glyph);第三段保留原有的 Roboto(注意:第二段和第三段开头的 <family> 标签都不能含有 name 属性,否则无法 fallback)来补充 Ubuntu 字体缺失的字符(如果不加这段锁屏时钟中间的冒号会变成 .nodef 的方块)这种方式的好处在于,第二段的字体可以随心所欲的更换且不用修改字体文件本身 —— 有几个字重就写几个字重,没有的字重不需要写,不用担心没有的字重会显示出 Roboto,Android 的 Fallback 机制是以字体 (family) 为单位而不是以字重 (weight) 为单位的。

但是想在高分屏的 Android 设备上达到最好效果,推荐最好是去掉 hinting —— 图三中是去掉 hinting 的 Ubuntu 字体,图一是未去掉 hinting 的。

RobotoFake 字体的制作方法:
请看的回帖。
上传的图像
文件类型: png 1.png (108.3 KB, 46 次查看)
文件类型: png 2.png (76.6 KB, 34 次查看)
文件类型: png 3.png (85.1 KB, 53 次查看)
上传的附件
文件类型: 7z RobotoFake-160522.7z (2.4 KB, 37 次查看)
此帖于 2016-05-23 00:23:34 被 RadarNyan 编辑.
回复时引用此帖
以下 5 位极客对 RadarNyan 此帖表示感谢:
biuankheinom (2016-05-10), feimummy (2016-05-30), kmc (2016-11-09), Rayernas (2016-05-08), Tim_Daning (2016-05-24)
135956
极客II
级别:7 | 在线时长:295小时 | 升级还需:65小时级别:7 | 在线时长:295小时 | 升级还需:65小时
注册日期: 2005-08
帖子: 101
2016-05-08, 15:30:44 #2 | TOP
感谢分享经验、技术!
回复时引用此帖
linsuixin
极客I
级别:3 | 在线时长:79小时 | 升级还需:21小时级别:3 | 在线时长:79小时 | 升级还需:21小时级别:3 | 在线时长:79小时 | 升级还需:21小时
注册日期: 2012-02
帖子: 26
致谢: 1
2016-05-09, 10:28:17 #3 | TOP
技术帖啊,佩服楼主钻研精神~
回复时引用此帖
feimummy
feimummy 的头像
寧靜之雨殿下
级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时
注册日期: 2010-12
帖子: 645
致谢: 731
2016-05-10, 13:59:11 #4 | TOP
感谢,抽空仔细看下,最近正在研究英文替换
表獨立兮山之上,雲容容兮而在下。杳冥冥兮羌晝晦,東風飄兮神靈雨。
我的微信公众号:宁静之雨
回复时引用此帖
RadarNyan 帅哥
RadarNyan 的头像
极客II
级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时
注册日期: 2013-11
帖子: 97
致谢: 148
2016-05-22, 19:01:26 #5 | TOP
附件里有写好的 python 脚本和批处理,其实除了用来搞 Roboto 也没别的用途了。
(部分值是写死的,仅适用于 Roboto 字体!不要企图用在别的字体上!!!)

没有用标准的读取 xml 的方法而是逐行自己处理的,基本上是抱着写着玩的心理搞的。

用法:
1. (首先你得装有 python 3 和 ttx)把附件的压缩包解压到独立文件夹
2. 把原版 Roboto 字体(共 12 个文件)放到 input_ttf 文件夹内
3. 运行 “1.extract.bat” 运行完成后关闭窗口
——可以在生成的 extract_ttx 文件夹内找到先排除掉部分表的 ttx 文件
4. 运行 “2.make.bat” 运行完毕后关闭窗口
——可以在生成的 output_ttf 文件夹内找到生成好的 RobotoFake 字体
上传的附件
文件类型: zip make.zip (2.2 KB, 10 次查看)
此帖于 2016-05-22 19:54:26 被 RadarNyan 编辑.
回复时引用此帖
以下极客对 RadarNyan 此帖表示感谢:
Tim_Daning (2016-05-24)
Tim_Daning
Tim_Daning 的头像
极客II
级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时
注册日期: 2015-04
帖子: 96
致谢: 66
2016-05-24, 22:53:26 #6 | TOP
這個牛逼啦~~~~~贊贊贊!!!!
Roboto-Condensed 也可以一并修改嗎?
此帖于 2016-05-24 22:59:43 被 Tim_Daning 编辑.
回复时引用此帖
RadarNyan 帅哥
RadarNyan 的头像
极客II
级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时
注册日期: 2013-11
帖子: 97
致谢: 148
2016-05-25, 10:51:23 #7 | TOP
不能。因为 Condensed 字形是靠 name 属性实现的,同一个 name 属性的 family 如果出现多次则只会以最后一个定义为准。但是我个人试验直接把 Ubuntu-C.ttf 设置为 Condensed 字体也没有出现什么排版混乱的情况,可以放心使用(Ubuntu Mono 情况相同,别的字体我就不知道了)
回复时引用此帖
以下极客对 RadarNyan 此帖表示感谢:
Tim_Daning (2016-05-25)
Tim_Daning
Tim_Daning 的头像
极客II
级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时
注册日期: 2015-04
帖子: 96
致谢: 66
2016-05-25, 22:01:22 #8 | TOP
目前有兩個問題

1. 只有在英文界面是正常的,在中文界面下,所有英文数字都是用中文字体显示
2. 貌似有些字重显示不来,我替换了 Thin,在 Clock 里却是一个奇怪的字体

是不是要配合把中文字体仅保留中文字符。。。
上传的图像
文件类型: png Screenshot_2010-01-01-00-22-13.png (35.3 KB, 28 次查看)
回复时引用此帖
RadarNyan 帅哥
RadarNyan 的头像
极客II
级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时
注册日期: 2013-11
帖子: 97
致谢: 148
2016-05-25, 23:08:21 #9 | TOP

1. 其实如果你把英文字体再写一遍,很多软件里都能正常 fallback(就把你最上面 RobotoFake 之下的一段复制一份,加上 lang="zh-Hans" 放在你的中文 fallback 上面)但是唯独浏览器里我怎么实验都搞不定……最后我没办法才研究对中文字符动刀的(也就是)至于为什么会这样,有待研究……
EDIT: 我严重怀疑这是 Android 版 Chrome 的 BUG,因为 webview 和 AOSP 自带浏览器不存在这个问题…

2. Clock 里难道不是 Regular 字重么?你可以装个 Facebook Messenger 看看能不能正常显示 Thin 字重(我都没有 Facebook 帐号,为了测试专门下了一个……其实可以自己写个应用测试但是我好懒 OTL)另外就是字体的字重命名不一定符合 Android 的命名规范(比如方正字体就不行,我自选了四种字重的方正兰亭圆都是彻底重写的 name 表。你可以用 ttx 拆原版 Roboto 对应字重的 name 表出来看看,对应着改。粗体还要改 OS/2 表,注意比 Bold 细的都不是粗体!比如 Medium 就不是!)
此帖于 2016-05-26 12:29:02 被 RadarNyan 编辑.
回复时引用此帖
以下极客对 RadarNyan 此帖表示感谢:
Tim_Daning (2016-05-26)
Tim_Daning
Tim_Daning 的头像
极客II
级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时
注册日期: 2015-04
帖子: 96
致谢: 66
2016-05-26, 23:03:24 #10 | TOP
感谢说明,现在完全 OK 了。
顺手把自己做的字体包分享出来,英文用了 SF-UI, 中日文用了 Aktiv,韩文是 MSNeoGothic

使用说明
1. 改根目录的 fonts.txt 为 fonts.bat
2. 把 \fonts\SFUI-Aktiv\ 字体文件与 \fonts\xml\ 配置文件放到根目录
3. 执行 fonts.bat, 可能要执行两遍


修改的 fonts.xml 基于 6.0 版本
fonts.bat 是从原生 5.1 改到原生 6.0,非 Nexus 品牌可能要 DIY

移除链接,才看到 aktiv 不能分享的...
上传的图像
文件类型: png Screenshot_2016-05-26-23-10-06.png (66.2 KB, 31 次查看)
文件类型: png Screenshot_2016-05-26-23-09-54.png (110.0 KB, 39 次查看)
文件类型: png Screenshot_2016-05-26-23-00-49.png (90.2 KB, 28 次查看)
文件类型: png Screenshot_2016-05-26-23-00-15.png (77.2 KB, 25 次查看)
文件类型: png Screenshot_2016-05-26-23-00-22.png (88.9 KB, 20 次查看)
此帖于 2016-05-27 10:01:03 被 Tim_Daning 编辑.
回复时引用此帖
RadarNyan 帅哥
RadarNyan 的头像
极客II
级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时
注册日期: 2013-11
帖子: 97
致谢: 148
2016-05-27, 10:20:13 #11 | TOP
你这截图,第一张锁屏上看到的通知明显错位了啊……
Screenshot_20160527-111343.png
我把西文和简体中文字体拿出来重写了个 xml (见附件)放在自己手机上,并没出现错位。

RobotoFake 只要出现一次 (name="sans-serif") 就够了,下面不用写。

另外我不赞成把这种需要修改系统分区的危险行为做成自动化的 —— 只有对这些操作有理解的人才应该进行这种操作,不了解这方面风险的小白抱着试试看的心理运行别人做好的自动化很可能搞出问题。同时你这个批处理的内容也有问题:1. 没必要把无关的字体都干掉;2. 没创建备份;3. 没还原权限 建议还是不要以自动化形式发布好。
上传的附件
文件类型: txt fonts.xml.txt (18.7 KB, 11 次查看)
此帖于 2016-05-27 10:27:37 被 RadarNyan 编辑.
回复时引用此帖
Tim_Daning
Tim_Daning 的头像
极客II
级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时级别:5 | 在线时长:200小时 | 升级还需:10小时
注册日期: 2015-04
帖子: 96
致谢: 66
2016-05-27, 10:46:32 #12 | TOP
有道理,不提供 bat 了,毕竟我这里有问题可以直接刷机...
来试试不用 roboto fake 的效果

囧,在其他几台设备上试了,无论加不加 roboto fake 效果都是一样,不会有错位,不知道这台怎么回事

原来是设置成了小字体...改成正常大小就 OK

Sent from my SM-G920I using Tapatalk
此帖于 2016-05-27 12:11:22 被 Tim_Daning 编辑.
回复时引用此帖
eesa 帅哥
eesa 的头像
极客III
级别:11 | 在线时长:761小时 | 升级还需:19小时级别:11 | 在线时长:761小时 | 升级还需:19小时级别:11 | 在线时长:761小时 | 升级还需:19小时级别:11 | 在线时长:761小时 | 升级还需:19小时级别:11 | 在线时长:761小时 | 升级还需:19小时级别:11 | 在线时长:761小时 | 升级还需:19小时
注册日期: 2007-09
来自: 北京
帖子: 423
致谢: 116
2016-05-29, 13:24:16 #13 | TOP
看了半天不是太懂,手机是flyme,想仅修改英文字体为neutra face,具体怎么弄?
回复时引用此帖
RadarNyan 帅哥
RadarNyan 的头像
极客II
级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时级别:5 | 在线时长:152小时 | 升级还需:58小时
注册日期: 2013-11
帖子: 97
致谢: 148
2016-05-30, 16:42:00 #14 | TOP
没用过 flyme,不保证第三方定制系统会遵循 Andriod 默认规则。
回复时引用此帖
feimummy
feimummy 的头像
寧靜之雨殿下
级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时
注册日期: 2010-12
帖子: 645
致谢: 731
2016-05-30, 19:46:06 #15 | TOP
我是用比较“脏”的方法完成的西文替换。
Screenshot_20160530-194144.png
直接以roboto打底,修改94个英文数字为旧金山SF英文 生成新的合并字。
其实你fallback也是为了规避这个问题……

中文部分是调用了5个字重的悠黑(thin,Light,Medium,Bold,Regular)

ps,除了apple的旧金山英文,很难找到和roboto那样粗细斜窄如此完整的官方字库了。
Screenshot_20160530-194238.png
Screenshot_20160530-194249.png
表獨立兮山之上,雲容容兮而在下。杳冥冥兮羌晝晦,東風飄兮神靈雨。
我的微信公众号:宁静之雨
回复时引用此帖
以下极客对 feimummy 此帖表示感谢:
Tim_Daning (2016-06-04)
feimummy
feimummy 的头像
寧靜之雨殿下
级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时级别:5 | 在线时长:160小时 | 升级还需:50小时
注册日期: 2010-12
帖子: 645
致谢: 731
2016-05-30, 19:51:32 #16 | TOP
需要自己研究fonts.xml
没记错的话,魅族也是用思源黑的。
我改过一套neutraface,
你替换试试。
谨慎起见,还是做好备份,免得故障,毕竟我是基于Nexus做的。
表獨立兮山之上,雲容容兮而在下。杳冥冥兮羌晝晦,東風飄兮神靈雨。
我的微信公众号:宁静之雨
此帖于 2016-05-30 19:58:00 被 feimummy 编辑.
回复时引用此帖
longxiao_ling 帅哥
longxiao_ling 的头像
极客I
级别:1 | 在线时长:23小时 | 升级还需:7小时
注册日期: 2016-06
来自: 重庆 贵州贵阳
帖子: 40
2016-06-14, 21:03:49 #17 | TOP
佩服,伸手党只能阅读
回复时引用此帖
hhbluestar
极客II
级别:2 | 在线时长:47小时 | 升级还需:13小时级别:2 | 在线时长:47小时 | 升级还需:13小时
注册日期: 2008-06
帖子: 58
2016-06-24, 13:42:46 #18 | TOP
FONT.XML和原版哪里不同了.没看明白..
回复时引用此帖
mitkyg
极客II
级别:4 | 在线时长:109小时 | 升级还需:41小时级别:4 | 在线时长:109小时 | 升级还需:41小时级别:4 | 在线时长:109小时 | 升级还需:41小时级别:4 | 在线时长:109小时 | 升级还需:41小时
注册日期: 2013-02
帖子: 55
致谢: 2
2016-07-11, 16:28:36 #19 | TOP
谢谢楼主的分享!
回复时引用此帖
try_to_try 帅哥
极客II
级别:4 | 在线时长:105小时 | 升级还需:45小时级别:4 | 在线时长:105小时 | 升级还需:45小时级别:4 | 在线时长:105小时 | 升级还需:45小时级别:4 | 在线时长:105小时 | 升级还需:45小时
注册日期: 2015-10
帖子: 83
致谢: 8
2016-08-03, 20:43:42 #20 | TOP
楼主知道魅族flyme5的锁屏时间字体是哪个吗?
回复时引用此帖
过期主题 该主题因在两个月内没有任何回复而自动关闭。
如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。
主题工具
发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码

论坛跳转:
Copyright ©2003-2014, THEMEX.NET [湘ICP备14009485号]
Powered by vBulletin® v3.8.3 ©Jelsoft Enterprises Ltd.
所有时间均为北京时间。现在的时间是 21:03:42