如何将SP转换为EM?



在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

最新更新