【发布时间】:2021-02-03 02:06:34
【问题描述】:
我想弄清楚为什么我的字体没有垂直对齐。我使用的是 Google 提供的 Spartan MB 字体,但它看起来不太对劲,see here。
我的 HTML 标记是这样的:
<html>
<head>
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Spartan&display=swap" rel="stylesheet">
<style>
button, input {
font-family: 'Spartan', sans-serif;
}
</style>
</head>
<body>
<button>Click me</button>
<input type="text" value="Hello world" />
</body>
</html>
为什么使用常规 Arial 字体没有任何问题?
我尝试过的方法
- 设置不同的
line-heigh属性。没有帮助。 - 设置
vertical-align: text-bottom没有帮助。 - 使用
ftxdumperfuser实用程序修改字体本身,如here 所述,通过更改上行和下行属性。这有点帮助,但只适用于 Chromium 浏览器。
有人可以告诉我这种行为吗?有没有跨浏览器的方法来解决这个问题?
【问题讨论】:
-
如果您还使用低于基线的字母(如 y、p、g 等),您会发现它正在填充高度,因此居中。对齐方式不会根据使用的字母而改变,因此它必须同时适用于所有字母。
-
@Johannes 这很有趣,我认为从技术上讲,它只需要适合字体。但对我来说,从审美的角度来看,这似乎有些过时,你不是说吗?所以我想这取决于人类来弥补这一点。如果字体可以设置它们的“中心”并且浏览器可以以某种方式接收它,那就太好了。
-
好吧,但是“他们的中心”在您的示例“点击我”和例如“输入一些东西”之间会有所不同 - y 和 g 有下降,“点击这里”没有因此看起来更偏离中心。那么“字体的中心”在哪里:两个示例的不同之处?如果是,则需要(自动)根据文本内容进行不同的处理...