如何将非拉丁语言用于 Android 可下载字体?

How to use non-Latin languages for Android downloadable fonts?

阅读 documentation for Google Fonts API for Android 后,我成功地添加了除常规和粗体之外的不同字体粗细。但是,下载的字体不显示非拉丁字符。可以看出非拉丁字母(即西里尔字母)和正确显示的拉丁字母(如数字和标点符号)之间的区别。

我什至试过复制 API 的网络版本,像这样:

<?xml version="1.0" encoding="utf-8"?>
<font-family
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:fontProviderAuthority="com.google.android.gms.fonts"
    app:fontProviderPackage="com.google.android.gms"
    app:fontProviderQuery="name=Montserrat&amp;subset=cyrillic"
    app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
</font-family>

但什么也没发生,因为 subset 不是有效关键字。

是否有任何方法可以指定应包含哪些脚本,就像网络版本一样?

暂不支持。您必须使用支持西里尔文符号的自定义字体才能应用西里尔文。将其放入 'font' 文件夹并使用 ResourcesCompat.getFont(context, R.font.myfont) .

现在,Google 字体 API 默认支持可下载字体的非拉丁字符。我已经在 this sample project 上使用 29.0.0 构建工具对此进行了测试。