我正在使用TCPDF创建包含日文字符的PDF。使用TrueType font ArialUni,大多数字符都会正确显示,除了日元符号显示为方框而不是¥。
以下是使用ArialUni生成的PDF的片段:
所以我尝试了另一种字体。以下是使用GT200001生成的PDF的相同部分:
以下是使用Helvetica的相同部分:
以下是使用GNU's 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');
答案 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);