android 如何确保非ascii unicode字符正确显示?

n6lpvg4x  于 2022-12-21  发布在  Android
关注(0)|答案(1)|浏览(154)

我正在显示一个按钮,它的文本中有一个向左箭头字符。向左箭头是unicode character u2190。相关代码片段如下:

<Button
    app:layout_row="0"
    app:layout_column="2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="\u2190"
    android:textSize="@dimen/font_size"
    app:layout_columnWeight="1"
    style="?android:attr/buttonBarButtonStyle"
    android:onClick="onKeyPressed"
/>

在大多数设备上,我得到了预期的结果(左图),而在诺基亚1 API级别27(可在Firebase测试实验室),我得到了一些东西,可能是一些汉字(右图)。

我如何确保unicode字符在所有设备上正确显示?我更喜欢没有代码,只使用xml的解决方案。

bq9c1y66

bq9c1y661#

我已经解决了这个问题,找到了一个TTF字体与许可证,有向左箭头正确Map。我已经添加到res/font目录,并引用它从布局文件中的方式如下:

<Button
    android:fontFamily="@font/custom"
    app:fontFamily="@font/custom"
    app:layout_row="0"
    app:layout_column="2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="\u2190"
    android:textSize="@dimen/font_size"
    app:layout_columnWeight="1"
    style="?android:attr/buttonBarButtonStyle"
    android:onClick="onKeyPressed"
/>

现在,向左箭头正确显示在测试设备上,包括之前显示不同符号的设备。
另外,我使用FontForge对字体进行子集化,以便它只包含必要的字符。

相关问题