PHP TCPDF-半角假名被认为是全角

时间:2018-09-15 09:20:16

标签: php tcpdf full-width kana

我在渲染包含半角假名的文本字符串时遇到问题。它认为半角假名是全角假名,因此结果如下:

Half-width kana being considered as full-width

这是我的代码段:

PDF::Cell(15, 6, '商品コード', 1, 0, 'C', 0, '', 0);

我还使用TCPDF中提供的cid0jp字体显示日语字符:

PDF::SetFont('cid0jp', 'B', 9);

最后,我希望它保持半角片假名以适合单元格并删除不必要的空间。

使用的TCPDF库:https://tcpdf.org/

1 个答案:

答案 0 :(得分:0)

使用cid0jp字体时,字体呈现将留给PDF阅读器使用,这可能会导致不同阅读器和操作系统之间的呈现差异。间距差异可能非常大,但是我不确定这是TCPDF的实现问题还是仅依靠读者提供字体的结果。

下面,我提供了一个示例,比较了cid0jp中该文本的Microsoft Edge和Foxit Reader呈现。我还在第二行中包含了全角版本。 Edge的半角间距比Foxit靠得更近。 Google Drive的PDF预览与Foxit的功能相同,只是在半角宽度之间留有额外的间距。

由于您正在使用的空间太紧,可能值得在文档中嵌入特定字体。在我的测试中,就渲染而言,这要可靠得多。 (我还在下面提供了该测试的屏幕截图。如果您不希望每个文件中都包含整个字体,请确保启用子设置。)

以防万一您可能不知道该怎么做:

$embfont = TCPDF_FONTS::addTTFfont('/Path/to/font.ttf', 'TrueTypeUnicode', '', 32);
$pdf->setFont($embfont, '', '9');
$pdf->Cell(15,6,'商品コード',1,0,'C',0,'',0);

带有cid0jp的示例:

Example of cid0jp rendering differences

带有嵌入式字体的示例:

(不可否认,这种字体在小尺寸字体上不是很好。)

Examples with embedded font