загружаемые шрифты - не удается загрузить некоторые шрифты google
Я играю сзагружаемыми шрифтами api . Я скачалпример приложения Google и также включил код в свой проект. Оба работают успешно, но некоторые шрифты постоянно не удается загрузить как из моего приложения, так и из примера приложения.
Я использую FontsContractCompat.requestFont
и получаю обратный вызов к onTypefaceRequestFailed(int reason)
с причиной 1. В документации говорится, что это означает "FAIL_REASON_FONT_NOT_FOUND".
Я предполагаю, что эти шрифты должны существовать, потому что: 1) они появляются в xml-файле, который поставляется с пример приложения, 2) они появляются в онлайн-списке шрифтов Google, и 3) они возвращаются из веб-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
1 ответ:
Это определенно странно. Я заметил, что многие (но не все) из этих шрифтов не имеют подмножества "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 , что интересно. Если вы сравниваете его с , предоставленным google, он затеняет большинство шрифтов, перечисленных в вопросе. Но он не получает все из них, включая шрифты "Zilla", "Ubuntu", "Barcode" и "Encode". Может быть, есть что-то общее между этими шрифтами, что можно использовать для дальнейшей фильтрации списка?
Интересно, что сгенерированный список также включает новые шрифты, отсутствующие в списке github, в том числе:
- VolKorn SC
- спектральный
- спектральный SC
- Седжвик-Авеню
- Sedgewick Ave Display
...."Барлоу", "Bellefair" и еще куча других. И некоторые из этих шрифтов действительно работают с Android.
Так что я предполагаю, что список в этом демо-файле просто старый. Возможно, были проблемы с лицензированием или технические проблемы, которые заставили его переключиться на другой список.Независимо от этого, возможно, стоит отправить запрос на вытягивание с более новым и более современным списком, который удаляет больше не предоставляемый шрифты и добавления в тех, которые предлагает API, которые протестированы и известны для работы с поставщиком.