2

将 Prestashop 1.5.5.0 用于双语商店(英语/法语),我注意到为发票生成的 PDF 具有明显不同的呈现方式,具体取决于它是用英语还是法语生成的。

最明显的区别是:

  • 使用的字体系列在英文中有所不同:字母明显更大(尤其是小写),并且形状不同;但是,我无法确定它是哪种字体。
  • 在英语中,每个应该是粗体的文本元素都以正常的字体粗细出现(不是粗体);我的猜测是英文中使用的字体系列没有粗体变体。

这是两种字体的比较(法语左,英语右):

字体比较

可以肯定的是,我对文件做了一个很小的更改invoice.tpl(我只是在内容的某处添加了一个简单的点),然后我重新下载了两种语言的 PDF 发票:更改出现在两种语言中。所以两种语言都使用相同的 TPL 文件。然而他们不使用相同的字体系列。

我的问题是:我应该在哪里寻找以纠正它?
我在 TPL 文件中找不到任何字体系列声明,我不明白为什么英语会使用与法语不同的字体系列。

编辑:顺便说一句,如果有人能够(以合理的确定性)识别英文使用哪种字体(见上图),请在评论中告诉我,因为我可以使用该信息搜索所有网站的文件,也许知道这个问题来自哪里?...

4

2 回答 2

3

因此,我刚刚发现您可以通过 Acrobat 本身(菜单文件 > 属性,字体选项卡)获取 PDF 文档中使用的字体列表。

这使我能够识别英文发票 PDF 中使用的字体:DejaVuSans。我在站点的所有文件中对这个词进行了搜索,我发现了我的罪魁祸首classes/pdf/PDFGenerator.php,其中定义了这个变量:

public $font_by_lang = array(
    'ja' => 'cid0jp',
    'bg' => 'freeserif',
    'ru' => 'freeserif',
    'uk' => 'freeserif',
    'mk' => 'freeserif',
    'el' => 'freeserif',
    'en' => 'dejavusans',
    'vn' => 'dejavusans',
    'pl' => 'dejavusans',
    'ar' => 'dejavusans',
    'fa' => 'dejavusans',
    'ur' => 'dejavusans',
    'az' => 'dejavusans',
    'ca' => 'dejavusans',
    'gl' => 'dejavusans',
    'hr' => 'dejavusans',
    'sr' => 'dejavusans',
    'si' => 'dejavusans',
    'cs' => 'dejavusans',
    'sk' => 'dejavusans',
    'ka' => 'dejavusans',
    'he' => 'dejavusans',
    'lo' => 'dejavusans',
    'lv' => 'dejavusans',
    'tr' => 'dejavusans',
    'ko' => 'cid0kr',
    'zh' => 'cid0cs',
    'tw' => 'cid0cs',
    'th' => 'freeserif'
    );

禁用(评论)该'en' => 'dejavusans',行确实解决了问题。

显然,这有点骇人听闻,因此,如果有人知道为什么英语在该列表中(而不是法语)的信息,并且如果有更好的方法来处理此问题,我会全力以赴。:)

于 2014-12-09T09:31:42.460 回答
1

“顺便说一句,如果有人能够(以合理的确定性)识别出英文中使用了哪种字体(见上图),请告诉我”

您可以自己(几乎)绝对确定地确定在这两种类型的 PDF 文件中使用了哪些字体。只需运行以下命令:

pdffonts -f 1 -l 5 pdffile.pdf

(这显示了从 PDF 的第 1 页到第 5 页使用的所有字体,以防您对其他页面不感兴趣......)

如果no两列都得到 aemb以及sub,则该字体没有嵌入到 PDF 中,您的 PDF 查看器可以自由使用它认为合适的任何合适的替代字体。

pdffonts适用于 Linux、Unix、Mac OSX 和 Windows。

于 2014-12-08T20:50:57.047 回答