安卓 TextView elegantTextHeight 属性是什么?(API 21)

18
我发现TextView有一个elegantTextHeight属性,但是当我试图使用它时并没有看到任何变化。那么它是做什么用的?我应该如何使用它?

优雅的文本高度,特别适用于不太紧凑的复杂脚本文本。 - Nabin
@Nabin 我在Android Studio中看到了这个提示,但它没有说什么。 - The incredible Jan
2个回答

37

简短回答: 这是一种方法,用于关闭某些语言的“字体紧缩”优化。如果您不知道我在说什么,可能是因为您的语言没有“字体紧缩”优化,这意味着您不必关心它。

详细回答:

首先看一下文档:

设置 paint 的优雅高度指标标志。此设置选择未经压缩以适应基于拉丁语的垂直指标的字体变体,并增加顶部和底部边界以提供更多空间。

这是什么意思?

在一些语言中,有些字符可能非常高。像这样:

Thai + Latin

(这些是我随机从泰文字母表中选取的字符,如果你好奇的话。)

看看左边的文字。真的很高,是吗?但事实是,它还不够高。它应该更高。

字体通常有两个版本针对“高文本”语言: 一个原始版本和一个压缩版本。压缩版本是为了确保不同语言的文本在放在一起时看起来不奇怪。默认版本(至少在Android的 Paint中)是压缩版,如上图所示。

但有时您可能需要原始版本。如果需要,请添加以下行:

paint.setElegantTextHeight(true);

然后您的文本将使用原始(优雅)版本绘制。Original variant

泰文变得更高了,看到了吗?

现在问题已经很清楚了: 一些语言可能有非常高的字形,它们默认被压缩。而setElegantTextHeight(true)将会:

  1. 切换到原始、非压缩的优雅变体来绘制文本。
  2. 增加顶部和底部边界以为更高的文本提供更多空间。

3

从文档中可以看到:

设置绘制的优雅高度指标标志。此设置选择未压缩以适应基于拉丁字母的垂直指标的字体变体,并增加顶部和底部边界以提供更多空间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接