我正在玩Downloadable fonts api.我下载了Google sample application,还将代码合并到了我的项目中.两者都可以成功运行,但是某些字体始终无法从我的应用程序和示例应用程序中下载.
我使用FontsContractCompat.requestFont并使用原因1回调了onTypefaceRequestFailed(int原因).文档说这意味着“ FAIL_REASON_Font_NOT_FOUND”.
我认为这些字体应该存在是因为:1)它们出现在示例应用程序随附的xml文件中; 2)它们出现在online list of Google Fonts中; 3)它们从开发者网络API(https://www.GoogleAPIs)返回. com / webFonts / v1 / webFonts?key =)
这是失败字体的列表:
吴哥
Archivo
尽快浓缩
Baloo Bhaijaan
Baloo Tammudu
马德望
巴永
贝尔费尔
BioRhyme扩展
博克
冷凝舱
洲菲洛蒙一号
晨拉
内容
丹格雷克
编码Sans
编码Sans压缩
编码Sans展开
编码Sans Semi Condensed
编码Sans Semi展开
快手
福斯蒂纳
写意
哈努曼
高棉语
库伦
自由条形码128
自由条形码128文本
自由条形码39
libre barcode 39扩展
libre barcode 39扩展文本
自由条形码39文字
真田
手册
金属
ul
穆尔帕利
木塔
Mukta Mahee
Mukta Malar
Nokora
打开Sans压缩
前言
浓缩的Roboto
赛拉
塞拉浓缩
赛拉特级浓缩
赛拉半浓缩
塞奇威克大街
塞奇威克大道展示
暹粒市
w
塔普罗姆
Ubuntu压缩
Zilla平板
Zilla平板亮点
解决方法:
绝对很奇怪.我观察到,其中许多(但不是全部)字体没有“ 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.xmlimport sys, urllib2, Jsonif 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 = 0items = 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 + 1print """ <!--Total: """ + str(count) + """--> </array></resources>"""sys.exit(0)
该脚本输出一个有趣的family_names.xml.如果将其与one provided by google进行比较,它将使问题中列出的大多数字体变黑.但是并不能全部使用,包括“ Zilla”,“ Ubuntu”,“ barcode”和“ Encode”字体.也许这些字体也有一些共同点,可以用来进一步过滤列表?
有趣的是,生成的列表还包括不在github列表中的新字体,包括:
> VolKorn SC
>光谱
>光谱SC
>塞奇威克大街
> Sedgewick Ave显示屏
….“ barlow”,“ Bellefair”等.而且其中某些字体似乎确实可以在AndroID上使用.
所以我猜该演示文件中的列表很旧.可能是由于许可问题或技术问题,因此有必要切换列表.
无论如何,都应该提交一个具有更新的更新列表的拉取请求,以删除不再提供的字体,并添加经过API测试并已知可与提供程序一起使用的字体.
总结以上是内存溢出为你收集整理的android-可下载的字体-无法下载某些Google字体全部内容,希望文章能够帮你解决android-可下载的字体-无法下载某些Google字体所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)