【发布时间】:2011-04-01 17:40:33
【问题描述】:
在 Java 中我会这样做:
java.awt.GraphicsEnvironment ge =
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] fonts = ge.getAllFonts();
是否有 Android 等价物?
【问题讨论】:
在 Java 中我会这样做:
java.awt.GraphicsEnvironment ge =
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] fonts = ge.getAllFonts();
是否有 Android 等价物?
【问题讨论】:
摘自 Mark Murphy 在 Android 开发者邮件列表中的回答:
http://developer.android.com/reference/android/graphics/Typeface.html
只有三种字体:普通 (Droid Sans)、衬线 (Droid Serif) 和 等宽(Droid Sans Mono)。
虽然可能有其他字体 埋在 WebKit 的某个地方,他们 似乎无法访问 WebKit 之外的开发人员。 :-(
唯一的其他字体是您与应用程序捆绑的任何 TrueType 字体。
编辑:Roboto 是 Android 4.0 附带的一种新字体。您可以使用这个库项目在所有版本中使用它,回到 API 级别 4 https://github.com/mcalliph/roboto-text-view
【讨论】:
关于实际问题,这是一种创建所有已安装字体列表的方法:
String path = "/system/fonts";
File file = new File(path);
File ff[] = file.listFiles();
数组 ff[] 将包含所有字体文件。
【讨论】:
只有 3 种字体可以作为 android 的一部分;普通(Droid Sans),衬线(Droid Serif), 和等宽(Droid Sans Mono)。
应用可以包含自己的 truetype 字体,但不能安装它们以供其他应用使用。
几个关于字体的链接:
【讨论】:
这个答案不是编程解决方案,但实际的 ttf 字体似乎存储在 /system/fonts 目录中。使用adb shell ls /system/fonts 列出它们,或使用adb pull /system/fonts 将它们全部传输到连接的计算机(adb 将创建一个名为“fonts”的文件夹)。
【讨论】:
从Android 29开始,给你一个android.graphics.fonts.Font的实际集合,有SystemFonts.getAvailableFonts()
【讨论】:
Android 包含 3 种基本字体,但与 iOS 不同的是,它允许您使用几乎任何您喜欢的字体。您可以简单地将其嵌入到您的应用程序中,而不是像 Apple 那样受限于预设的字体列表(Apple 不允许字体嵌入)。很方便。
请注意,这是针对 Android 本身的,但网络浏览器(包括预装的基本 Android 网络浏览器)确实支持所有标准 HTML 字体。
【讨论】: