fontFeatureSettings=smcp не работает в Android

Мне нужно показать текст SmallCaps в TextView. Я пытаюсь использовать приведенный ниже код:

<TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFeatureSettings="smcp"
        android:textColor="@color/black"
        android:textSize="16sp"
        android:text="TEXT" />

Но он просто показывает мне обычный текст, без эффекта SmallCaps. Еще пытаюсь программно установить (text1.fontFeatureSettings = "smcp"), но тоже безуспешно.

Как сделать текст SmallCaps в Android? Почему не работает fontFeatureSettings?

2 ответа

Решение

Чтобы эта функция работала, у вас должен быть шрифт, который на самом деле имеет символы маленьких заглавных букв - таким образом, чтобы он работал, передайте шрифт с маленькими заглавными буквами через app:fontFamily(android:fontFamily) например Aller Display, а затем используйте android:fontFeatureSettings="smcp" чтобы сделать это маленькими заглавными буквами.

Надеюсь, это поможет

редактировать

как @Cliabhach указал в комментариях, в коде это будет выглядеть примерно так

    text1.typeface = resources.getFont(R.font.Aller_Display)
    text1.fontFeatureSettings = "smcp"

Edit2

Имейте в видуДля тех, кто не знает - маленькие заглавные буквы работают только со строчными буквами.

Как вы используете TextView поэтому я думаю, вы устанавливаете значение во время выполнения, например, говорит, что у вас есть String объект, который будет установлен в TextView подобно:

textView.setText(someStringObj);

Таким образом, вы можете легко установить его как нижний регистр, добавив:

textView.setText(someStringObj.toLowerCase());
Другие вопросы по тегам