如何转换 SP 至 EM?

How to convert SP to EM?

在API21中引入了setLetterSpacing(float)。问题是,参数以 em 为单位。与我合作过的许多应用程序图形设计师都使用 sp 来衡量他们的字母间距。所以如果我得到

Letter Spacing: 1.6sp

我通常最终会尝试几个浮点数,它们会产生与设计者的结果非常相似的结果。简而言之,它不是像素完美的。

您知道从 SP 转换为 EM 的更好方法吗?谢谢!

我认为 sp 和 em 有不同的用途 -- sp 用于绝对调整文本大小,而 em 用于相对调整文本大小。我的猜测是 em 字母间距是文本大小的倍数,所以如果您知道文本大小和所需的间距,则等式将为 spacing_em = spacing_sp / text_size_sp.

这只是一个猜测,所以请测试一下,如果错误我会删除答案。

基于android documentation about dimension SP behaved like DP but for font size. Converting may result in inconsistency based on the screen size and resolution, but here the formula I found

sp * 0.0624 = em

正如 Frandall 已经提供的答案,您可以使用下面的简单 sp-em 转换器 link

https://chrisdavies.github.io/sp-to-em/

sp转em的公式为:sp * 0.0624 = em

轻微膨胀的典型值约为 0.05