不能用TCPDF显示¥,但其他汉字是可以的

时间:2012-09-21 08:14:25

标签: php tcpdf true-type-fonts

我正在使用TCPDF创建包含日文字符的PDF。使用TrueType font ArialUni,大多数字符都会正确显示,除了日元符号显示为方框而不是¥。

以下是使用ArialUni生成的PDF的片段:

using ArialUni

所以我尝试了另一种字体。以下是使用GT200001生成的PDF的相同部分:

using GT200001

以下是使用Helvetica的相同部分:

using Helvetica

以下是使用GNU's FreeSans的相同部分:

using FreeSans

我希望第二行显示为“(渋谷猿,¥8,000)”

我并不感到惊讶Helvetica和Freesans无法正确渲染汉字,但我无法理解为什么其他两种字体可以渲染汉字,而不是日元符号,这更常见。

创建PDF的Web服务器是运行Ubuntu的LAMP。我正在使用Chrome查看OS X上的PDF(使用浏览器中的视图)。我也尝试用Firefox下载PDF并在预览中显示。我得到的结果基本相同:ArialUni和GT200001不显示日元符号,而Helvetica和Freesans不显示汉字(但显示日元符号)。

我知道我可以为PDF的不同行/单元格使用不同的字体,但汉字和日元符号在同一行。

如何使用TCPDF将汉字和日元符号显示在一行中?

在我的PDF代码顶部附近,我使用TCPDF的addTTFfont()加载字体;

    $this->font = $this->addTTFfont(K_PATH_FONTS.'arialuni.ttf', 'TrueTypeUnicode', '', 32);

这是我用来编写PDF部分的代码。

        $pdf->SetFont('arialuni','',10);
        $pdf->MultiCell(105, $remarks_height, $remarks, 'B', 'L', false, 0, '', '', true, 1, false, true,  $remarks_height, 'T');

3 个答案:

答案 0 :(得分:5)

this wikipedia article中,您可以阅读有关此角色的更多信息。

基本上,有两种不同的方式来编写这个日语汉字,就像其他一些符号一样。从接受的答案“我正在使用¥,而不是¥”,当他真正想要使用双倍宽度的字符¥时,我们可以看到他正在使用'西方'或Unicode¥符号。

答案 1 :(得分:3)

亲爱的,我明白了。

我用的是¥,而不是¥。抱歉感到困惑!!

答案 2 :(得分:2)

我注意到TCPDF是关于字体的。 我尝试将它用于15种完全不同的语言,也有不同的写作风格,我使用的字体只有Arial UNICODE MS。

TCPDF具有将该字体转换为TCPDF友好文件的功能,这些文件是arialuni.ctg.z(70k),arialuni.php(447k)和arialuni.z(14M)。

功能是, http://www.tcpdf.org/fonts.php

$fontname = $pdf->addTTFfont('/path-to-font/ARIALUNICODE.TTF', 'TrueTypeUnicode', '', 32);