我发现TextView有一个elegantTextHeight属性,但是当我试图使用它时并没有看到任何变化。那么它是做什么用的?我应该如何使用它?
简短回答: 这是一种方法,用于关闭某些语言的“字体紧缩”优化。如果您不知道我在说什么,可能是因为您的语言没有“字体紧缩”优化,这意味着您不必关心它。
详细回答:
首先看一下文档:
设置 paint 的优雅高度指标标志。此设置选择未经压缩以适应基于拉丁语的垂直指标的字体变体,并增加顶部和底部边界以提供更多空间。
这是什么意思?
在一些语言中,有些字符可能非常高。像这样:
(这些是我随机从泰文字母表中选取的字符,如果你好奇的话。)
看看左边的文字。真的很高,是吗?但事实是,它还不够高。它应该更高。
字体通常有两个版本针对“高文本”语言: 一个原始版本和一个压缩版本。压缩版本是为了确保不同语言的文本在放在一起时看起来不奇怪。默认版本(至少在Android的 Paint
中)是压缩版,如上图所示。
但有时您可能需要原始版本。如果需要,请添加以下行:
paint.setElegantTextHeight(true);
泰文变得更高了,看到了吗?
现在问题已经很清楚了: 一些语言可能有非常高的字形,它们默认被压缩。而setElegantTextHeight(true)
将会:
从文档中可以看到:
设置绘制的优雅高度指标标志。此设置选择未压缩以适应基于拉丁字母的垂直指标的字体变体,并增加顶部和底部边界以提供更多空间。