Android Monospace的行为不固定

时间:2019-06-16 11:53:54

标签: android canvas android-typeface

正如您在屏幕快照中看到的那样,两个不同的字符串具有相同的长度,但在画布上绘制的宽度相同。我使用的是等距字体,所以不是保证以相同的宽度绘制吗?那是因为紧缩吗?

Typeface.create(Typeface.MONOSPACE,Typeface.NORMAL)

enter image description here

1 个答案:

答案 0 :(得分:2)

这是一个在Android上使用monosapce字体的众所周知的字距调整问题。看来这是一个很老的话题。

有些人已经遇到了这个问题:

Android Monospace fonts aren't fixed width-2013-06-11

Are Android monospace fonts actually fixed size?-2016-06-22

Android monospace space ( ) width is different than character width-2017-03-02

该问题也发生在移动网络环境中:

Font monospace Android 2.3-2013-07-11

其中问题解释为缺少字形:

https://github.com/googlefonts/noto-fonts/issues/617

解决方案:

选项1 ::

寻找其他固定宽度字体可能是最简单的方法。一些有用的链接来找到一个:

选项2 ::

您可以使用Spans覆盖文本绘图。这篇文章可以帮助您: https://stackoverflow.com/a/53452941/5823014

选项3 ::

您可以修改等宽字体文件以修复字距调整。此在线工具可能会有用: http://www.glyphrstudio.com/online/