可以使用 CSS 使标准加号和减号具有相同的宽度吗?

问题描述

通常,在比例字体中,正常的加号和减号(U+002B 和 U+002D)是不同的宽度:

  • +100
  • -100

因此,带有混合符号的数字在左对齐时无法正确对齐,而在右对齐时,尽管它们对齐,但符号的视觉“质量”差异令人不快。

某些字体效果更差;对我来说,Stack Overflow 是在 Liberation Sans 中,差异不大,而我的认衬线字体是 DejaVu Serif,在那里差异很大。

我想让加号和减号具有相同的宽度,并在视觉上保持平衡。

这里的一种方法是使用与正常加号 (U+002B) 宽度相同的适当减号 (U+2212)。但是,我知道的任何语言的标准格式化和解析函数都没有使用它;使用它会很痛苦,并且可能会破坏复制和粘贴。我宁愿不这样做。

有什么办法可以使用 CSS 来指示正常的连字符减号 (U+002D) 应该显示为减号而不是连字符?

font-variant-numeric: tabular-nums; 似乎没有这样做(没有特别的理由认为应该这样做,但值得一试!)。

解决方法

在显示这些字符时使用等宽字体系列。这样,它们就会按照您想要的方式垂直排列。以下是 sans-serif 等宽字体的示例字体堆栈:

font-family: 'Menlo','Lucida Console','Monaco','Consolas',monospace;

在 HTML 中使用:

<style>
.monospace{
    font-family: 'Menlo',monospace;
}
</style>

<div class="monospace">
-100<br/>
+99<br/>
-483
</div>