为什么 Opera 中的文本以更大的字体大小呈现?

2023-11-21

我正在开发一个需要或多或少像素完美的 HTML 页面,我注意到在 Opera 10 中,字体渲染得比在其他浏览器中更大,尽管字体大小实际上是相同的。

请在 Opera 10 和其他浏览器(如 Firefox 3.6)中查看此示例页面:

http://troy.onespot.com/static/stack_overflow/opera_font_size.html

或者,下面的屏幕截图说明了该问题:

http://skitch.com/troywarr/d47m1/font-size

“50px”和“46px”文本后面的红色框(两者都具有相应的字体大小)的高度均为 50px。

在 Firefox 3.6 中,“50px”中“p”的下降部分与其后面的红色框的底部对齐。在 Opera 中,“50px”中“p”的下降部分悬挂在下方; “46px”更接近 Firefox 中的“50px”。对我来说,这表明 Opera 渲染的字体大约大了 10%。

这个问题以及其他正文文本的相同问题,完全破坏了我在 Opera 10 中的页面布局。如果您对可能导致此问题的原因有任何想法,或者至少如何预防/修复它,请告诉我。

Thanks!


UPDATE:

看来我没有安装 Helvetica 的正确副本 - 我将其从字体堆栈中删除,并且在测试页面上渲染的文本没有看到任何差异。

我更新了测试页面,仅使用通用的“sans-serif”字体系列,所以希望我们现在都看到同样的事情。

有趣的是,使用通用的“serif”字体在 Opera 和 Firefox 中的显示效果完全相同。

这个问题是否只是 Opera 显示通用“sans-serif”字体的一个怪癖?


更新2:

这可能很重要:我使用的是 Mac OS X Snow Leopard。我现在正在尝试其他字体,看看是否可以进一步隔离问题。


更新3:

我使用 Arial 创建了另一个测试页面:

http://troy.onespot.com/static/stack_overflow/opera_font_size_reset_arial.html

现在 Opera 和 Firefox 几乎完全匹配!

在这个项目中我可能可以使用 Arial 代替 Helvetica 。据我所知,我有一个完全原装的 OS X 版本的 Helvetica - 所以我不能承受不同用户在我的页面上看到的字体之间的任何差异。我会坚持使用久经考验的真正的 Arial。

但这意味着什么——OS X 的默认无衬线字体是否在 Opera 或其他东西中呈现奇怪的效果?


当我在 Windows 7 x64 上使用 Opera 11.10 遇到类似问题时,我遇到了这个线程。

Opera 默认使用 20px 作为正文字体大小(而不是其他浏览器使用的 16px)。即使在卸载、删除 Opera 首选项并重新安装后,这种情况仍然存在。事实证明Opera 将尊重您的系统字体大小偏好(Win7 上在“控制面板\外观和个性化\显示”下设置)用于呈现的网站文本而其他浏览器(我测试了 FF4、Chrome 11、Safari 5、IE 9)则没有。我的系统字体大小设置为 125%,这解释了 20px。当我将系统字体缩放设置为 100% 后,Opera 的行为与其他字体相同。

我不确定哪种行为更正确(在某种程度上,Opera 尊重我的字体选择是件好事),但由于其他浏览器不这样做,所以这是“意外的”。我没有 Mac 来测试,但也许 MacOS 有类似的系统字体首选项?

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

为什么 Opera 中的文本以更大的字体大小呈现? 的相关文章

