PHP TCPDF — полуширина кана считается полной шириной

У меня проблема с отрисовкой строки текста, которая содержит кана полуширины в PDF. Он считает половинную ширину каны полной шириной, поэтому получается что-то вроде этого:

Полуширина кана считается полной шириной

Это мой фрагмент кода:

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

Я также использую шрифт cid0jp, предоставляемый в TCPDF для отображения японских символов:

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

В конце я хочу, чтобы катакана с половинной шириной соответствовала ячейке и удаляла ненужные пробелы.

Используемая библиотека TCPDF: https://tcpdf.org/

0

Решение

Когда вы используете cid0jp шрифт, который вы оставляете рендерингом шрифта до программы чтения PDF, что может привести к различиям в визуализации между различными программами чтения и операционными системами. Различия в расстояниях могут быть довольно значительными, но я не уверен, является ли это проблемой с реализацией TCPDF или просто следствием того, что читатель предоставит шрифт.

Ниже я включил пример сравнения рендеринга этого текста в Microsoft Edge и Foxit Reader в cid0jp, Я также включил версии полной ширины во второй строке. Edge подошел немного ближе к расстоянию на полширины, чем Foxit. Предварительный просмотр PDF на Google Диске сделал то же самое, что и 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:

Пример различий в рендеринге cid0jp

Примеры со встроенным шрифтом:

(Правда, этот шрифт не очень хорош при небольших размерах.)

Примеры со встроенным шрифтом

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]