Google DOMPDF 生成的 PDF 中的 Webfonts

Google Webfonts in PDF generated by DOMPDF

我在使用 dompdf 转换为 PDF 的页面中使用了两种网络字体。我在 header:

中有这个
<link href='http://fonts.googleapis.com/css?family=Signika:600|Roboto+Condensed' rel='stylesheet' type='text/css'>

然后我在 CSS 规则中使用它们,例如

body {
  font-family: "Roboto Condensed", sans-serif;
  [ ... ]
}
h1 {
  font-family:'Signika', Arial, Helvetica, sans-serif;
  [ ... ]
}

现在,当我生成 PDF 时,h1 显示为 "Signika" 字体,但 "Roboto Condensed" 被 Helvetica 或其他一些标准 sans-serif 字体取代。

如果我打开 "preview" 文件(即我随后包含在 PDF 生成脚本中的 php 页面),"Roboto Condensed" 会按预期显示,但不会把它变成PDF。但正如我所写,"Signika" 存在于 PDF 中,这对我来说有点奇怪。顺便说一句,我还尝试将 font-face 规则直接包含在 pdivli 等的 CSS 规则中,但这不会改变任何内容。

有什么解决方法的建议吗?


EDIT/ADDITION:

仔细想想,这两种字体的不同之处在于,Roboto Condensed 的名称中有一个 space。我想知道这是否会导致问题(即 dompdf 无法处理这样的字体名称)?但只要我从 Google 服务器获取字体,我就无法更改它。

我自己找到了解决方案:

正如我在编辑中添加到我的问题中的那样,原因显然是字体系列名称 "Roboto Condensed" 包含一个 space,dompdf 似乎不喜欢它。

我下载了字体,使用 Fontsquirrel 上的字体生成器创建了三个版本,并将它们连同此样式表放在我的服务器上:

@font-face {
    font-family: 'roboto_condensedregular';
    src: url('robotocondensed-regular-webfont.woff2') format('woff2'),
         url('robotocondensed-regular-webfont.woff') format('woff'),
         url('RobotoCondensed-Regular.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}

然后,在我的 CSS 规则中,我在 font-family: roboto_condensedregular, sans-serif;

中使用了新的字体名称 roboto_condensedregular

现在可以使用了,在 PDF 中也是如此。

您实际上不需要执行所有这些操作。只需使用 @import 选项即可将字体嵌入 html。使用 laravel-dompdf.

非常有效

screenshot