【问题标题】:Default font set on AndroidAndroid 上设置的默认字体
【发布时间】:2011-10-12 04:52:02
【问题描述】:

谁能告诉我大多数 Android 设备上捆绑的字体是什么,特别是网页?

就像Windows has their bundled fontsMac font lists,大多数Android 手机和平板电脑都有哪些字体?任何人都可以指向网络上的列表吗?

我正在制作网页,并希望设置我的 CSS 以优雅地从使用较新的字体降级为普通的“无衬线”和“衬线”字体系列。谢谢。

【问题讨论】:

标签: android html css fonts truetype


【解决方案1】:

这里已经回答了这个问题:How to retrieve a list of available/installed fonts in android? Android 中只有 3 种字体可用;普通(Droid Sans)、衬线(Droid Serif)和等宽(Droid Sans Mono)。

【讨论】:

  • 嗯,还没有完全回答。那是针对应用程序的。网页呢?每个应用程序都必须捆绑自己的字体吗?例如所以 Firefox Mobile 必须嵌入一组默认的 TT 字体?
  • 从我读过的所有内容来看,默认的 3 种字体似乎也适用于 Android WebKit 浏览器。您应该能够使用 CSS @font 规范从 Web 加载字体。也可以在您的应用程序中包含 TT 字体,在这种情况下,您可以在活动中使用它们,或者使用 CSS url 规范将它们加载到 WebView 中。见:mail-archive.com/android-developers@googlegroups.com/…stackoverflow.com/questions/1344080/…stackoverflow.com/questions/5908680/…
  • 从 android 4.1 - JellyBean 开始,以下 Roboto 字体系列可用:stackoverflow.com/a/13329907/502187
  • 似乎没有人回答这个问题,这与Android浏览器中的网络字体有关,而不是在应用程序中使用的字体。
【解决方案2】:

从 Android 4.1 你可以使用这个例如:

字体系列:无衬线灯;

