Nexus 5 monospace字体具有不同宽度的unicode圆

时间:2015-10-20 02:05:31

标签: android android-layout fonts font-size

在Android应用中,我将信用卡条目作为四个EditText字段。这些字段配置为使用等宽字体。

当我输入数字时,每个4字符块的宽度始终与预期的相同。

但是,为了屏蔽已经输入的信用卡详细信息,我使用了一个unicode黑色圆圈字符"●"。事实证明,即使使用等宽字体,宽度为"●●●●"比#11; 1111"更宽!当我试图支持不同的系统字体大小和屏幕尺寸时,这会给我带来问题。

Monospaced circle vs numbers

有趣的是,在带有Marshmallow的Nexus 5或KitKat上的三星手机上,我都没有看到这个问题!

我是否遗漏了某些内容,或者Lollipop上的默认Android monospace字体实际上是不是等宽字体?

我的XML:

       <LinearLayout
        android:id="@+id/card_number_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center">

        <EditText
            android:id="@+id/card_field_1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:hint="●●●●"
            android:typeface="monospace"
            android:inputType="number"
            android:focusable="true"
            android:maxLength="4">
        </EditText>

        ...
        </LinearLayout>

1 个答案:

答案 0 :(得分:4)

在我的Marshmallow构建中,这些图形字符来自NotoSansSymbols-Regular-Subsetted.ttf,它们绝对不是等宽的。谷歌搞砸了。隐藏该文件并使用Kitkat的DroidSansFallback.ttf让我排队等待。

我已在https://github.com/googlei18n/noto-fonts/issues/617

提交了错误报告