我想使用unicode符号,我想做的非常大。但是当我这样做时,它需要很多边距和填充,我无法控制。即使我将边距和填充设置为零也无法解决问题。所以我该怎么做?除了微小的unicode符号外,普通文本的行为是正常的。
这是一个大小为180pt的符号,我突出显示它,以便您可以看到它周围的空间量!
编辑:
我尝试使用普通字符'a',但它使用相同的边距/填充!
答案 0 :(得分:2)
这种间距嵌入在字体字形本身中,除了行高属性外,CSS无法真正克服。
如果你想要一个矢量化的字形,我会用一个SVG元素。
答案 1 :(得分:1)
字体设计师将空白空间既不是边距也不是填充,而是字形设计的一部分。字形通常被设计为使得连续的字形不会彼此接触,因此即使文本设置为实心(在CSS术语中,当line-height
为1时),字形通常也不会触及其他行上的字形。
这意味着如果你想要一个字形出现在一个包围的最小矩形中,这似乎是这里的目标,你必须与印刷设计作斗争。没有简单的方法可以做到这一点。对于特定字符和特定字体,假设将始终使用字体(这通常是Web上不切实际的假设),您可以找到(通过实验)替换字符所需的合适值。例如:
<style>
.tight {
font-size: 180pt;
font-family: Lucida Sans Unicode;
background: #aaf;
display: inline-block;
position: relative;
width: 0.537em;
height: 0.63em;
}
.tight span {
position: absolute;
left: -0.059em;
top: -0.385em;
}
</style>
<span class=tight><span>ℵ</span></span>
结果(当Lucida Sans Unicode可用时):
这里的想法是将字形放在span
元素内,该元素位于外部span
元素内,以便外部元素具有所需的背景颜色,并且其宽度和高度设置为与实验获得的字形可见部分的尺寸。内部span
元素使用“绝对”定位从其自然位置移位,这实际上意味着将其相对于外部元素定位。