问题描述
任何人都可以告诉我大多数 Android 设备上的捆绑字体是什么,特别是网页?
就像 Windows has their bundled fonts 或 Mac font lists 一样,大多数 Android 手机和平板电脑的字体是什么?任何人都可以指向网络上的列表?
我正在制作网页,并希望设置我的 CSS 从正常使用较新的字体降级到纯粹的”sans-serif” 和”serif” 字体系列。谢谢。
最佳解决思路
扩展 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: "Droid Sans"; font-style: normal">Droid Sans Regular</div>
<div style="font-family: "Droid Sans"; font-weight: bold">Droid Sans Bold</div>
<div style="font-family: monospace; font-style: normal">Monospace Regular</div>
http://jsfiddle.net/9z3tD/4/ => (在 Android 4.2 中测试)
编辑:”Droid Sans” 在截图中显然是 Roboto 。该配置支持它,但结果是 the underlying file is a simlink:DroidSans.ttf -> Roboto-Regular.ttf
,DroidSans-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"
。但是,所有这些都被禁止在其他字体中的每个丢失的字形中被尝试。大概可以使用"elegant"
或"compact"
的 font-variant
选择一个子集,并通过设置文本 lang="ja"
?然而,我看不到 Droid Sans Fallback 在所有使用,所以也许 fallbacks 不工作在 WebKit 🙁
免责声明:以上适用于股票 Android,使用股票浏览器和/或 Chrome 。我相信它也适用于 WebView(默认配置) 但尚未测试。
在理论上,制造商可以使用其他字体,例如我听说三星做谣言。实际上,所有 Android 设备上的所有 Android 设备屏幕截图都包含三星,包括三星在内的我未经训练的眼睛是 Roboto 或 Droid,差异仅在于 Android 发行版。但是,这里是 Galaxy S3 没有将 Georgia
别名为 serif
,所以有些不同。
Firefox 是浏览器不同的一个很好的例子,它们切换到 Open Sans and Charis SIL Compact,然后切换到 replaced Open Sans with Clear Sans 。完整配置在 libpref/init/all.js 中,是 language-dependent 。据我所知,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 关于应用程序可用的字体。
次佳解决思路
这已经在这里回答:How to retrieve a list of available/installed fonts in android? 只有 3 种字体可用作 Android 的一部分; 正常 (Droid Sans),衬线 (Droid Serif) 和等离子体 (Droid Sans Mono) 。
第三种解决思路
从 Android 4.1 可以使用这个例子:
font-family: sans-serif-light;
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。