Как убрать лишний межстрочный интервал из загружаемых шрифтов?
Я изучаю загружаемые шрифты (и шрифты как ресурсы) в моем текущем приложении для Android.
Когда я размещаю шрифты в values/font
папку они отображают по желанию.
Когда я использую загружаемые шрифты, они всегда имеют дополнительный интервал между строками.
Я должен использовать android:lineSpacingMultiplier="0.5"
в моем макете XML для достижения желаемого расстояния.
Я применяю шрифты к текстовому обзору и позволяю ему обернуть содержимое.
Я обеспокоен тем, что с помощью android:lineSpacingMultiplier
может "обрезать" некоторые символы.
Что я делаю (или не делаю), чтобы создать эту проблему с пространством для текста?
Вот мой макет XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:fontFamily="@font/lexie_readable_regular"
android:padding="4dp"
android:text="@string/testing"
android:textColor="@color/daynight_textColor"
android:textSize="18sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:fontFamily="@font/inknut_antiqua_light"
android:padding="4dp"
android:text="@string/testing"
android:textColor="@color/daynight_textColor"
android:textSize="18sp"
android:textStyle="normal" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:fontFamily="@font/tiresias_infofont"
android:padding="4dp"
android:text="@string/testing"
android:textColor="@color/daynight_textColor"
android:textSize="18sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:fontFamily="@font/aphont_regular_q15c"
android:padding="4dp"
android:text="@string/testing"
android:textColor="@color/daynight_textColor"
android:textSize="18sp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="CLICK ME"
android:textColor="@color/daynight_textColor" />
<ImageView
android:id="@+id/imageView"
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_gravity="center"
android:src="@drawable/placeholder" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/txtNightMode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:fontFamily="@font/tiresias_infofont"
android:paddingRight="8dp"
android:text="Night Mode"
android:textColor="@color/daynight_textColor" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/switchCompat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:checked="false"
android:textAppearance="?android:attr/textAppearanceMedium"
android:theme="@style/MySwitch" />
</LinearLayout>
</LinearLayout>
"Загружаемый" шрифт
android:fontFamily="@font/inknut_antiqua_light"
Все остальные шрифты я поместил вручную в /font
папка.
И вот скриншот проблемы:
Этот загружаемый шрифт выглядит хорошо
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
app:fontProviderAuthority="com.google.android.gms.fonts"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="Actor"
app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
</font-family>
в то время как у этого есть проблема, показанная выше:
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
app:fontProviderAuthority="com.google.android.gms.fonts"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="name=Inknut Antiqua"
app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
</font-family>
В чем разница?
Я пытался использовать android:includeFontPadding="false"
; это не имеет желаемого эффекта.
3 ответа
Возможно, это греховно с моей стороны, но я отчаянно пытался решить проблему с межстрочным интервалом и добавил отрицательное значение к lineSpacingExtra
казалось, работает:
android:lineSpacingExtra="-4sp"
Для "заполнения шрифтов" в верхней и нижней части TextView, вы можете использовать
android:includeFontPadding="false"
Я тестировал на Android 5.1.1 и 7.0.
Кстати, я использую sp, потому что это касается шрифтов.
ОБНОВЛЕНИЕ: Ваш шрифт "inknut_antiqua_light" имеет проблему с большим пустым пространством. Другие шрифты работают без этой проблемы. Вы можете проверить пространство шрифта ниже:
Вы можете попробовать удалить набивку шрифтов, добавив эту строку в желаемый TextView
android:includeFontPadding="false"
Как это:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:fontFamily="@font/inknut_antiqua_light"
android:padding="4dp"
android:includeFontPadding="false"
android:text="@string/testing"
android:textColor="@color/daynight_textColor"
android:textSize="18sp"
android:textStyle="normal" />
Используйте следующие атрибуты:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:letterSpacing="0.0"
android:includeFontPadding="false"/>