【发布时间】:2018-12-03 09:40:50
【问题描述】:
我正在使用 Wicked pdf 在 rails 4 应用程序中生成 pdf。我需要在 pdf 中呈现 urdu 字体。根据Nikhil 和Ashitaka 的这两个答案,我从here 下载了Jameel Noori Nastaleeq 字体,将它们安装在我的本地并将它们添加到assets/fonts 文件夹中。预编译资产后,在我的 pdf.scss 中定义字体系列
@font-face {
font-family:"Jameel Noori Nastaleeq";
src:url("Jameel Noori Nastaleeq/Jameel Noori Nastaleeq.ttf");
font-weight: bold;
}
.urdu-font {
font-family: 'Jameel Noori Nastaleeq';
}
我的 pdf 视图文件看起来像这样
%head
%meta{:charset => "utf-8"}
= wicked_pdf_stylesheet_link_tag 'pdf'
%body.urdu-font
= render "custom_form"
其中 _custom_form.pdf.haml 部分包含包含乌尔都语文本的输入字段。
Urdu 字体在本地在 pdf 和调试模式下都可以正常工作,但是在部署时,它不能在 pdf 文件中正确呈现,而在调试模式下却可以正常呈现。
在调试模式下,我检查了字体资源的路径,即src:url(file:////home/deploy/<remote-location>/releases/20180622133137/public/assets/Jameel Noori Nastaleeq/Jameel Noori Nastaleeq-39c54f1646a6a4f68408f3a26400e457cb1e52226c284d8c4ab36a3363520e0f.ttf)
这看起来很好,字体在这个 html 调试模式下实际上渲染得很好。
附:我还看到了这个post,它使用了googleapi 提供的远程字体。我已经尝试过了,它可以工作,但我想使用本地字体资源。
【问题讨论】:
-
为什么要在
@font-face声明中添加font-weight: bold;?您的常规体重@font-face规则在哪里? -
正如我提到的
Ashitaka's answer。我只是希望我的字体默认为粗体,所以我没有找到任何理由删除它。 -
@Mike'Pomax'Kamermans 在您指出
@font-face声明之后。我搜索并发现它只会为粗体字符声明字体。但是,删除之后,问题仍然存在。字体不会在 pdf 上呈现,但在 html 上呈现良好。 -
我对那个
file:///链接有点困惑,因为它绝对不能在浏览器中工作(出于非常好的安全原因,您的浏览器不应该查看外部您正在加载的文件所在的目录)。 -
该文件链接位于项目目录中,字体文件放置在预编译后放置其他资产(如 javascript 和 css 文件)的位置。所以没什么好担心的。浏览器读取该文件没有问题。
标签: css ruby-on-rails pdf fonts wicked-pdf