Подтвердить что ты не робот

Есть ли способ вернуться к Typeface.SERIF в StaticLayout?

Я создаю собственный класс View, который отображает текст с помощью StaticLayout с пользовательским шрифтом, загруженным из файла активов .ttf. Основной вид шрифта - шрифт с засечками, а свойства TrueType в файле шрифта указывают на его засечку. Тем не менее, для символов, не входящих в шрифт, Android возвращается к шрифту sans-serif (он выглядит как Roboto или Noto, в зависимости от версии Android).

Есть ли способ контролировать это, чтобы механизм компоновки Android возвращался к шрифту с засечками? (Как, может быть, какая-то волшебная строка для перехода на Paint#setFontFeatureSettings() или, возможно, способ указать стек шрифтов для использования в Paint?)

Любое решение должно работать, когда приложение будет распространено, поэтому играть в игры с файлами конфигурации Android не является вариантом. Кроме того, я знаю этот вопрос (который остается без ответа через четыре года), но моя проблема немного другая, хотя решение обеих проблем может быть очень хорошо быть тем же.

4b9b3361

Ответ 1

С Lollipop существует скрытый класс FontFamily и скрытый метод Typeface.createFromFamilies. Если вы очень осторожны, вы, вероятно, можете использовать этот материал с помощью отражения или другого обмана, но будьте готовы отказаться от публичного API.