html - 各种浏览器字体不一致,请问有解决办法吗?

标签 html css fonts

我正在做一个元素,其中内容容器的高度是有限的,并且在一些选定的浏览器(主要是 Android 上的 Chrome)上,文本似乎在不同的地方中断,尽管几乎所有字体属性看起来都相同,到目前为止我已经检查过:

  • 容器元素的宽度
  • 字体大小
  • 行高
  • 字体系列
  • 字母间距

所有这些在给定值和计算值方面都是相同的。

这通常不是什么大问题,但由于内容容器的高度限制,这些差异让我非常头疼。

我设法在 fiddle 中重现了这个问题使用以下代码:

HTML

<p>We are not able to sleep or We cannot sleep.</p>

CSS

p {
    font-family: "Times New Roman", serif;
    font-size: 11px;
    font-style: italic;
    letter-spacing: 0;
    max-width: 200px;
}

此示例中的文本在大多数浏览器中呈现在一行中,但在某些浏览器中最后一个词是“sleep”。出现在新的一行。

您可以在许多不同的浏览器中查看此示例的屏幕截图:

http://www.browserstack.com/screenshots/cf75bb4fa9a22db2e660a0073698be86b55becb6

我在这里缺少什么吗?有什么方法可以确保文本在多种设备和浏览器中以相同的方式呈现?

最佳答案

字体渲染的细节因浏览器和平台而异,无法在 CSS 中控制。此外,不同的计算机可能在同一名称下具有(略微)不同的字体,或者例如完全没有 Times New Roman(例如,大多数智能手机都没有)。

作为一种变通方法,如果特定的行划分很重要,请考虑将文本编写为预格式化(即在 HTML 源代码中按照它在显示中应出现的方式将其划分为行)并使用 white-space: pre。缺点是有些线可能会触及甚至穿过为元素保留的区域的右边缘。但是,如果您不设置背景或边框,这几乎不会引起注意。

关于html - 各种浏览器字体不一致,请问有解决办法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26485732/

相关文章:

javascript - 没有可用的数据,两侧中心(垂直 + 水平)与 HTML,CSS

javascript - 获取 HTML 选择元素的预选值

css - 居中当前wordpress水平子菜单和子子菜单

javascript - 在三个 CSS3 列中延迟加载图像

html - 防止嵌套内容被周围的css格式化

android - 如何将字体类型设置为webview

html - css:html 和 body 标签的宽度设置为 100% - 为什么需要这样做?

javascript - 简单 : HTML/Javascript Can't get this button to work?

fonts - OpenType/TrueType 中复合字形的组成部分

android - Android 上的字体回退