随机推荐

  • 如何使用 Python-Telegram-Bot 获取 Telegram 用户的用户名、名字或姓氏?

    我正在创建一个 Telegram 机器人Python Telegram Bot 我知道update message chat id返回用户的聊天 ID 但我需要知道如何获取用户的用户名或名字和 或姓氏 我找到了This在 Telegram
  • Spring RowMapper 接口到底是如何工作的?

    我正在学习 Spring Core 认证 我对 Spring 如何处理 JDBC 查询有一些疑问 所以我知道我可以通过各种方式从数据库表中获取数据 具体取决于我期望获取的数据类型 1 查询简单型 作为 int long 或 String 我
  • 一个完整的c#操作系统

    我看到了这个话题here 我想知道这是否合法 听起来像 以及这样做的缺点是什么 在某些架构中独立运行它需要什么 谢谢 尝试用托管语言创建操作系统目前是一个 有趣的研究问题 这意味着这似乎是可能的 但仍有相当多的重要问题需要解决 例如 我不希
  • ASP.NET 身份和移动客户端

    最新版本的 ASP NET 包括新的身份验证框架 ASP NET Identity 它应该是所有新的和近期的 ASP NET 项目和网站中用户管理的核心构建块 我已经看到它可以很好地与 WebAPI 集成 但还没有看到任何集成为移动客户端设
  • 数据湖和大数据是一样的吗?

    我试图了解数据湖和大数据之间是否存在真正的区别 如果你检查一下这两个概念 它们就像一个大存储库 它保存信息直到有必要为止 所以 我们什么时候可以说我们正在使用大数据还是数据湖 我不能说我以前遇到过 大存储库 这个术语 但要回答最初的问题 不
  • 如何让 fancyBox 2 调整其高度以适应其内容?

    我正在努力让我的fancyBox当其内容高于视口时扩展高度 这样 用户就可以使用浏览器的滚动条滚动其内容 相反 我的 fancyBox 不断获得自己的滚动条 我只是使用内联内容 而不是iframe 这些是我设置的选项 fancybox fa
  • 如何可靠地去除破坏代码的不可见字符?

    我正在尝试构建一个小书签 并被这个我刚刚弄清楚的问题所困扰 u8203字符 Chrome 在我的代码块 粘贴到 JS 控制台后 无助地告诉我是一个 无效字符非法 幸运的是 Safari 告诉我这是一个 u8203 我正在 Sublime T
  • NSSortDescriptor - 基于另一个数组对描述符进行排序

    我有一个核心数据应用程序 我想获取一种对象 User User拥有财产userId 我有另一个数组userIds 1 4 3 5 我想创建一个NSSortDescriptor这对我的User基于对象的顺序userIds 在数组中 这可能吗
  • powershell v2 - 如何获取进程ID

    我有一个应用程序 它运行自身的多个实例 例如 AppName exe instance1 AppName exe instance2 AppName exe instance3 我正在尝试使用 Powershell v2 创建一个简单的脚本
  • 如何偏移多边形边?

    I have a list of point2D that makes a closed polygon Now I want to create another set of 2D points by offsetting the pol
  • EntityType“ApplicantPosition”没有定义键

    运行我的第一个 asp net mvc 应用程序时出现此错误 我认为实体框架会自动创建以 Id 结尾的列名的键 这不是正确的吗 正如您所看到的 ApplicantPositionID 将是一个包含 2 列作为主键的表 因为它与申请人和职位相
  • 如何将字符串分配给可变静态变量?

    我想为全局变量赋值 但它一直出现编译器错误 static mut NameArr static str 20 0 20 fn main unsafe static mut S1 String to string S1 push 0 Name
  • EF Core 3.1 是否支持数据库优先方法?

    我们正在移植一个ASP NET MVC 4 x申请到ASP NET Core 3 1 当前应用程序正在使用EF 6 xDB优先方法 作为此迁移的一部分 我们将使用EF Core 3 1作为当前的替代方案EF 6 x 所以问题是 EF Cor
  • 安全地覆盖 RAM 中的 Python 变量? [复制]

    这个问题在这里已经有答案了 我正在用 Python 编写一个程序 其中涉及对密码进行哈希处理 假设我用它来获取密码 import getpass password getpass getpass Password 然后对其进行哈希处理 有没
  • WS_EX_APPWINDOW 是做什么的?

    这要么只是一个已弃用的窗口样式 没有文档 要么是我在搜索它时犯了一个缺陷 我的问题是 这个标志有什么作用 是否有我可能需要的支持的等效项 非常感谢您的建议 WS EX APPWINDOW是一种扩展窗口样式 记录在MSDN 它绝对不会被弃用
  • Connector/C++ MySQL 错误代码:2014,SQLState: HY000 和命令不同步错误为什么?

    您好 我使用 Connector C 并执行简单的 2 个 sql 命令 如下所示 第一个 select sql 运行正常 但第二个会导致此异常错误 ERR 命令不同步 你现在不能运行这个命令 MySQL 错误代码 2014 SQLStat
  • firebase .on("value") 和 .once("value") 之间的区别

    在更新子 Firebase 时 使用时会再运行一次 once 从 firebase 获取值并在应用程序中添加新行 但使用时 on 该代码适用于更新子项 但不适用于添加新子项 因为它从应用程序中删除了该行 尽管它添加到了 firebase 但
  • 是否可以获得“setter”的 setter 函数的引用?

    例如 在这段代码中 var o set a value this b value get a return this b 是否可以获取对该 setter 函数的引用o a这样如果引用被分配给f那么我可以做f call other value
  • 为什么Javascript函数“arguments”不是node.js中Array的实例?

    最近看了很多 NodeJS 和 Javascript 代码 似乎arguments 不是 Array 的实例 但仍然表现得像一个实例 所以人们做了类似的事情Array prototype slice call arguments or sl
  • 为什么 Opera 中的文本以更大的字体大小呈现?

    我正在开发一个需要或多或少像素完美的 HTML 页面 我注意到在 Opera 10 中 字体渲染得比在其他浏览器中更大 尽管字体大小实际上是相同的 请在 Opera 10 和其他浏览器 如 Firefox 3 6 中查看此示例页面 http