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

2023-12-29

从 API 16 开始,Jellybean Roboto 被引入作为可用的字体系列。了解 Android 16 中的“新功能”here https://developer.android.com/about/versions/android-4.1.html#Fonts.

指定android:fontFamily="sans-serif"(API 16+ 中的 Roboto)TextView默认值fontFamily of the TextView?

Is

<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" />

?

From 材料设计排版网站 https://material.google.com/style/typography.html#:

“Roboto 和 Noto 是 Android 和 Chrome 上的标准字体。”

From Wiki https://en.wikipedia.org/wiki/Roboto,

“Roboto 是 Google 开发的无衬线字体家族 其移动操作系统 Android 的系统字体。”

我在文档中没有看到默认值是什么fontFamilyAndroid 的是。参见参考资料:

  • https://developer.android.com/reference/android/R.attr.html#fontFamily https://developer.android.com/reference/android/R.attr.html#fontFamily
  • android:fontFamily 的有效值及其映射到什么? https://stackoverflow.com/questions/19691530/valid-values-for-androidfontfamily-and-what-they-map-to
  • https://developer.android.com/about/versions/android-4.1.html#Fonts https://developer.android.com/about/versions/android-4.1.html#Fonts
  • http://alvinalexander.com/photos/android-roboto-fonts-examples http://alvinalexander.com/photos/android-roboto-fonts-examples

d.android.com 上没有有关字体系列名称的文档。但是,如果您查看 AOSP,会发现默认字体加载在android.graphics.*. The 字体列表解析器 https://github.com/android/platform_frameworks_base/blob/master/graphics/java/android/graphics/FontListParser.java从加载默认字体/system/etc/fonts.xml(安卓 5.0+)或/system/etc/system_fonts.xml(安卓4.1)。默认字体加载在字体#init https://github.com/android/platform_frameworks_base/blob/master/graphics/java/android/graphics/Typeface.java.

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

字体.xml(API 21+)

注意:这是系统字体配置的较新 (L) 版本, 支持更丰富的权重选择。有些应用程序会期望较旧的 版本,所以请保持system_fonts.xml和fallback_fonts.xml同步 进行任何更改,即使框架只会读取此文件。

所有没有名称的字体都会添加到默认列表中。字体已选择 基于匹配:完整的 BCP-47 语言标签,包括脚本,然后只是 语言,最后是顺序(包含字形的第一个字体)。

出场顺序也是重量匹配的决定因素。这是 Roboto 的 900 个权重领先于 700 个权重的原因 - 我们 当需要 800 重量时更喜欢前者。由于粗体跨度 有效地为权重添加 300,这确保 900 是粗体 搭配500配重,保证足够的对比度。

系统字体.xml(API 16-20)

系统字体

此文件列出了所有支持的字形默认使用的字体系列。 每个条目由一个家族、该家族支持的各种名称组成,以及 最多四个字体文件。字体文件按照它们所使用的样式的顺序列出 支持:常规、粗体、斜体和粗斜体。如果列出的样式少于四种,则 列出的其他字体文件将支持没有关联字体文件的样式。

第一个家族也是默认字体,处理未指定的字体请求 具体字体名称。

系统字体未处理的任何字形都将导致搜索后备字体。 默认后备字体在文件 /system/etc/fallback_fonts.xml 中指定,并且 是一个可选文件,可由供应商提供以指定要使用的其他后备字体 在 /vendor/etc/fallback_fonts.xml 中。

