android - Android中的默认字体系列是什么?

标签 android fonts font-family roboto

从 API 16 开始,引入了 Jellybean Roboto 作为可用的字体系列。查看 Android 16 中的"new"功能 here .

指定 android:fontFamily="sans-serif" (API 16+ 中的机器人)在 TextView 上默认 fontFamilyTextView ?

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

相当于

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fontFamily="sans-serif" />

?

来自 Material design typography website :

"Roboto and Noto are the standard typefaces on Android and Chrome."

来自 Wiki ,

"Roboto is a sans-serif typeface family developed by Google as the system font for its mobile operating system Android."

我在文档中没有看到默认的 fontFamily安卓是。请参阅引用资料:

最佳答案

d.android.com 上没有关于字体系列名称的文档。但是,如果您查看 AOSP,默认字体是在 android.graphics.* 中加载的。 FontListParser/system/etc/fonts.xml (Android 5.0+) 或 /system/etc/system_fonts.xml (Android 4.1) 加载默认字体。默认字体加载到 Typeface#init .

这两个 XML 文件有一些文档。第一种字体是默认字体。您可以从设备中提取/system/etc/fonts.xml。设备制造商或自定义 ROM 可能会更改默认系统字体。

fonts.xml(API 21+)

NOTE: this is the newer (L) version of the system font configuration, supporting richer weight selection. Some apps will expect the older version, so please keep system_fonts.xml and fallback_fonts.xml in sync with any changes, even though framework will only read this file.

All fonts withohut names are added to the default list. Fonts are chosen based on a match: full BCP-47 language tag including script, then just language, and finally order (the first font containing the glyph).

Order of appearance is also the tiebreaker for weight matching. This is the reason why the 900 weights of Roboto precede the 700 weights - we prefer the former when an 800 weight is requested. Since bold spans effectively add 300 to the weight, this ensures that 900 is the bold paired with the 500 weight, ensuring adequate contrast.

system_fonts.xml(API 16-20)

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.

如果你解析 fonts.xml 文件,你可以找到哪个字体系列使用哪个字体(见 here):

╔════╦════════════════════════════╦═════════════════════════════╗
║    ║ FONT FAMILY                ║ TTF FILE                    ║
╠════╬════════════════════════════╬═════════════════════════════╣
║  1 ║ casual                     ║ ComingSoon.ttf              ║
║  2 ║ cursive                    ║ DancingScript-Regular.ttf   ║
║  3 ║ monospace                  ║ DroidSansMono.ttf           ║
║  4 ║ sans-serif                 ║ Roboto-Regular.ttf          ║
║  5 ║ sans-serif-black           ║ Roboto-Black.ttf            ║
║  6 ║ sans-serif-condensed       ║ RobotoCondensed-Regular.ttf ║
║  7 ║ sans-serif-condensed-light ║ RobotoCondensed-Light.ttf   ║
║  8 ║ sans-serif-light           ║ Roboto-Light.ttf            ║
║  9 ║ sans-serif-medium          ║ Roboto-Medium.ttf           ║
║ 10 ║ sans-serif-smallcaps       ║ CarroisGothicSC-Regular.ttf ║
║ 11 ║ sans-serif-thin            ║ Roboto-Thin.ttf             ║
║ 12 ║ serif                      ║ NotoSerif-Regular.ttf       ║
║ 13 ║ serif-monospace            ║ CutiveMono.ttf              ║
╚════╩════════════════════════════╩═════════════════════════════╝

关于android - Android中的默认字体系列是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39535475/

相关文章:

c++ - 测试是否安装了字体 (Win32)

java - 无法导入 java.awt.font 类

Css:字体系列加载 native 而不是自定义

css - Firefox 无法识别字体

android - 在android中逐步实现注册过程的方法

android - Json 数据未显示在 ListView 中

android - 如何在Xamarin.Form应用程序中获取Android底部软件导航栏的高度?

java - Java中的Kotlin泛型错误

python - 如何在 pygame 上使用字体系列?

c++ - 您如何确定全局构造函数的优先级?