Nano Hash - криптовалюты, майнинг, программирование

не может отображать ¥ с помощью TCPDF, но другие иероглифы в порядке

Я использую TCPDF для создания PDF-файлов, содержащих японские символы. При использовании шрифта TrueType ArialUni большинство символов отображаются правильно, за исключением символа иены. как квадрат вместо ¥.

Вот фрагмент полученного PDF-файла с использованием ArialUni:

используя ArialUni

Поэтому я попробовал другой шрифт. Вот тот же раздел полученного PDF-файла с использованием GT200001:

с использованием GT200001

А вот тот же раздел с использованием Helvetica:

с помощью Helvetica

Вот тот же раздел с использованием GNU FreeSans:

использование FreeSans

Я бы хотел, чтобы вторая строка отображалась как «(渋谷猿, 8000 иен)».

Я не удивлен, что Helvetica и Freesans не могут правильно отображать кандзи, но я не могу понять, почему два других шрифта могут отображать кандзи, но не символ иены, который встречается гораздо чаще.

Веб-сервер, создающий PDF-файлы, — это LAMP, работающий под управлением Ubuntu. Я просматриваю PDF-файлы в OS X с помощью Chrome (используя представление в браузере). Я также пытался загрузить PDF-файлы с помощью Firefox и отобразить их в режиме предварительного просмотра. Я получаю по существу те же результаты: 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');
21.09.2012

  • Я думаю, это означает, что ¥ закодирован неправильно... 21.09.2012
  • Вы не можете использовать это, потому что arialuni.ttf не имеет его в качестве символа. Вы можете отредактировать свой шрифт и добавить этот символ. 21.09.2012
  • Я не знаю, поддерживает ли TCPDF коды, можете попробовать с ¥? 21.09.2012
  • ¥ выходит как (渋谷猿, 8000 йен) Сейчас я ищу бесплатный редактор шрифтов. 21.09.2012
  • @MihaiIorga fonts.com/font/ascender/arial-unicode позволяет отображать ¥ без проблем в Ариалуни. Можете ли вы объяснить, что вы имеете в виду? 21.09.2012
  • @nneonneo вы имеете в виду в моем исходном коде PHP? Может в БД? Мы везде используем UTF-8; Я не уверен, как еще это закодировать. 21.09.2012
  • @ThunderRabbit Значит, строка правильно декодируется с UTF-8? Это интересная проблема. Я почти уверен, что проблема с кодировкой возникает где-то... но это может быть ошибка TCPDF. 21.09.2012
  • @nneonneo Я помню, как видел онлайн-дискуссию, в которой люди говорили, что это TCPDF, а программист TCPDF говорил, что это не так. Но сейчас не могу найти это обсуждение. Нашим решением в то время было использование разных шрифтов в зависимости от потребностей, но сейчас это не сработает. 22.09.2012

Ответы:


1

В этой статье в Википедии вы можете узнать больше об этом персонаже.

По сути, есть 2 разных способа написания этого японского кандзи, как это происходит с некоторыми другими символами. Из принятого ответа «Я использовал ¥, а не ¥» мы можем видеть, что он использовал «западный» или символ Unicode ¥, когда на самом деле хотел использовать символ двойной ширины ¥.

25.09.2012
  • Я забыл, что изначально клиент хотел узкий символ иены, но как только я объяснил проблему, я получил широкий символ или квадрат, они выбрали широкую версию. :-) 27.09.2012

  • 2

    О, дорогой, я понял это.

    Я использовал ¥, а не ¥. Извините за путаницу!!

    24.09.2012

    3

    Что я заметил в 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);
    
    25.09.2012
  • Спасибо за совет по конвертации. Я уже использовал это и даже пытался не конвертировать, чтобы посмотреть, решит ли это проблему. 27.09.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..