问题描述
通常,在比例字体中,正常的加号和减号(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>