在Android上设置默认字体

Amy*_*Amy 30 html css fonts android truetype

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

就像Windows有捆绑字体Mac字体列表一样,大多数Android手机和平板电脑都有哪些字体?任何人都可以指向网络上的列表吗?

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

Ben*_*kin 30

扩展Grstmo的答案:

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>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/9z3tD/4/ => 截图4.2 (在Android 4.2上测试过)

编辑:屏幕截图中的"Droid Sans"显然是Roboto.该配置支持,但原来的基础文件是simlink:DroidSans.ttf -> Roboto-Regular.ttf,DroidSans-Bold.ttf -> Roboto-Bold.ttf

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

然后是fallback_fonts.xml.这些没有名字; 你不能说font-family: "Droid Sans Fallback".
但是所有这些都被假设为其他字体中的每个缺少的字形进行尝试.大概一个甚至可以选择使用一个子集font-variant"elegant""compact"通过设置文本和lang="ja"
但是我没有看到Droid Sans Fallback被使用,所以也许后卫在WebKit中不起作用:-(


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

理论上,制造商可能会使用其他字体,例如,我听说三星就是这样做的.实际上,所有Android设备上的截图都是BrowserStack所有 - 包括三星 - 在未经训练的眼睛看起来是Roboto或Droid,差异只是android发布......但是这里的Galaxy S3没有别名Georgia,serif所以有些不同.

Firefox是一个很好的例子,浏览器采用不同的方式 - 他们切换到Open Sans和Charis SIL Compact,然后用Clear Sans取代Open Sans.
完整配置位于libpref/init/all.js中,并且与语言有关.
据我所知,Firefox忽略了system_fonts.xml的别名,例如Georgia结果为sans字体.
OTOH,旧版本(已测试30,34)允许您按名称引用系统字体,甚至是Droid Sans Fallback,但这不适用于FF 36,37(这两个结果适用于http://codepen.io/ cben/pen/VYgPEE,使用AdobeBlank意味着当你看到字符时,使用了那个字体).


另请参阅有关应用程序可用字体的相关答案.


Dav*_*vid 3

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

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