Android 可下载字体-can';我不能下载一些谷歌字体

Android 可下载字体-can';我不能下载一些谷歌字体,android,fonts,google-font-api,google-fonts,Android,Fonts,Google Font Api,Google Fonts,我在玩。我下载了,并将代码合并到我的项目中。两者都成功运行,但一些字体始终无法从我的应用程序和示例应用程序下载 我使用FontsContractCompat.requestFont并获得一个回调,返回到onTypefaceRequestFailed(int原因),原因为1。文件上说它的意思是“失败的原因”找不到“字体”。 我假设这些字体应该存在,因为:1)它们出现在示例应用程序附带的xml文件中,2)它们出现在中,3)它们从开发者web api返回(https://www.googleapis.

我在玩。我下载了,并将代码合并到我的项目中。两者都成功运行,但一些字体始终无法从我的应用程序和示例应用程序下载

我使用
FontsContractCompat.requestFont
并获得一个回调,返回到
onTypefaceRequestFailed(int原因)
,原因为1。文件上说它的意思是“失败的原因”找不到“字体”。 我假设这些字体应该存在,因为:1)它们出现在示例应用程序附带的xml文件中,2)它们出现在中,3)它们从开发者web api返回(
https://www.googleapis.com/webfonts/v1/webfonts?key=

以下是失败字体的列表:

吴哥
阿奇沃
尽快浓缩
巴鲁·巴扬
巴鲁塔姆杜
马德望
巴永
贝勒菲尔
生物韵扩展
博科
舱内冷凝
周菲罗门一号
钦拉
内容
扁担
编码SAN
压缩编码
扩展的编码SAN
半压缩编码
编码SAN半扩展
速记
福斯蒂纳
徒手画的
哈努曼
高棉语
库伦
自由条码128
自由条码128文本
自由条码39
自由条码39扩展
自由条形码39扩展文本
自由条码39文本
玛达
手册
金属
摩尔
穆尔帕里
穆克塔
穆克塔马希
穆克塔马拉
诺可拉
开放式Sans压缩
前卫
机器人浓缩
赛拉
赛拉浓缩
赛拉超浓缩
赛拉半浓缩
塞奇威克大道
塞奇威克大道显示器
暹粒
苏万那蓬
塔普伦
Ubuntu浓缩版
齐拉板

Zilla Slab Highlight

这确实很奇怪。我注意到很多(但不是全部)字体没有“拉丁”或“拉丁ext”子集,所以这似乎是一种自动过滤它们的方法。我创建了一个小python2脚本,它向API请求整个字体列表,然后过滤它们的“拉丁文”,并将剩下的内容输出为新的字体系列资源文件,您可以将其重定向到
family\u names.xml

用法:
fontlist.py,这很有趣。如果您将其与进行比较,它确实会使问题中列出的大多数字体变黑。但它并没有得到所有的字体,包括“Zilla”、“Ubuntu”、“条形码”和“编码”字体。也许这些字体也有一些共同点,可以用来进一步过滤列表

有趣的是,生成的列表还包括github列表中没有的新字体,包括:

  • 沃克恩SC
  • 光谱的
  • 光谱SC
  • 塞吉威克大街
  • 塞吉威克大街显示器
。这些字体中的一些似乎确实适用于Android

所以我猜这个演示文件中的列表是旧的。可能是由于许可证问题或技术问题,所以有必要改变列表


无论如何,提交一个包含更新和最新列表的pull请求可能是值得的,该列表删除不再提供的字体,并添加API提供的、经过测试且已知可与提供商一起使用的字体。

我可以通过此链接下载字体:但我不确定它为什么不能与API一起使用。我也试过…有同样的问题。当文档说“我可以使用哪些字体?整个谷歌字体开源集合!访问浏览”时,我真的很困惑为什么一些字体无法加载。我不再参与这个项目,但你的回答似乎很有帮助,值得表扬。我相信,如果其他人遇到同样的问题,他们也会喜欢(坦率地说,我很惊讶,几乎没有人已经这么做了)
#!/usr/bin/python
# fontlist.py by fat-tire
#
# Collects Google provider latin & latin-ext font families and creates a replacement for
# https://github.com/googlesamples/android-DownloadableFonts/blob/master/app/src/main/res/values/family_names.xml
#
# See https://developers.google.com/fonts/docs/developer_api for more info on the Google Fonts API
#
# Usage:     fontlist.py <API_KEY> > family_names.xml

import sys, urllib2, json

if len(sys.argv) != 2:
    print "Usage:"
    print "  fontlist.py <API_KEY> > family_names.xml"
    print "No Google Fonts API key?  Get one at https://developers.google.com/fonts/docs/developer_api#APIKey"
    sys.exit(0)

APIKEY=sys.argv[1]
url="https://www.googleapis.com/webfonts/v1/webfonts?key="

opener = urllib2.build_opener()
try:
    request = urllib2.Request(url + APIKEY)
    conn = opener.open(request)
except Exception, e:
    print "Whoopsie.  Got a " + str(e.code) + " " + str(e.reason) + " error.  You sure that API is legit?"
    sys.exit(1)
data = json.loads(conn.read())

count = 0
items = data["items"]

print "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
print "<!-- Collected from " + url+APIKEY + " -->"
print """<resources>
    <string-array name="family_names">"""
for key in items:
    if "latin" in key["subsets"]:
        print " "*10 + "<item>" + key["family"] + "</item>"
        count = count + 1
print """    <!--Total:  """ + str(count) + """-->
    </array>
</resources>"""
sys.exit(0)