У меня проблема с отрисовкой строки текста, которая содержит кана полуширины в PDF. Он считает половинную ширину каны полной шириной, поэтому получается что-то вроде этого:
Это мой фрагмент кода:
PDF::Cell(15, 6, '商品コード', 1, 0, 'C', 0, '', 0);
Я также использую шрифт cid0jp, предоставляемый в TCPDF для отображения японских символов:
PDF::SetFont('cid0jp', 'B', 9);
В конце я хочу, чтобы катакана с половинной шириной соответствовала ячейке и удаляла ненужные пробелы.
Используемая библиотека TCPDF: https://tcpdf.org/
Когда вы используете 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:
Примеры со встроенным шрифтом:
(Правда, этот шрифт не очень хорош при небольших размерах.)
Других решений пока нет …