Nexus 5 等宽字体对于 unicode 圆有不同的宽度

Nexus 5 monospace font has different width for unicode circles

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

当我键入数字时,每个 4 字符块的宽度总是相同。

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

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

我是不是遗漏了什么,或者 Lollipop 上的默认 Android 等宽字体实际上不是等宽字体?

我的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>

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

我已在此处提交错误报告https://github.com/googlei18n/noto-fonts/issues/617