【问题标题】:Text/Font rendering in Web browsers. How is it achieved?Web 浏览器中的文本/字体呈现。它是如何实现的?
【发布时间】:2023-03-07 23:05:01
【问题描述】:

前提:我知道 PDF 文本是通过 C 库呈现的,该库可以理解字体并能够以图形形式呈现它们。例如,开源 PDF 库(如 poppler 或 mupdf)依赖于负责渲染字体的 freetype2。 问:我想知道 HTML Web 浏览器中使用哪种方法来呈现文本和字体。

【问题讨论】:

    标签: html pdf text fonts browser


    【解决方案1】:

    PDF 通常包含呈现文档所需的所有内容,包括字体。根据wikipedia

    可移植文档格式 (PDF) 是一种用于表示 以独立于应用软件、硬件、 和操作系统。 [2]每个 PDF 文件都封装了一个完整的 固定布局平面文档的描述,包括文本, 显示它所需的字体、图形和其他信息。

    浏览器通常(希望)遵循 W3C 定义的标准。例如,在http://www.w3.org/TR/css3-fonts/ 中,我们有以下内容:

    字体资源可能是本地的,安装在用户所在的系统上 代理正在运行或可下载。对于本地字体资源 可以直接从字体中获取描述信息 资源。对于可下载的字体资源(有时称为 web 字体),描述性信息包含在参考中 到字体资源。字体系列通常不包含 字体属性的每个可能变化的单面。 CSS 字体选择机制描述了如何匹配给定的一组 CSS 给定字体的字体属性。

    如果您真的想深入了解浏览器如何呈现字体,请熟悉http://www.w3.org/TR/css3-fonts/

    因此,CSS 为网页设计师提供了指定要使用的字体的优先级的能力。例如,W3C 提供了以下示例:

    body { 
        font-family: Helvetica, Verdana, sans-serif; 
    }
    

    如果 Helvetica 可用,它将在渲染时使用。如果两者都没有 Helvetica 和 Verdana 都存在,然后是用户代理定义的 sans 将使用衬线字体。

    【讨论】:

    • 您认为浏览器中使用的系统在呈现文本时是否会比 pdf 库更快?我怎样才能找到这些信息?
    • 当前一代的浏览器速度非常快。我的直觉是,如果您不会看到使用不同字体变化的速度差异。具体到您的问题,这将取决于浏览器本身,我不确定该信息是否已发布。您必须研究每个浏览器的 layout engines 的差异。
    • 那么,原则上,每个不同的引擎可以依赖不同的 C 库或源代码部分来呈现字体?不是有一个通用的链接库吗?例如,我是否应该在 WebKit 或 Gecko 中查看自己,以了解用于呈现字体的内容?
    • Bingo... 这是一个兔子洞,除了更好地了解这些引擎的工作原理之外,它可能不会带来太大的收益。但是,在确定如何更快地渲染字体时,您可能会徒劳无功。但是,如果您确定了一些改进,您可能希望与更大的社区分享它们,甚至可能为一些开源引擎做出贡献。
    • 这其中涉及的变量太多,因此无法给出明确的答案。字体渲染的速度不受文件格式、HTML 或 PDF 的影响,尽管 PDF 面向排版可能需要比 HTML 更高的字体渲染质量。速度来自于实现,FreeType 是基于软件的,Adobe Reader 中的字体引擎是硬件加速的。浏览器也可能使用底层平台(Windows、Linux 等)字体引擎,该引擎又可能是硬件加速的。
    猜你喜欢
    • 2011-07-22
    • 2023-03-07
    • 2010-10-27
    • 1970-01-01
    • 2012-08-08
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多