控制HTML中字符的垂直间距

控制HTML中字符的垂直间距,html,css,fonts,Html,Css,Fonts,在下图中,“A”和“A”占据相同的垂直空间 是否有可能改变某些东西,使“a”占据更少的垂直空间 我想把绿色圆圈里的区域去掉 我试着玩线的高度,但没有成功。 此外,边距和填充也没有任何影响。 在HTML下面: <svg height="800" width="800"> <text font-size="150px" fill="black" x="30" y="300" style="line-height: -10px;">A</text&g

在下图中,“A”和“A”占据相同的垂直空间

是否有可能改变某些东西,使“a”占据更少的垂直空间

我想把绿色圆圈里的区域去掉

我试着玩线的高度,但没有成功。 此外,边距和填充也没有任何影响。 在HTML下面:

<svg height="800" width="800">
  <text font-size="150px" fill="black" x="30" y="300"
        style="line-height: -10px;">A</text>
  <text font-size="150px" fill="red" x="130" y="300"
        style="line-height: 0em;">a</text>
</svg>

A.
A.
也许有一些字体可以处理这个问题,但我找不到


编辑:我会将此文本与a集成,并希望通过将套索放在绿色圆圈区域来避免用户错误地选择字符“a”。

您实际要做的(“[…]希望避免用户错误地选择文本[…]”)与您如何实现这一点几乎没有任何关系。实际上,你已经问了一个问题

要防止在浏览器中选择文本,只需创建一个CSS类,如

.notselectable {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
(或者更明智地使用
用户选择:none
和自动创建供应商前缀规则的工具)


然后,每当用户开始选择文本时,将该类应用到他们可能正在绘制的文本上,以便他们的手势/鼠标活动不会导致实际的文本选择

您可以使用CSS禁用文本选择。创建一个不可选择的类,并将其应用于文本元素(如果适用):

.unselectable {
  -moz-user-select: none;
  -khtml-user-select: none;
  -webkit-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

最好在开始使用套索时添加,然后删除,这样在不使用套索时可以选择文本。

蓝色突出显示的是图示符的边界框。其度量值在文档使用的字体文件中定义(可以是HTML、ODT、DOCX或PDF)

通常,此边界框的高度对于字体的所有图示符都是相同的(以给定字体大小渲染时)。只有字形的宽度不同(如果是非等距字体)。顺便提一下,这也是为什么使用非嵌入式非标准字体的PDF仍然需要在
/FontDescriptor
字典中包含
/Widths
数组,但它们不需要
/Heights
数组的技术原因

您可以通过使用字母表中的所有字母(大写和小写),包括所有数字,创建一个HTML测试页来检查这一点


我不认为你可以通过CSS技巧改变这一点。

你必须寻找一种大写字母和小写字母高度相同的字体。或者您需要更改其中一个letters@Huangism在这种情况下,两个车床的高度相同。如果我改变字体大小,我仍然会有空白。你想达到什么效果?垂直空间将由您指定给“A”的最大线条高度决定。可以将字母拆分为单独的跨距,并将显示设置为“内联块”。这将使您能够在顶部设置负边距,基本上提高“a”的位置。除非您的字体没有空格,否则小写字母上都会有空格,这是我使用大写字母和小写字母高度相同的字体的第一点。。。但你可以想象它看起来有多奇怪。如果你改变字体大小,空格可能会消失。你可以在一个带有透明边框和背景的单独框中捕捉“a”的标志符号,该框的高度低于标志符号高度。对不起,可能我在帖子中没有说清楚。在本例中,我希望“a”可以选择,但我不希望用户在将套索放在绿色圆圈区域时错误地选择它。这就是为什么我提到在套索的开始和结束添加和删除此类。当你想要文本可选择时,文本是可选择的,而在画套索的过程中文本是不可选择的。与另一个答案中的评论相同:对不起,也许我在帖子中没有说清楚。在本例中,我希望“a”是可选择的,但我不希望用户在将套索放在绿色圆圈区域时错误地选择它。然后请重新措辞您的帖子以使其更清楚,记住
a
的整个框都算作“字母”。你的眼睛可能看不到,但对计算机来说,空白是
a
轮廓向量定义的一部分。如果向上移动
a
,也会向上移动其关联的空白。是的,我开始这么想。也许有一种字体可以解决这个问题,但我找不到。没有。字体中的所有图示符都具有相同的最小图示符高度(由字体的基线到基线距离定义的高度),文本跨距的设置应确保与文本所在的“框”的任何交互都是文本交互。你可以使用画布,但仅此而已。另一种选择是不允许同时使用“文本选择”和“套索”。我可能会用图片替换文本,因为我想用套索操作数学公式。有了这些图片,我将能够控制间距,而且我将有比普通文本更好的数学显示。我想它在某种程度上解决了这个问题。。。