每种语言的Android不同字体

时间:2019-02-22 23:59:36

标签: android fonts

反正每种语言都有不同的字体吗? 有values-en,values-fr ...等,但是我们可以做些像font-fr,font-ar ... etc这样的事情吗?

PS,我说的是res / font,而不是资产/字体,我希望能够以XML设置一种字体,然后获得每种语言的更改,而无需以编程方式设置Typeface。

3 个答案:

答案 0 :(得分:1)

每个本地化文件可以具有不同的styles.xml文件。在那里,您可以在每个样式文件下定义fontFamily。

要声明字体系列,您可以创建一个如下所示的xml文件,您可以在其中引用otf或ttf文件。

您可以在字体目录下创建.xml文件。并在那里定义所有字体。

<!--  bukra.xml file which contains all the font families -->

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android">

<font
    android:font="@font/bukra_semi_condensed_extra_light_normal"
    android:fontStyle="normal" />

<font
    android:font="@font/bukra_semi_condense_light_slanted"
    android:fontStyle="italic" />

</font-family>

并根据这样的本地化为您的应用定义两种不同的字体。

此styles.xml文件在我的values-ar文件下。

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimary</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="fontFamily">@font/bukra</item>
    </style>

答案 1 :(得分:0)

有可能。

  1. 将本地化的otf文件放入字体文件夹(未本地化)
  2. 使用<item name="android:fontFamily">@font/app_font</item>将您的styles.xml复制到本地化的值文件夹(values-fr)中,而无需进行任何更改。
  3. 创建本地化的字体文件夹(font-fr)。
  4. 在新的字体文件夹中,使用android:font="@font/your_localized_otf_file"
  5. 创建app_font.xml。

您的本地化字体文件夹将由本地化值文件夹中的本地化样式文件使用。但是otf / ttf文件应该位于常规字体文件夹中。

更新

上面的答案只是利用font-xx文件夹(在问题中被要求),但是由于我们使用的是本地化的styles.xml,因此有一个没有font-xx文件夹的更简单的解决方案。

  1. 将本地化的otf文件放在字体文件夹中
  2. 使用android:font="@font/your_localized_otf_file"在字体文件夹中创建different_language_font.xml
  3. 在您的styles.xml中的本地化值文件夹(values-fr)<item name="android:fontFamily">@font/different_language_font</item>

答案 2 :(得分:0)

尝试一下:

  1. 将所有字体文件添加到res/font
  2. 本地化style.xml(创建values/style.xml和&values-ln/style.xml
  3. 每添加AppTheme,在style.xml
  4. <item name="android:fontFamily">@font/your_desired_font</item>
  5. 仅此而已

如果一种语言的字体不止一种(例如,常规字体,粗体字体,浅色字体等),则将其添加到每种style.xml中,例如:

 <style name="FontLocalizedBold">
        <item name="android:fontFamily">@font/your_desired_font</item>
    </style>

用法:

<TextView
        android:id="@+id/textViewId"
        android:layout_width="100dp"
        android:layout_height="100dp"
        style="@style/FontLocalizedBold"
        android:gravity="center"
        tools:text="XX"/>