当前位置:首页>安卓APP>安卓fonts.xml配置可变字

安卓fonts.xml配置可变字

  • 2026-11-10 07:55:04
安卓fonts.xml配置可变字
在安卓中,系统使用fonts.xml进行字体配置(新版本安卓16使用font_fallback.xml进行字体配置)。可在网上自行搜索下fonts.xml文件。这里简单叙述下系统如何解析fonts.xml的。
首先对xml进行解析,读取关键字"family", 如果此时的Element有属性“name”,则我们称之为具名字体,反之称之为匿名字体。然后将所有的匿名字体作为一个集合,称之为fallback fonts。当系统使用字体时,优先使用默认字体(sans-serif)
或设置的具名字体,如果该字符没有在具名字体中查找到,则在fallback fonts中查找。当然查找也是有依据的,安卓的minikin实现了一个匹配字体的打分机制,通过各种条件进行匹配打分,例如lang、style等进行匹配打分,得分最高者就是最终使用的字体。
打分机制中的style,简单理解为细体、粗体,斜体等样式。在使用可变字体前,每种style都需要一个单独的ttf字体进行适配。当可变字体应用后,只需要每个style设置对应的可变轴值即可,如下图
安卓系统使用<font> element中的 weight属性进行选取对应的条目。例如Regular时,会选择weight="400"的font条目。注意到此时'axis'的tag='wght'  stylevalue=400。一般的,这个值的具体数据不同字体可能不同。也就是说,当font中weight=“400”时,对应的可变字体xxx.ttf 对应的轴值 axis tag'=wght' stylevalue=???,其中'???'是该可变字适配Regular时的轴值,可能是400,也可能是423、451等任意值。图中由于Roboto-Regular.ttf设计的正好和安卓系统温和,因此都是400。
注意,以上只是针对fonts.xml的设置,由于新版本安卓优先使用font_fallback.xml,默认可变字体设置的轴值与系统一致,即与Roboto-Regular.ttf一样,font weight的值,与 axis='wght' stylevalue 的值相等。如果技术层面无法完全适配,则需要字体设计师对可变字体进行修改,增加master或者缩放轴值,以适配安卓系统。另一种方案就是放弃font_fallback.xml,继续使用传统的fonts.xml。

最新文章

随机文章