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

2024-06-26

在我正在开发的新网络应用程序上使用自定义字体时,我遇到了一个奇怪的问题。

这种自定义字体(FF DIN)似乎具有自然垂直的偏离中心的行高,这迫使我放置一些顶部填充黑客来补偿按钮和输入等元素的顶部空间。

示例:绿色字体 (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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 CSS 修复自定义字体行高 的相关文章

  • 文本区域标签垂直对齐:中间

    我试图将此文本区域的标签对齐在文本框的中间 但它不起作用 输出看起来像这样 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx
  • CSS 改变悬停时的背景颜色

    为什么这不起作用 div class homePrizes div class homeCredit 1250 Points div div class homePrize Prize1 div div CSS homePrizes cle
  • 既然似乎有升级推送,我们是否可以少担心 IE 6 的问题? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 不使用 JS 防止图像可拖动或可选择

    有谁知道如何在 Firefox 中同时使图像不可拖动且不可选择 而不需要求助于 Javascript 看似微不足道 但问题是 可以在 Firefox 中拖动并突出显示 所以我们添加了这个 但是拖动时图像仍然可以突出显示 所以我们添加这个来解
  • Firefox 选择元素将文本缩进值加倍

    今天我发现了一个奇怪的问题 似乎是 Firefox 35 0 中的一个错误 当指定一个text indent财产为select元素 Firefox 似乎将像素值加倍 其他浏览器正确显示缩进 有没有解决方法可以避免这种情况 我被迫使用text
  • 带偏移量的 CSS 背景渐变

    我将渐变作为背景图像应用到我的身体上 然后我在顶部添加了 255px 偏移background position 0 255px 它看起来相当不错 除了一个小问题 当然渐变不是在页面底部结束 而是在下面 255px 处结束 有没有什么简单的
  • 在 React 中使用内联样式和纯 CSS 字符串

    我正在ReactJS中重写一个基于AngularJS的现有应用程序 在应用程序中 用户可以提供 CSS 样式字符串来设置某些元素的样式 在 AngularJS 中这没有问题 我只是将 style 属性设置为给定的字符串 在 ReactJS
  • Angular Component CSS 封装是如何工作的?

    我想了解如果我创建两个样式表 Style 1 heading color green Style 2 heading color blue 现在如果这两种样式写在两个不同的视图中 渲染它们的时候 在布局上作为局部视图 https jakey
  • webkit-font-smoothing:chrome 和 safari 中的结果突然不同

    我曾经在两个 webkit 浏览器 Chrome 和 Safari 中都有相同的输出 但突然之间 我不知道我可以改变什么 Chrome 中的渲染看起来很糟糕 这是我的html li class cat item term term work
  • 当视图切换到其他浏览器选项卡时,网页 javascript 的行为有所不同

    抱歉我写标题时的英文不好 我已经尽力了 直播站点 http tt fbcwinterretreat org http tt fbcwinterretreat org 请注意 为了更好地了解发生的情况 我建议您降低窗口高度 问题是 如果您一直
  • jQuery 相当于 YUI StyleSheet Utility?

    jQuery 或其插件之一 是否具有与YUI 样式表实用程序 http developer yahoo com yui 3 stylesheet StyleSheet Utility 能够从头开始创建新的样式表 以及修改作为来自同一域的元素
  • CSS 向后/反向过渡

    我想知道是否有任何方法可以使用相同的 CSS 过渡实例来向前移动然后向后 反向移动 例如 假设我有这样的转变 webkit keyframes fade transition from opacity 0 to opacity 1 以及这次
  • LESS:使用 Bootstrap 时出现无法识别的输入错误

    升级 Harp 后 我开始得到无法识别的输入不相关的 CSS 行中出现错误 Less gt CSS 无法识别的输入 Users jorge Dropbox harp io apps mysite com public css main le
  • 带有 selectInputs 的 DT 数据表在选择后重置回左侧

    我在 Shiny 应用程序的 DT 数据表的列中使用 selectInputs 感谢一些帮助here https stackoverflow com questions 74620665 vertically center selectin
  • Java无法读取字体

    好的 我在使用自定义字体时遇到问题 基本上我得到了从互联网上下载的自定义字体并在我的程序中使用它 当我在 Eclipse 我使用的编辑器 中运行该程序时 一切正常 没有问题 但是 每当我将它从 eclipse 导出到 jar 时 或者尝试从
  • 使用 CSS 在浏览器中滚动时更改标题的大小和内容

    知道如何制作这里看到的东西吗http studiompls com case studies crown maple http studiompls com case studies crown maple 标题变小 徽标更改为不同的按钮
  • CSS @import 及其顺序

    是否可以使用 importone像这样的 css 文件 import file1 some css here import file2 chrome 无法识别上述第二个导入 但这可以工作 import file1 import file2
  • css bootstrap 下拉菜单在 IE 中看起来不同

    我正在使用CSS引导程序3 2 0 http getbootstrap com css 然而 当在 IE 中查看该网站时 菜单选项周围有一个黑色边框 而且下拉菜单按钮看起来也有所不同 如果您查看该网站http getbootstrap co
  • Javascript - HTML Canvas 上的 Gecko 边框半径自适应(CSS border-radius)

    我试图弄清楚如何将 border radius css 属性的行为重现到 HTML 画布中 所以我已经在 J avascript 中做了一些事情 以便使用特定的半径 对于每个角 来计算给定形状的正确边界 如果需要的话 这是上一个问题 Gec
  • CSS 链接图像带有下划线(“a”显示设置为阻止)

    我有一个菜单 我希望每个单独的项目中文本周围的所有空间都能将用户带到指定的页面 我在网上查了一下 发现最好的解决方案是将 a 显示设置为阻止 如下 a display block height 100 text decoration und

随机推荐

  • Excel 仅粘贴特殊使用值,还将值的数据类型与值一起复制到目标单元格中

    我一直在尝试更多地了解 Excel 单元格 特别是它们的数据类型 如果有人对细节感兴趣 我的调查位于下面的编号点中 我的结论被标记为 A 到 D 我真的很感兴趣是否有人有什么可以补充的 答 每个 Excel 单元格都有一个属性 用于定义它将
  • Emacs shell:保存提交消息

    我几天前开始使用 emacs 在 emacs shell M x shell 中使用 git 时遇到问题 当我 git commit 或 git commit amend 时 它会打开 vim 来编辑并保存提交消息 我对此表示同意 但我找不
  • Python 中的 Hello World [重复]

    这个问题在这里已经有答案了 我尝试运行一个 python 脚本 print Hello World 我收到此错误 File hello py line 1 print Hello World SyntaxError invalid synt
  • asp.net在网站中添加自定义控件

    我想在我的网站中制作自定义控件 注意 不是网络应用程序 以下是代码 using System using System Collections Generic using System Linq using System Web using
  • 不使用 var 关键字声明变量

    w3schools 上写着 如果声明变量时不使用 var 则该变量始终变为 GLOBAL 在函数内部声明全局变量有用吗 我可以想象在某些事件处理程序中声明一些全局变量 但它有什么用呢 更好地利用内存 不 没有内存优势或类似的东西 w3sch
  • 以清晰的方式在 1 个轴上显示 3 个直方图 - matplotlib

    我生成了 3 组数据 它们以 numpy 数组的形式组织 我有兴趣将这三组数据的概率分布绘制为标准化直方图 所有三个分布看起来几乎相同 因此将所有三个分布绘制在同一轴上以便于比较似乎是明智的 默认情况下 matplotlib 直方图绘制为条
  • 利用 Python f 字符串和 Yaml 文件?

    如果我有一个 yaml 文件 其中包含一个带有括号符号 的字符串 与 python f 字符串配合使用 那么如何在此处利用 f 字符串插值 以这个简单的 yaml 文件为例 tmp yaml k1 val1 k2 val2 as well
  • 返回 C++ 对象时的复制和销毁

    我有一段相当简单的测试代码 include
  • 数据集子集的回归

    我想做以下事情并需要一些帮助 分别计算 身高 与 年龄 的斜率和截距 lm Height Age 一 每个人 二 性别 并创建一个包含结果 斜率和截距 的表 我可以使用 申请 吗 在下一步中 我想做一个统计测试 以确定性别之间的斜率和截距是
  • Yield return 返回什么样的类

    所以我注意到这段代码有效 class Program public static void Main Int32 numbers 1 2 3 4 5 using var enumerator Data GetEnumerator publi
  • 如何为Z3设置Java开发环境

    如何为Z3 SMT求解器设置Java开发环境 Note 作者撰写并回答 请参阅我可以回答我自己的问题吗 https stackoverflow com help self answer Z3 是一个带有 Java 绑定的 C 应用程序 首先
  • 如何在 JavaScript 中正确初始化 ErrorEvent?

    我需要开火ErrorEvent以编程方式 但无法弄清楚如何初始化事件的属性 这些属性是只读的 并且initEvent 仅初始化事件类型 是否冒泡以及是否可取消 I tried var myErrorEvent new ErrorEvent
  • 哪种算法可以解决我的婚礼餐桌问题?

    我的婚礼有 x 位客人 有 y 张桌子 有 z 个座位 客人A可以与客人B同桌 客人C不能与客人D同桌 给定所有客人之间所有连接的数据集 是否有已知的算法可以解决此类问题 我确信这种问题有一个抽象的父问题 称为 问题 x 或其他问题 或者它
  • Spring-data-redis @Cacheable java.lang.ClassCastException:java.util.HashMap无法转换为java.lang.String

    我想使用 spring data redis 在我的 spring boot 应用程序中缓存数据 但它总是说强制转换异常 我用谷歌搜索了一段时间 但没有任何想法 请帮助我 谢谢 任何建议都很棒 这是我的 Redis 配置 Configura
  • 空提交的 Git 补丁

    我创建一个空提交 git commit allow empty m something important 有时它很有用 例如协调 2 个 或更多 不同的 git 树 然而 当我 git format patch 空提交被省略 因为它们不与
  • Linux GCC 上 的 C++ 编译问题

    尝试过谷歌并在这里搜索 但没有运气 我正在尝试将一些使用 Windows 的代码移植到 Linux 上 然后我得到了大量的编译错误 我所做的只是 include
  • 半透明数据库

    我正在构建一个包含健康信息的应用程序 这个面向消费者的应用程序对我来说是新的 我想要一种方法来完全消除隐私问题 当我回顾保护可公开访问的数据库中的敏感数据的方法时 我经常遇到数据库半透明的概念 有原书 http www wayner org
  • AWS SNS 参数电话号码无效

    我正在尝试学习 aws sns 服务从我的网络应用程序发送短信 我正在本地主机上工作 params array credentials gt array key gt iam key secret gt iam secret region
  • 查找SQL记录中的并发用户数

    我有以下结构的表 UserID StartedOn EndedOn 1 2009 7 12T14 01 2009 7 12T15 01 2 2009 7 12T14 30 2009 7 12T14 45 3 2009 7 12T14 47
  • 使用 CSS 修复自定义字体行高

    在我正在开发的新网络应用程序上使用自定义字体时 我遇到了一个奇怪的问题 这种自定义字体 FF DIN 似乎具有自然垂直的偏离中心的行高 这迫使我放置一些顶部填充黑客来补偿按钮和输入等元素的顶部空间 示例 绿色字体 Helvetica Neu