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
在 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