Получить мета-информацию из UIFont или CGFont - iOS, Swift - PullRequest
0 голосов
/ 18 ноября 2018

Я хочу получить метаданные шрифтов. Например: поддерживаемые языки, версия, лицензия и т. Д. Как я могу это сделать? Он отлично работает в приложении Mac Fonts. Мне нужно реализовать это на iOS. enter image description here

1 Ответ

0 голосов
/ 27 ноября 2018

Вы можете получить большую часть этой информации, используя CTFontCopyName. Например, вы можете напечатать авторское право и лицензию на шрифт следующим образом:

print(CTFontCopyName(font, kCTFontCopyrightNameKey))
print(CTFontCopyName(font, kCTFontLicenseNameKey))

Ключевые константы имеют формат kCTFont***NameKey и объявлены в CTFont.h.

Вы можете получить поддерживаемые языки, используя CTFontCopySupportedLanguages, но вы получите список идентификаторов языков BCP-47:

import CoreText
import Foundation

let font = CTFontCreateWithName("Helvetica" as CFString, 12, nil)
let languageIds = CTFontCopySupportedLanguages(font) as! [String]
print(languageIds.joined(separator: ", "))

// Output:

af, agq, ak, asa, ast, az, bas, be, bem, bez, bg, bm, br, bs, ca, ce, cgg, cs, cy, da, dav, de, dje, dsb, dyo, ebu, el, en, eo, es, et, eu, ewo, fi, fil, fo, fr, fur, fy, ga, gd, gl, gsw, guz, gv, haw, hr, hsb, hu, id, ig, is, it, jmc, ka, kam, kde, kea, khq, ki, kk, kl, kln, ksb, ksf, ksh, kw, lag, lb, lg, lkt, ln, lt, lu, luo, luy, lv, mas, mer, mfe, mg, mgh, mgo, mk, mn, ms, mt, naq, nb, nd, nl, nmg, nn, nnh, nyn, om, os, pl, pt, qu, rm, rn, ro, rof, ru, rw, rwk, saq, sbp, se, seh, ses, sg, sk, sl, smn, sn, so, sq, sr, sv, sw, teo, tg, tk, to, tr, twq, uk, uz, vi, vun, wae, xog, yav, yo, zu

Вы можете преобразовать их в понятные человеку названия языков, используя Locale. Вы, вероятно, хотите использовать системную локаль, выбранную пользователем:

let myLocale = Locale.autoupdatingCurrent
let languageNames = languageIds.compactMap({ myLocale.localizedString(forLanguageCode: $0) })
print(languageNames.joined(separator: ", "))

// Output:

Afrikaans, Aghem, Akan, Asu, Asturian, Azerbaijani, Basaa, Belarusian, Bemba, Bena, Bulgarian, Bambara, Breton, Bosnian, Catalan, Chechen, Chiga, Czech, Welsh, Danish, Taita, German, Zarma, Lower Sorbian, Jola-Fonyi, Embu, Greek, English, Esperanto, Spanish, Estonian, Basque, Ewondo, Finnish, Filipino, Faroese, French, Friulian, Western Frisian, Irish, Scottish Gaelic, Galician, Swiss German, Gusii, Manx, Hawaiian, Croatian, Upper Sorbian, Hungarian, Indonesian, Igbo, Icelandic, Italian, Machame, Georgian, Kamba, Makonde, Kabuverdianu, Koyra Chiini, Kikuyu, Kazakh, Kalaallisut, Kalenjin, Shambala, Bafia, Colognian, Cornish, Langi, Luxembourgish, Ganda, Lakota, Lingala, Lithuanian, Luba-Katanga, Luo, Luyia, Latvian, Masai, Meru, Morisyen, Malagasy, Makhuwa-Meetto, Metaʼ, Macedonian, Mongolian, Malay, Maltese, Nama, Norwegian Bokmål, North Ndebele, Dutch, Kwasio, Norwegian Nynorsk, Ngiemboon, Nyankole, Oromo, Ossetic, Polish, Portuguese, Quechua, Romansh, Rundi, Romanian, Rombo, Russian, Kinyarwanda, Rwa, Samburu, Sangu, Northern Sami, Sena, Koyraboro Senni, Sango, Slovak, Slovenian, Inari Sami, Shona, Somali, Albanian, Serbian, Swedish, Swahili, Teso, Tajik, Turkmen, Tongan, Turkish, Tasawaq, Ukrainian, Uzbek, Vietnamese, Vunjo, Walser, Soga, Yangben, Yoruba, Zulu

Я не знаю, как получить сценарии, поддерживаемые шрифтом.

...