在Android上设置默认字体

时间:2011-07-24 21:44:22

标签: android html css fonts true-type-fonts

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

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

我正在制作网页,并希望设置我的CSS以优雅地降低从使用较新的字体到简单的''sans-serif“和”serif“字体系列。 THX。

6 个答案:

答案 0 :(得分:29)

扩展Grstmo's answer

system_fonts.xml定义从font-family到实际字体文件的映射。让我们试试这些:

<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/ =&gt; screenshot on 4.2 (在android 4.2上测试)

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

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

然后有fallback_fonts.xml。这些没有名字;例如你不能说font-family: "Droid Sans Fallback" 但是所有这些都被假设为其他字体中的每个缺少的字形进行尝试。据推测,甚至可以使用font-variant "elegant""compact"的{​​{1}}和设置文字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所以某些不同。

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,使用AdobeBlank意味着当您看到字符时,使用了该字体)。


另请参阅relevant answer有关应用程序可用的字体。

答案 1 :(得分:3)

这已在此处得到解答:How to retrieve a list of available/installed fonts in android? Android中只有3种字体可供使用;正常(Droid Sans),衬线(Droid Serif)和等宽(Droid Sans Mono)。

答案 2 :(得分:3)

在Android 4.1中,您可以使用此示例:

  

font-family:sans-serif-light;

答案 3 :(得分:1)

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

显然,你可以在pre 4.0 android上指定3种字体:

  • Droid Sans
  • Droid Serif
  • Droid Sans Mono

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

衬线,  无衬线字体,  等宽。   我一直用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。

奇怪但快递也有效,看起来像是一种等宽的。