在API 21中,引入了setLetterSpacing(float)
。问题是,参数以em为单位。与我合作过的许多应用程序图形设计师都使用sp来测量他们的字母间距。所以如果我被给予
字母间距:1.6sp
我通常最终会尝试几个浮点数,这些浮点数的结果与设计师的浮点数非常相似。简而言之,它不是像素完美的。
您知道从SP转换为EM的更好方法吗?谢谢!
我相信sp和em有不同的目的 - sp用于绝对调整文本大小,而em用于相对大小。我的猜测是em字母间距是文本大小的倍数,因此,如果您知道文本大小和所需的间距,则等式将spacing_em = spacing_sp / text_size_sp
。
这只是一个猜测,所以请测试它,如果它错了,我会删除答案。
基于关于维度的安卓文档,SP的行为类似于DP,但字体大小。转换可能会导致基于屏幕尺寸和分辨率的不一致,但在这里我找到的公式:
sp * 0.0624 = em
正如 Frandall 已经提供的答案一样,您可以在以下链接中使用一个简单的sp-em 转换器
https://chrisdavies.github.io/sp-to-em/
将 sp 转换为 em 的公式为:sp * 0.0624 = em
轻微扩张的典型值约为0.05