gpt4 book ai didi

android - Roboto 和 Roboto Bold 是否保证在 4.0+ 上可用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:47:46 33 4
gpt4 key购买 nike

在我们的应用程序中,我们使用 Roboto 和 Roboto Bold。但是,在某些版本的 Android(似乎是 4.0 到 4.1)中,我们在使用导入版本的 Roboto(即使用 Typeface.createFromAsset())时遇到文本渲染问题,这些问题在简单时不会出现使用内置版本的 Roboto(即 Typeface.DEFAULT)。

我知道 Roboto 和 Roboto Bold 是在 Android 4.0 中引入的,但我似乎找不到任何东西来保证这些字体在制造商修改(例如 Touchwiz、Sense)的情况下都可用。如果保证它们存在,我们可以只使用版本检查来仅对低于 Android 4.0 的设备使用自定义导入。

最佳答案

编辑:通过一些实验,尤其是在允许用户更改字体的 Galaxy S3 上,我发现了以下内容:

  • 使用 Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL) 将返回自定义字体,而不是系统默认的无衬线字体(即 Roboto)
  • 相反,使用 Typeface.create("sans-serif", Typeface.NORMAL)(或 BOLD),无论用户的字体自定义如何,它都会返回 Roboto。从下面的列表中,您实际上可以使用上面的“helvetica”、“tahoma”、“verdana”或“arial”来代替“sans-serif”,结果相同。

我找到了一个名为 system_fonts.xml 的文件,它似乎证实了 Roboto 将用于 SDK 目录下对 Typeface.SANS_SERIF 的任何引用:

platforms > android-14 > data > fonts

<!--
System Fonts

This file lists the font families that will be used by default for all supported glyphs.
Each entry consists of a family, various names that are supported by that family, and
up to four font files. The font files are listed in the order of the styles which they
support: regular, bold, italic and bold-italic. If less than four styles are listed, then
the styles with no associated font file will be supported by the other font files listed.

The first family is also the default font, which handles font request that have not specified
specific font names.

Any glyph that is not handled by the system fonts will cause a search of the fallback fonts.
The default fallback fonts are specified in the file /system/etc/fallback_fonts.xml, and there
is an optional file which may be supplied by vendors to specify other fallback fonts to use
in /vendor/etc/fallback_fonts.xml.
-->
<familyset>

<family>
<nameset>
<name>sans-serif</name>
<name>arial</name>
<name>helvetica</name>
<name>tahoma</name>
<name>verdana</name>
</nameset>
<fileset>
<file>Roboto-Regular.ttf</file>
<file>Roboto-Bold.ttf</file>
<file>Roboto-Italic.ttf</file>
<file>Roboto-BoldItalic.ttf</file>
</fileset>
</family>

由于供应商字体必须放在 fallback_fonts.xml 中,系统字体总是优先的,列出的第一个字体是 Roboto,别名为 sans-serif、aria、helvetica、tahoma或 verdana,除非我另有发现,否则我认为可以安全地假设 Roboto 将是调用 Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL) 时返回的字体。

我现在仍将保留此问题,希望得到明确的答案,因为我不确定是否允许 OEM 修改 system_fonts.xml。如果是,那么这根本就没有帮助。

关于android - Roboto 和 Roboto Bold 是否保证在 4.0+ 上可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15120943/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com