【问题标题】:"Font_Glyph_Outline" Error when using WebFonts with DOMPDF将 WebFonts 与 DOMPDF 一起使用时出现“Font_Glyph_Outline”错误
【发布时间】:2013-07-14 23:06:55
【问题描述】:

我正在尝试实现 DOMPDF,一切正常(感谢多个 Stack 用户),但我现在在渲染 WebFonts 时遇到了问题。

根据 DOMPDF 的 Google Code 项目中的示例,可以使用 webfonts: http://pxd.me/dompdf/www/examples.php#css_at_font_face.html,html

我在页面中引用了字体,就像在 HTML 页面中一样:

<link href='http://fonts.googleapis.com/css?family=Roboto+Condensed:400,700,300' rel='stylesheet' type='text/css'>

我已经在 CSS 中引用了字体:

body{
    font-family: 'Roboto Condensed', sans-serif;
}

但 DOM PDF 报告:

Class 'Font_Glyph_Outline' not found

还有 DOMPDF 大师可以来帮助我吗?

【问题讨论】:

    标签: php cakephp webfonts dompdf google-webfonts


    【解决方案1】:

    不幸的是,我还不能发表评论:(但是您是否尝试在 dompdf_config.inc.php 文件中将“DOMPDF_ENABLE_FONTSUBSETTING”设置为 false?这可能(或可能不会)解决您的问题。除此之外,我不知道。

    有趣的阅读虽然关于类似DOMPDF issues

    【讨论】:

    • 是的,我已经尝试过了 :( 无济于事。同样感谢汤姆 :) ... PS。设置作者标签也不起作用:/
    • 你试过测试多种字体吗?这很奇怪,如果您按如下方式创建 dompdf 对象“$dompdf = new DOMPDF();”使用包含的库并调用 "$dompdf->add_info('Author', 'Tom'); 它应该可以工作!
    • 有关您正在编码的环境的更多信息可能会有所帮助。例如,您使用的是框架吗?我在 zend 中使用 DOMPDF,并且必须对其进行相当多的配置才能正常工作。
    • 抱歉,已经 O.O.O 几天了,回复晚了。是的,我正在使用 CakePHP,花了一些时间把它变成一个助手,但最终还是到了那里。 @BrianS 似乎在做某事。
    【解决方案2】:

    您的问题需要解决两个问题。更紧迫的是 PHP 错误,正如@tom-metcalfe 指出的那样,has yet to be resolved。可能有助于解决的两条信息是:dompdf 版本、PHP 版本。

    如果您确实解决了该错误,则需要解决另一个问题:at-font CSS 中的dompdf only understands named font weights。如果您可以自己维护 CSS,则可以解决此问题。

    您需要根据 CSS 的 True Type Font (TTF) 版本进行工作,因为 dompdf 目前只能嵌入 TTF。 Google Web Fonts at-font 服务根据访问浏览器提供最合适的格式。获取样式表visit the URL in a browser that requires TTF for web fonts 的TTF 版本。我在我的服务器上使用了 lynx(TTF 必须是未知浏览器的后备)。使用来自 Google 的样式表来创建您的自定义 CSS,例如:

    @font-face {
      font-family: 'Roboto Condensed Light';
      font-style: normal;
      font-weight: normal;
      src: local('Roboto Condensed Light'), local('RobotoCondensed-Light'), url(http://themes.googleusercontent.com/static/fonts/robotocondensed/v7/b9QBgL0iMZfDSpmcXcE8nL3QFSXBldIn45k5A7iXhnc.ttf) format('truetype');
    }
    @font-face {
      font-family: 'Roboto Condensed';
      font-style: normal;
      font-weight: normal;
      src: local('Roboto Condensed Regular'), local('RobotoCondensed-Regular'), url(http://themes.googleusercontent.com/static/fonts/robotocondensed/v7/Zd2E9abXLFGSr9G3YK2MsDR-eWpsHSw83BRsAQElGgc.ttf) format('truetype');
    }
    @font-face {
      font-family: 'Roboto Condensed';
      font-style: normal;
      font-weight: bold;
      src: local('Roboto Condensed Bold'), local('RobotoCondensed-Bold'), url(http://themes.googleusercontent.com/static/fonts/robotocondensed/v7/b9QBgL0iMZfDSpmcXcE8nDokq8qT6AIiNJ07Vf_NrVA.ttf) format('truetype');
    }
    

    请注意,font-weight 声明已修改为使用命名的权重,并且字体的“轻”变体具有自己的家族名称。由于 dompdf 不完全支持数字权重,因此您必须这样做。

    我不知道这些字体 URL 的稳定性如何。它们似乎是某种散列,因此当新版本发布时它们可能会消失。为了安全起见,您可能希望自己托管文件。

    【讨论】:

    • 谢谢布赖恩,现在不在办公室,所以我无法尝试,但我确实想知道它是否与 .ttf 有关...我想知道 webfonts 实际提供什么,我会明天看看。就像你说的那样,我可能会废弃托管的,自己为它们服务。
    • 好的@BrianS 我终于有机会花一些时间在这个项目上,不幸的是样式更改不起作用,甚至引用了truetype。 Class 'Font_Glyph_Outline' not found 还在被抛出:(
    • 有点晚了,但我又开始处理这个问题了。我仍然需要花一点时间来解决您的具体问题,但是您遇到的错误是类定义的错误排序。您可以在这里找到问题的解决方案:github.com/dompdf/dompdf/issues/585#issuecomment-19325100
    猜你喜欢
    • 2021-06-25
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2017-08-15
    • 2015-03-02
    • 2015-10-28
    • 2023-03-27
    相关资源
    最近更新 更多