【讨论】:

    【解决方案3】:

    http://www.granneman.com/webdev/coding/css/fonts-and-formatting/default-fonts/#android

    显然在 4.0 之前的 android 上只能指定 3 种字体:

    • Droid Sans
    • Droid Serif
    • Droid Sans Mono

    我猜它们会转换为默认的 CSS (即 sans-serifserifmono

    【讨论】:

      【解决方案4】:

      Post 4.0 Androïd 使用“Roboto”字体。 你可以在这里找到 Androïd 的规格: http://developer.android.com/design/style/typography.html

      【讨论】:

        【解决方案5】:

        扩展 Grstmo's answer:

        system_fonts.xml 定义从字体系列到实际字体文件的映射。所以让我们试试这些:

        <div style="font-family: sans-serif; font-style: normal">Regular</div>
        <div style="font-family: sans-serif; font-style: italic">Italic</div>
        <div style="font-family: sans-serif; font-weight: bold">Bold</div>
        <div style="font-family: sans-serif; font-weight: bold; font-style: italic">Bold-italic</div>
        
        <div style="font-family: sans-serif-light; font-style: normal">Light</div>
        <div style="font-family: sans-serif-light; font-style: italic">Light-italic</div>
        
        <div style="font-family: sans-serif-thin; font-style: normal">Thin</div>
        <div style="font-family: sans-serif-thin; font-style: italic">Thin-italic</div>
        
        <div style="font-family: sans-serif-condensed; font-style: normal">Condensed regular</div>
        <div style="font-family: sans-serif-condensed; font-style: italic">Condensed italic</div>
        <div style="font-family: sans-serif-condensed; font-weight: bold">Condensed bold</div>
        <div style="font-family: sans-serif-condensed; font-weight: bold; font-style: italic">Condensed bold-italic</div>
        
        <div style="font-family: serif; font-style: normal">Serif Regular</div>
        <div style="font-family: serif; font-style: italic">Serif Italic</div>
        <div style="font-family: serif; font-weight: bold">Serif Bold</div>
        <div style="font-family: serif; font-weight: bold; font-style: italic">Serif Bold-italic</div>
        
        <!-- "Droid Sans" actually gives you Roboto. -->
        <div style="font-family: &quot;Droid Sans&quot;; font-style: normal">Droid Sans Regular</div>
        <div style="font-family: &quot;Droid Sans&quot;; font-weight: bold">Droid Sans Bold</div>
        
        <div style="font-family: monospace; font-style: normal">Monospace Regular</div>
        

        http://jsfiddle.net/9z3tD/4/ => (在安卓 4.2 上测试)

        编辑:屏幕截图中的“Droid Sans”显然是 Roboto。 配置支持它,但结果是 the underlying file is a simlink: DroidSans.ttf -&gt; Roboto-Regular.ttf, DroidSans-Bold.ttf -&gt; Roboto-Bold.ttf

        编辑:我是否引用姓氏似乎并不重要(http://jsfiddle.net/9z3tD/9/ 呈现相同)。 CSS 区分像serif 这样的通用关键字和引用的"serif",后者指的是名称恰好是“serif”的字体;但是 xml 配置没有区别,所以我 guess 在 android 中,两种语法都指的是名称为“serif”的字体。但是如果您创建自定义 WebView 并将其配置为将通用关键字映射到其他字体(setSerifFontFamily() 和朋友),可能会有所不同。

        然后是fallback_fonts.xml。这些没有名字;例如你不能说font-family: "Droid Sans Fallback"
        但所有这些都应该针对其他字体中每个缺失的字形进行尝试。据推测,甚至可以使用"elegant""compact" 中的font-variant 并通过设置文本lang="ja" 来选择一个子集?
        但是我根本没有看到 Droid Sans Fallback 被使用,所以也许后备在 WebKit 中不起作用:-(


        免责声明:以上内容适用于使用普通浏览器和/或 Chrome 的普通 Android。我相信它也适用于 WebView(使用默认配置)但尚未测试。

        理论上,制造商可以使用其他字体,例如我听说三星这样做了。在实践中screenshots on all android devices BrowserStack had 所有人——包括三星——在我未经训练的眼睛看来是 Roboto 或 Droid,区别只是 android 版本...... 但是这里是Galaxy S3 caught not aliasing Georgia to serif,所以 something 不同。

        Firefox 是一个很好的例子,展示了不同浏览器的做法——他们切换到Open Sans and Charis SIL Compact,然后是replaced Open Sans with Clear Sans
        完整配置位于 libpref/init/all.js 中,并且取决于语言。
        据我所知,Firefox 忽略 system_fonts.xml 的别名,例如Georgia 生成无字体。
        OTOH,旧版本(测试 30、34)allowed you to refer to system fonts by name, even to Droid Sans Fallback 但这个doesn't work on FF 36, 37(这两个结果是针对http://codepen.io/cben/pen/VYgPEE,使用 Adob​​eBlank 意味着当您看到字符时,使用了该字体)。


        另请参阅relevant answer,了解应用程序可用的字体。

        【讨论】:

        【解决方案6】:

        我已经测试了一段时间,有 3 种标准字体 - WebView 的系列类型:

        衬线, 无衬线字体, 等宽。 我一直在用 javaScript 加载(我尝试了来自http://www.w3schools.com/cssref/css_websafe_fonts.asp 的不同组合,其中放置了常用组合表):

        myWebView.loadUrl("javascript:document.body.style.fontFamily=\"Impact, Charcoal, sans-serif\";");
        

        所以,下面的代码没有区别:

        myWebView.loadUrl("javascript:document.body.style.fontFamily=\"sans-serif\";");
        

        我得到了同样的结果。在 4.2.2 上测试。

        奇怪但快递也可以,看起来有点像等宽。

        【讨论】:

          猜你喜欢
          • 2012-01-18
          • 1970-01-01
          • 1970-01-01
          • 2014-03-06
          • 1970-01-01
          • 1970-01-01
          • 2017-12-10
          • 2011-11-18
          • 2012-09-14
          相关资源
          最近更新 更多