首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Roboto和Roboto Bold保证在4.0+上可用吗?

Roboto和Roboto Bold保证在4.0+上可用吗?
EN

Stack Overflow用户
提问于 2013-02-28 03:44:15
回答 2查看 2.1K关注 0票数 5

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-28 06:12:22

Galaxy :通过一些实验,特别是允许用户更改字体的 S3,我发现:

使用Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL)

  • 将返回该自定义字体,而不是系统默认的无衬线字体(例如,Roboto)
  • Instead,使用Typeface.create("sans-serif", Typeface.NORMAL) (或粗体),并且它将返回Roboto,而不考虑用户的字体自定义。从下面的列表中,你可以实际使用上面的"helvetica","tahoma",“宋体”,"verdana",而不是"sans-serif“,同样的结果。

我发现了一个名为system_fonts.xml的文档,它似乎确认Roboto将用于SDK目录下的任何对Typeface.SANS_SERIF的引用:

安卓平台>

-14>数据>字体

代码语言:javascript
复制
<!--
    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)时返回的字体。

我现在仍然会把这个问题放在一边,希望得到一个明确的答案,因为我不确定是否允许原始设备制造商修改system_fonts.xml。如果是这样的话,这并没有什么真正的帮助。

票数 3
EN

Stack Overflow用户

发布于 2013-02-28 03:57:33

Android 4.0 Compatibility Documentation的3.8.5节中,它说:

3.8.5。主题Android提供了“主题”作为应用程序在整个活动或应用程序中应用样式的机制。Android 3.0引入了一个新的“全息”或“全息”主题,作为一组定义的样式供应用程序开发人员使用,如果他们想要匹配Android SDK资源所定义的全息主题的外观和感觉,24。Device implementations 不得更改暴露给应用程序资源的任何全息主题属性,25。Android 4.0引入了一个新的“设备默认”主题,作为一组定义的样式,如果应用程序开发人员想要与设备实现者定义的设备主题的外观和感觉相匹配,就可以使用这些样式。设备实现可以修改暴露给应用程序资源25的DeviceDefault主题属性。

AFAIK,Roboto字体集是全息主题的一部分,因此需要出现在任何经过谷歌认证的Android 4.0及以上设备上(即运行Google Play)。

4.14.2文档中也有同样的要求

(在PDF中搜索Holo可快速找到该部分。只有4次提到它)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15120943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档