数字和文字之间的差距不一致

Inconsisent gap between number and text

我遇到了奇怪的间距问题。有数字和每个文本并行。并且 1、4、7 和 'each' 文本之间有不同的间距。我们如何解决这个问题,或者无法解决。我没有使用任何间距和额外的 css 属性。

@import url('https://fonts.googleapis.com/css?family=Spectral');
@import url('https://fonts.googleapis.com/css?family=Open+Sans|Spectral');

.bigger {
  font-size: 40px;
}

p {
  font-family: 'Open Sans', sans-serif;
}
<p>
  <span class="bigger">81</span>
  <small>each</small>
</p> <br>
<p>
  <span class="bigger">84</span>
  <small>each</small>
</p> <br>
<p>
  <span class="bigger">87</span>
  <small>each</small>
</p> <br>

字符 1(有时是 7)在大多数字体中通常会被隔开。如果你想要均匀的间距,你应该考虑使用等宽字体。

您可以对代码进行的另一项改进是删除标签之间的空格。

请检查以下代码:

@import url('https://fonts.googleapis.com/css?family=Spectral');
@import url('https://fonts.googleapis.com/css?family=Open+Sans|Spectral');

.bigger {
  font-size: 40px;
}

p {
  font-family: 'Open Sans', sans-serif;
}
<p>
  <span class="bigger">81</span><small>each</small>
</p> <br>
<p>
  <span class="bigger">84</span><small>each</small>
</p> <br>
<p>
  <span class="bigger">87</span><small>each</small>
</p> <br>

那就是字体的字间距问题。您应该使用 monospace 字体来为所有字符实现相同的间距。

试试下面的代码片段。

.bigger {
  font-size: 40px;
}

p {
  font-family: monospace;
}
<p>
  <span class="bigger">81</span>
  <small>each</small>
</p> <br>
<p>
  <span class="bigger">84</span>
  <small>each</small>
</p> <br>
<p>
  <span class="bigger">87</span>
  <small>each</small>
</p> <br>

尽管使用单色space 字体是一个很好的解决方法,但如果原始字体具有正确的 OpenType 功能,您可以使用它来解决此问题。

数字所占 space 的差异是由数字的宽度引起的(与其他答案中建议的字距调整或字母间距相反)。宽度成正比——1比4窄。

但字体也可以提供表格数字,其中每个数字的宽度相等:

您可以在 CSS 中使用 font-feature-settings: 'tnum'; 启用此功能。或者要使用其他 OpenType 功能并处理浏览器不一致问题,请参阅 Utility OpenType