当前位置: 首页 > 面试题库 >

使用CSS修复自定义字体的行高

冯旭
2023-03-14
问题内容

在我正在使用的新Web应用程序上使用自定义字体时,我一直遇到一个奇怪的问题。

此自定义字体(FF DIN)似乎自然具有垂直的偏心线高,这迫使我放置一些padding-tophack以补偿元素(如按钮和输入)的顶部空间。

示例:绿色字体(Helvetica Neue)正确对齐,而我们使用的自定义字体(FF DIN)垂直偏离中心:

有没有已知的方法可以自然地解决CSS上的居中问题,从而以某种方式强制字体基线行为?

谢谢。


问题答案:

这里的问题不是行高,而是字形的垂直放置,特别是文本基线的位置。字体设计师已经决定了这一点。设计人员绘制字形并将其放置在em正方形中,这是概念设备,其高度等于(或定义为)字体高度。尤其是,设计人员决定一方面在基线之下,另一方面在大写字母的高度之上有多少空间。通常,这些空间相等或几乎相等,但不必相等。如果它们实质上不同,则字体的预期用途可能很特殊,并且不包括图像中所示的用途。这表明应该重新考虑字体选择,但让我们假设它是固定的。

有几种方法可以解决该问题。如果字母下方有太多空间,减小line-height使其变小,但这也会影响上方的空间。从某种意义上说,顶部填充有帮助,但是它增加了元素占用的总高度。您也可以使用vertical-align,但它会影响线盒的高度。

可能最简单的方法是使用相对定位,假设问题只涉及单行文本。相对定位仅以指定的方式替换内容,否则不影响布局。为此,您将需要一个包装器,即一个包含文本的元素,以便仅替换文本,而不替换背景。

下面的演示使用了Google字体Candal,该字体有类似的问题,但方向不同:基线太低。为解决原始问题而对这种方法进行的修改应该很明显,但是需要根据经验确定确切的位移量(或从使用字体检查器从字体文件中提取的信息中确定)。自然,em即使您以像素或磅为单位设置字体大小,也应在此处使用该单位(这样,如果某天更改字体大小,则无需更改代码)。

<link href='http://fonts.googleapis.com/css?family=Candal' rel='stylesheet'>
<style>
div { font-family: Candal }
div { background: lightgreen; font-size: 200%}
</style>
<p>What we have got initially:
<div>BRAKE HOSE AND AIR CHAMBER</div>
<p>Reducing line height (even “setting solid”) does not really help:
<div style="line-height: 1">BRAKE HOSE AND AIR CHAMBER</div>
<p>But displacing the text upwards by 0.1em does:
<div><span style="position: relative; bottom: 0.1em">
BRAKE HOSE AND AIR CHAMBER</span></div>


 类似资料:
  • 问题内容: 我看到一些新网站在其网站上使用自定义字体(常规Arial,Tahoma等除外)。 并且它们支持大量的浏览器。 怎么做到的?同时,如果可能的话,还会阻止人们自由下载字体。 问题答案: 通常,您可以在CSS中使用自定义字体。这是一个非常基本的示例: 然后,简单地在特定元素上使用字体: (是您的选择器)。 请注意,某些字体格式并非在所有浏览器上都有效;您可以使用fontsquirrel.co

  • 问题内容: 我有一台Mac,并且安装了一种名为“ 7 Segment”的字体(它显示在Font Book中)。当我使用Helvetica(或类似字体)而不是浏览器的默认字体时,它仍然没有显示正确的字体。该页面仅需要在此计算机上显示。我将如何使用此页面上的字体?谢谢。 问题答案: 您需要使用css-property font-face来声明您的字体。 例:

  • 问题内容: 我正在尝试在JFrame中使用特殊字体,但遇到了问题。我有一个这样定义的JLabel: 并且我有一个名为CUSTOMFONT-MEDIUM.TTF(TrueType字体)的文件,但是编写了以下内容: 代码会编译,并且一切正常,除了不会显示“ lab”,因此没有文本。我想这是因为我从未指定字体大小,但是我所做的任何尝试都失败了。有人可以帮我吗? 问题答案: 您创建的字体必须先在中注册,以

  • 本文向大家介绍Android使用自定义字体的方法,包括了Android使用自定义字体的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android使用自定义字体的方法。分享给大家供大家参考,具体如下: 一、问题: 作为android初学者,在做一个游戏,游戏的标题我用的是TextView,android只提供斜体粗体,但把字体设置成楷体游戏的界面会更好,怎么才能实现。 二、解决方法:

  • 问题内容: 我正在尝试在使用wkhtmltopdf生成的PDF中使用自定义字体。我读到您不能使用google webfonts,而wkhtmltopdf使用truetype .ttf文件。谁能确认?因此,我从Google webfont下载了一个.ttf文件,并将其放入服务器中,然后使用了字体: 和字体系列: 现在应该以Jolly Lodger字体呈现的文本根本没有出现,页面为空白。 我究竟做错了

  • 字体始终显示默认字体。 我的字体存储在资源/字体中。我尝试使用其他字体,并对字体进行重新编码。此外,PixlUI库并没有解决这个问题。 主要活动。Java语言 activity\u main。xml