2017-11-01 8 views
0

私はDownloadable fonts apiで遊んでいます。 Google sample applicationをダウンロードし、私のプロジェクトにコードを組み込んでいます。どちらも正常に実行されますが、一部のフォントはアプリケーションからもサンプルアプリケーションからも一貫してダウンロードできません。ダウンロード可能なフォント - 一部のGoogleフォントをダウンロードできません

私はFontsContractCompat.requestFontを使用し、理由1のonTypefaceRequestFailed(int reason)へのコールバックを取得します。ドキュメントには、「FAIL_REASON_FONT_NOT_FOUND」というメッセージが表示されます。私はので、それらのフォントが存在しなければならないと仮定し :1)彼らは、サンプルアプリケーションが付属してxmlファイルに表示され、2)彼らはonline list of Google Fontsに表示され、3)彼らは、開発者のWeb API(ここでhttps://www.googleapis.com/webfonts/v1/webfonts?key=

から復帰します失敗したフォントのリストです: Angkor Archivo Asap Condensed Baloo Bhaijaan Baloo Tammudu Battambang Bayon Bellefair BioRhyme Expanded Bokor Cabin Condensed Chau Philomene One Chenla Content Dangrek Encode Sans Encode Sans Condensed Encode Sans Expanded Encode Sans Semi Condensed Encode Sans Semi Expanded Fasthand Faustina Freehand Hanuman Khmer Koulen Libre Barcode 128 Libre Barcode 128 Text Libre Barcode 39 Libre Barcode 39 Extended Libre Barcode 39 Extended Text Libre Barcode 39 Text Mada Manuale Metal Moul Moulpali Mukta Mukta Mahee Mukta Malar Nokora Open Sans Condensed Preahvihear Roboto Condensed Saira Saira Condensed Saira Extra Condensed Saira Semi Condensed Sedgwick Ave Sedgwick Ave Display Siemreap Suwannaphum Taprom Ubuntu Condensed Zilla Slab Zilla Slab Highlight

+0

https://fonts.google.com/download?family=Angkorというリンクからフォントをダウンロードできましたが、なぜそれがapiで動作しないのか分かりません –

+0

ありがとうございました。私もそれを試しました.. –

答えて

0

これは間違いなく奇妙です。私は、これらのフォントの多く(ただしすべてではない)に "latin"または "latin-ext"サブセットがないことを知ったので、それらを自動フィルターする方法のように見えました。私は一緒に少しのpython2スクリプトを投げてAPI全体にフォントリストを尋ね、それを "latin"にフィルターし、新しいフォントファミリリソースファイルとして残したものを出力します。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のリストで新しいフォントNOT、含まれています:スペクトラル

  • VolKorn SC
  • スペクトラルSC
  • Sedgewickアヴェ
  • Sedgewickアベニュー表示

.... "Barlow"、 "Belle公正な "、そしてより多くの束。これらのフォントの一部はAndroidで動作するようです。

私は、デモファイルのリストがちょうど古いと推測しています。ライセンスの問題や技術的な問題があって、リストを切り替える必要があったのかもしれません。

提供されていないフォントを削除し、APIが提供するものに加えて、テスト済みで動作することがわかっている最新の最新のリストをプルリクエストして提出する価値があるかもしれませんプロバイダ。

+0

私はもはやプロジェクトに取り組んでいませんが、あなたは答えが信用に値するほど役に立つと思われます。彼らが同じ問題に遭遇すると、他の人がそれを楽しむだろうと確信しています(そして、私は、率直に言って驚いています。 –

関連する問題