gpt4 book ai didi

android - 可下载字体 - 无法下载某些谷歌字体

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:41 24 4
gpt4 key购买 nike

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

我使用 FontsContractCompat.requestFont 并获得对 onTypefaceRequestFailed(int reason) 的回调,原因为 1。文档说这意味着“FAIL_REASON_FONT_NOT_FOUND”。我假设这些字体应该存在,因为:1) 它们出现在示例应用程序附带的 xml 文件中,2) 它们出现在 online list of Google Fonts 中。 , 和 3) 它们从开发人员网络 API (https://www.googleapis.com/webfonts/v1/webfonts?key=)

返回

这是失败字体的列表:
吴哥
存档
尽快浓缩
Baloo Bhaijaan
巴鲁塔穆杜
马德望
巴戎
贝尔费尔
BioRhyme 扩展
波哥
精简舱
洲菲洛梅一号
真腊
内容
当列克
编码 Sans
编码 Sans Condensed
编码 Sans 展开
编码 Sans 半浓缩
Encode Sans Semi 展开
快手
福斯蒂娜
写意
哈努曼
高棉语
库伦
自由条形码 128
自由条形码 128 文本
自由条形码 39
自由条形码 39 扩展
Libre Barcode 39 扩展文本
自由条形码 39 文本
马达
手册
金属
模具
穆尔帕利
穆克塔
穆克塔马希
穆克塔马拉
野仓
打开无压缩
预闻
机器人浓缩
纱良
Saira浓缩
Saira 超浓缩
Saira半浓缩
塞奇威克大街
塞奇威克大街展示
暹粒市
苏旺那蓬
舞会
Ubuntu 精简版
齐拉平板
Zilla Slab 亮点

最佳答案

这确实很奇怪。我观察到许多(但不是全部)这些字体没有“latin”或“latin-ext”子集,因此这似乎是一种自动过滤它们的方法。我拼凑了一个小的 python2 脚本,它向 API 询问整个字体列表,然后将它们过滤为“拉丁”并将剩下的输出为新的字体系列资源文件,您可以将其重定向到 family_names.xml .

用法:fontlist.py <API_KEY>

#!/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)

此脚本输出 family_names.xml这很有趣。如果将它与 one provided by google 进行比较,它确实涂黑了问题中列出的大部分字体。但它并没有得到所有的字体,包括“Zilla”、“Ubuntu”、“Barcode”和“Encode”字体。也许这些字体也有一些共同点可以用来进一步过滤列表?

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

  • 沃尔科恩 SC
  • 光谱
  • 光谱SC
  • 塞奇威克大街
  • Sedgewick Ave Display

.....“Barlow”、“Bellefair”等等。其中一些字体似乎确实适用于 Android。

所以我猜测该演示文件中的列表只是旧的。也许存在许可问题或技术问题使得有必要切换列表。

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

关于android - 可下载字体 - 无法下载某些谷歌字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47051069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com