【问题标题】:Zend PDF loaded ttf with language support but still not rendering characters such as Russian or PolishZend PDF 加载了具有语言支持的 ttf,但仍不呈现俄语或波兰语等字符
【发布时间】:2015-01-21 19:13:17
【问题描述】:

Zend PDF 标准字体通常等于 Latin1 字符,因此要使用其他语言,应该引用适当的 ttf 字体,这就是我正在做的......

return Zend_Pdf_Font::fontWithPath($this->_getFontFileDir() . $fontFile)

确实使用了该字体,但无法呈现特定语言的字符:俄语 - цдгчкфсшдгч 或波兰语 - ńóźżćć

我尝试了多种支持适当语言的字体,例如 dompdf 库附带的 DejaVuSans。

在发送到 ->drawText(

之前,我也在检查字符编码
        $addressItem = @iconv(mb_detect_encoding($addressItem), "UTF-8", addressItem);           

        $page->drawText(
            $addressItem,
            $this->_width,
            $this->_height,
            'UTF-8'
        );

也许有人在这种情况下使用了一种字体,该字体已被证明可以处理上述失败的字符?

【问题讨论】:

  • 我们在将字符存储在 8 位字符的 127 和 255 之间的字节中的 iso-8859-x 编码和将字符存储在单字节或多字节序列中的 utf-8 之间是否存在一些混淆?它代表了相当一部分 unicode,涵盖了世界上大多数语言的字形。可能是您必须以某种方式从一个转换到另一个,因为您的字形在字体中由 127-255 范围内的值表示,而不是en.wikipedia.org/wiki/Cyrillic_script_in_Unicode中的高数字@

标签: php pdf fonts zend-pdf


【解决方案1】:

这只是字体问题,因为我在渲染土耳其语和波兰语文本时遇到了同样的问题:它们在屏幕上打印得很好(与 PHP 相呼应),但 PDF(使用 Zend_Pdf)渲染得不好,显示 (或根本不显示)正方形代替几个字符.. 我必须导入并尝试几种外部 .ttf 字体,然后才能找到有效的字体:我使用的是纯 Arial TTF 字体。 我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 2013-10-10
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2017-01-20
    相关资源
    最近更新 更多