如果您解析 fonts.xml 文件,您可以找到哪个字体系列使用哪种字体(请参阅here https://stackoverflow.com/a/29533686/1048340):

╔════╦════════════════════════════╦═════════════════════════════╗
║    ║ 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              ║
╚════╩════════════════════════════╩═════════════════════════════╝
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 中的默认字体系列是什么? 的相关文章

  • 如何访问 Android 心率传感器原始数据? (反射光,不是心跳)

    心率传感器上的 android sdk 仅返回计算出的 bpm 我对此不感兴趣 我需要访问 Android 心率传感器原始数据 例如就反射值的强度而言将会很大 因为心率传感器基本上使用 LED 并测量随时间变化的反射率 如果可能 访问由任何
  • 用于 Kotlin 中单元测试的 BuildConfigField 模拟

    我正在尝试尽可能多地涵盖Kotlin Android 库我遇到了有关自定义 BuildConfig 变量的问题 更广为人知的是buildConfigField 我想模拟这个变量来测试两者true and false values 从 Gra
  • 如何制作像 Google+ 应用程序中那样的气泡? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有谁知道如何使用 Google An
  • 使用同一个侦听器的多个活动

    我有 4 个活动 它们都包含一个 xml 页脚 其中包含 4 个按钮 每个活动一个 我现在想为这些按钮设置 onclicklistener 它是页脚中的自制菜单 问题是 如何使用侦听器以便重用代码 我有两个想法 创建一个实现 onclick
  • 音频流的最佳实践

    我正在编写一个应用程序来播放远程服务器的音频 我尝试了多种方法来实现流音频 但它们对我来说都不够好 这就是我尝试过的 幼稚地使用 MediaPlayer 就像是 MediaPlayer player new MediaPlayer play
  • Android Camera.takePicture() 有时不返回?

    我正在编写一个Android 拍照应用程序 该代码在 onPreviewFrame byte data Cameracamera 中从预览中获取帧后进行一些处理 问题在于 android hardware Camera 的函数 takePi
  • 写入 Android UI Automator 输出控制台

    我正在 Android UI Automator 上编写一个小包装器 通常我们可以在控制台看到测试用例的状态 我可以访问它并添加我自己的消息吗 我努力了System out println 但这没有用 有什么办法可以做到这一点吗 您可以使用
  • Android L,使用 joda.time 库的异常

    该应用程序适用于所有设备 包括 nexus 5 和 nexus 7 在 Android L 预览版上运行相同的应用程序时 应用程序崩溃了 我一直在调试 并且调用 DateTime 构造函数发现了异常 public static String
  • Toast 消息消失后​​完成活动吗?

    有谁知道 是否有可能对 Toast 消息执行某些操作 在我的情况下完成活动 将被关闭 您只需创建一个Thread持续时间只要Toast显示 然后您就可以完成您的Activity public void onCreate Bundle sav
  • 在 Android 中加密/解密字符串的简单方法

    我的问题是如何加密String String AndroidId Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceSta
  • 如何在android中的谷歌地图上聚焦标记

    我只是想知道我们是否可以关注 Android 应用程序中添加的标记 如果是 怎么办 或者有没有其他方法可以完成这项任务 可以说我使用下面的代码添加了一个标记 map addMarker new MarkerOptions title tit
  • 我在 android studio 中使用 kotlin 时出现错误

    为什么会出现这个错误 09 12 16 36 31 502 1886 1886 com getloction nourmedhat smartgate getlocation E AndroidRuntime 致命异常 main 进程 co
  • 如何将 JSON 数据从 Android 发送到 php url?

    我想将登录信息从我的应用程序发送到 php url 因为这我的应用程序将崩溃 任何人都可以帮助我解决这个问题 这是我的服务器登录方法 我想将数据发送到此登录方法 Method public method login Parameters 3
  • 活动加载缓慢

    我的应用程序中有大约 50 个活动 但其中一个活动非常慢 我的意思是当我按下按钮进入该活动时 需要很长时间 有时会出现黑屏 在该活动中 我有一个按钮 如果我单击该按钮 则需要很长时间才能执行 代码很轻 只有一个Button EditText
  • Android 的 Intent 和 Parcelable 对象

    为什么我需要打包我的对象 即使我只需将其发送到同一任务的另一个线程 实际上 我需要打开一个甚至可以在同一线程 主线程 上运行的活动 换句话说 为什么 Google 不提供一个 startActivity 版本 它采用通用对象广告参数而不是捆
  • TextView.setMaxLines 不起作用?

    在我的应用程序中 我有一个屏幕 其中显示一些文本 然后显示一张照片 文本的长度是可变的 有时根本没有 有时很多 所以我想对其进行设置 以便文本永远不会占用超过几行 但可以滚动 为下面的图像留下足够的空间 我这部分的视图组件是以编程方式创建的
  • 了解应用程序在后台时何时收到 Firebase 消息

    我知道这个标题有同样的问题 但不幸的是它没有得到正确的回答 它被接受了 here https stackoverflow com questions 37711082 how to handle notification when app
  • XML 配置中的 screenName 不起作用

    我刚刚在我的应用程序中添加了对 Google Analytics 分析 的支持 但我无法
  • 动态更改按钮上的图像视图

    在我的应用程序中 我有按钮和ImageView 当我按下按钮时我想改变ImageView 我的可绘制文件夹中有 5 张图像 按下按钮时 ImageView 根据按钮单击一张一张地更改图像 我想要它的解决方案 感谢任何可以提供帮助的人 维护一
  • 在数组列表中过滤 Filterable 不取消之前的过滤

    我看过过滤器方法文档 其中显示调用过滤器会取消所有先前未执行的过滤请求 并发布一个稍后将执行的新过滤请求 但我收到的实际回调有些不同 在我的实现中 它不会取消先前的过滤器请求并调用publishResults 最近一次搜索条件后的上一次搜索

随机推荐

  • 使用 AcquireTokenSilent 刷新 access_token

    我有一个 asp net core MVC 应用程序 它将 access token 传递给下游 API 经过一番努力 我弄清楚了如何使用 MSAL Net 获取 access token 但访问令牌每小时都会过期 因此我必须刷新它 所以我
  • 如何从 Swift 中的 void 闭包返回值?

    我有一个函数可以查询某个用户以访问该用户的数组 我返回用户并且可以访问他们的数组 但是 该调用是异步的 返回的值为零 该函数总体上有一个完成处理程序 但是 内部有一个查询调用 并且默认情况下该查询返回 Void func getAllMat
  • Python在类中调用方法

    我在这里的表现远远超出了我的承受能力 但请耐心等待这位 Python 业余爱好者 我是一名 PHP 开发人员 之前几乎没有接触过这种语言 我想做的是调用类中的方法 听起来很简单吗 我完全困惑于 self 指的是什么 以及在类内部和类外部调用
  • 在 PHP 中将数组元素移动到新索引

    我正在寻找一个简单的函数来将数组元素移动到数组中的新位置并对索引重新排序 以便序列中没有间隙 它不需要使用关联数组 有人对此有想法吗 a array 0 gt a 1 gt c 2 gt d 3 gt b 4 gt e print r mo
  • php 中子类构造函数如何与父类构造函数交互?

    现在 我正在开发两个类用于与 MySQL 数据库交互 一个类扩展了另一个类 他们来了 class DB MySQL protected dbuser protected dbpass protected dbhost protected d
  • 在 Android 模拟器中运行时无法更改 Chrome 自定义选项卡导航栏颜色

    为 Chrome 自定义选项卡指定颜色似乎有点奇怪 您可以指定三种颜色 工具栏颜色 辅助工具栏 颜色和导航栏颜色 似乎有两种方法可以控制这些 一种是直接在 Builder 中设置这三个属性 如下所示 val builder CustomTa
  • MVC-路由,为什么我不能忽略默认值,匹配的路由不包含“控制器”路由值,这是必需的

    我有这个配置 public static void RegisterRoutes RouteCollection routes routes IgnoreRoute resource axd pathInfo routes MapRoute
  • Android 在簇标记上打开 InfoWindow

    我实现了一个选项来查找距离实际位置最近的标记 我在带有自定义信息窗口的 ClusterItem 中拥有所有标记 在没有聚类的普通谷歌地图上我可以使用marker showInfoWindow 然后就会弹出信息窗口 使用聚类时似乎没有这样的方
  • S3 Select 可以搜索多个对象吗?

    我正在测试S3选择 https aws amazon com blogs aws s3 glacier select 据我从示例中了解到 您可以将单个对象 CSV 或 JSON 视为数据存储 我希望每个 S3 对象都有一个 JSON 文档
  • 查找两个日期之间天数的算法

    我正在研究一个学校问题 以找出算法来查找两个给定日期之间的天数 然后在 Java 中实现该算法 感兴趣的算法在这里找到 http www sunshine2k de articles coding datediffindays calcdi
  • PDF 抓取:获取公司和子公司表格

    我正在尝试刮这个PDF https drive google com file d 1kuqjeKl3cESlgth2Pn LY8dxMjqUyoYU view usp sharing包含有关公司子公司的信息 我看过很多使用 R 包 Tab
  • Cakephp 3 回调方法未到达

    我对 afterDelete 回调方法有疑问 我不能使用它们 在我的一个 存储 插件控制器中 我想删除一条记录 然后我想做一些其他的事情 但没有达到回调方法 我已经通过在 afterDelete 回调方法中添加日志消息来检查这一点 这是我删
  • 禁用的单选按钮在回发后失去值

    我有两个单选按钮 在页面加载时使用 javascript 禁用它们 RadioButton1默认情况下处于选中状态 当我单击按钮进行回发时 RadioButton1不再检查 有人知道为什么吗 这是我的代码示例 后面的代码是空的
  • 如何使用 Sikuli 中的“type”函数检查变量类型

    西库里有自己的功能type用于打字 有没有办法调用 python jython 函数type 模块builtins无法导入 我当然可以使用是实例相反 但我只是好奇是否有可能超出 Sikuli 范围并调用不 覆盖 的 python 内置函数t
  • 避免 iOS 浏览器中 204 响应的表单重定向

    我在 hubspot 中创建了一个表单 在 iPhone 和 iPad 等 IOS 设备中 使用 HTTP 204 响应成功发布表单后 页面将重定向到操作 url 但在 Windows 和 Android 中 它仍保留在同一页面中 我们有什
  • BigInteger阶乘的并行计算

    作为 BigDecimal 库的一部分 我需要计算任何给定非负整数的阶乘 所以我使用 Net 4 0System Numerics BigInteger能够存储大量数字 这是我正在使用的函数 private BigInteger Facto
  • C# 和 F# lambda 表达式代码生成

    让我们看一下 F 为简单函数生成的代码 let map add valueToAdd xs xs gt Seq map fun x gt x valueToAdd 生成的 lambda 表达式 F 函数值的实例 代码将如下所示 Serial
  • 使用 gmail 从 devise on Rails3 发送的确认电子邮件未到达

    我已经设置了以下内容 config environments development rb 29 ActionMailer Base delivery method smtp 30 ActionMailer Base perform del
  • 如何使用隐藏的 iframe + jquery 进行文件上传?

    我们都知道单独使用 jquery 是不可能完成文件上传的 但可以使用 jquery 和隐藏的 IFrame 来解决这个问题 我已经使用这种方法找到了四种解决方案 但不知道如何实现它们 这个解决方案可以在 Stackoverflow 上找到
  • Android 中的默认字体系列是什么?

    从 API 16 开始 Jellybean Roboto 被引入作为可用的字体系列 了解 Android 16 中的 新功能 here https developer android com about versions android 4