Кирилица в TCPDF [поделитесь шрифтами]

Аватар пользователя seaji seaji 17 ноября 2009 в 1:53

Здравствуйте,
у меня такая ситуация. Использую TCPDF для генерации PDF файлов. Эта библиотека на ура принимает UTF-8, но мне категорически не нравятся размеры файлов.
Скажем, если я использую в документе её стандартные freesans и freeserif, то 1 страничный документ получается в 1,2 мегабайта. Это все потому, что TCPDF включает в файл PDF юникодные шрифты freeserif и freesans.

Прочитав README я понял, что размер этих шрифтов можно уменьшить, если использовать cp1251 (например).

Делается это колдовством с:

<?php
require('makefont.php'); 
MakeFont('times.ttf','times.ufm',true,'cp1251');
?>

Так вот, у меня вопрос.
Может уже у кого есть эти файлы шрифтов сжатые под cp1251? Чтоб мне не заниматься шаманством?
Киньте сюда плиииз эти файлы.

PS. про $html = iconv("windows-1251","utf-8", $html); я знаю

Комментарии

Аватар пользователя v1adimir v1adimir 17 ноября 2009 в 2:13

по-хорошему, правильная библиотека по генерации pdf должна поддерживать загрузку не всего шрифтового набора в готовую pdf-ку, а только глифов используемых в документе.

"Reducing the Size of TrueType Fonts" в http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf_fonts ?

Аватар пользователя seaji seaji 17 ноября 2009 в 2:29

"v1adimir" wrote:
Reducing the Size of TrueType Fonts

Да, я это все читал, просто думал у кого то уже файлы есть готовые.
Если нет, то придется самому шаманить.
Если все получится, то выложу здесь руководство.

Аватар пользователя seaji seaji 18 ноября 2009 в 3:55

Да, жудкая это вещь TCPDF.
Все, что у них описано по поводу уменьшения размеров шрифтов не работает. Уже убил целый день на метод проб и ошибок.

Аватар пользователя v1adimir v1adimir 18 ноября 2009 в 4:33

если ты про вычленение cp1251, то я попробывал сделать как описано в доках..

ttf2ufm -b -L cp1251.map times.ttf times

получил
30K times.afm
72K times.pfb
30K times.ufm

исходный times.ttf был 400K. явное уменьшение в объеме.
если актуально -- http://outbox.newmental.ru/times.tgz

Аватар пользователя seaji seaji 18 ноября 2009 в 15:17

С вычлинением у меня было все нормально.
проблемы начинались с ипользования MakeFont() - сыпались ошибки типа не найден глиф такой то.
потом они продолжились с TCPDF() - там то же не все гладно и очевидно.
В общем, методом проб и ошибок я победил это проблему (за сутки).
Надеюсь сегодня опубликовать описание.

Аватар пользователя chumfume chumfume 25 ноября 2009 в 13:28

Подскажите пожалуйста: у меня проблема с кириллицей в той же библиотеке, в конкретном шрифте (TagitCTT) она отображается кирпичами, хотя в других (comic) все как надо. Оба шрифта добавлялись мною, алгоритм процедуры одинаковый.

Аватар пользователя v1adimir v1adimir 25 ноября 2009 в 20:25

chumfume wrote:
Подскажите пожалуйста: у меня проблема с кириллицей в той же библиотеке, в конкретном шрифте (TagitCTT) она отображается кирпичами,...

надо или шрифты брать качественные или имеющиеся проверять на кодировку.
первое можно начать искать здесь -- http://en.wikipedia.org/wiki/Free_software_Unicode_fonts,
для второго -- http://fontforge.sourceforge.net/

шрифты еще можно посмотреть здесь -- http://openfontlibrary.org/ и, конечно же, шрифты идущие в поставке винды на редкость качественные.

Аватар пользователя seaji seaji 25 ноября 2009 в 14:09

"chumfume" wrote:
в конкретном шрифте (TagitCTT) она отображается кирпичами

Скорее всего в этом шрифте нет юникода.
Я решил свою проблему путем преобразования типа шрифта из TrueType в Type1 в кодировке cp1251.
Подробнее можно почитать тут: http://www.drupal.ru/node/37044

Аватар пользователя chumfume chumfume 25 ноября 2009 в 15:47

спасибо, буду шаманить и параллельно наводить порчу на дизайнера кот выбрал этот шрифт)))

Аватар пользователя chumfume chumfume 25 ноября 2009 в 16:16

не получилось, наш проект тоже на utf-8, вместо хака я вставил $html = iconv("cp1251","utf-8", $html);. В результате кирпичи сменились на знаки "?".

Аватар пользователя seaji seaji 25 ноября 2009 в 23:34

"chumfume" wrote:
html = iconv("cp1251","utf-8", $html);.

Этого мало. Почитайте мое описание. Там как минимум в 4 местах нужно код хакать.

Аватар пользователя chumfume chumfume 26 ноября 2009 в 15:30

Спасибо большое всем, но проблема была решена просто: взяли проверенный times и с помощью FontLab Studio вставили нужное начертание символов))))))))))))))

Аватар пользователя 1Andres 1Andres 9 сентября в 7:15

Может кому то ещё пригодится.
Папка fons с работающей TCPDF (использую Arial): https://truewebstories.ru/sites/default/files/0my_files/blog/tcpdf/font.zip
Больше инфы про шрифты (и не только) в TCPDF: https://truewebstories.ru/zametki/tcpdf-prakticheskie-zametki-dokumentac...

Аватар пользователя PVasili PVasili 20 ноября в 14:22

В новых версиях в папке tools есть утилита tcpdf_addfont.php
Запускается из командной строки /путь/tcpdf_addfont.php [options] -i /путь/font.ttf

Дополнительные options смотрим в файле. Можно сразу несколько файлов конвертить.

На выходе, в папке fonts tcpdf генерятся *.php, *.z, *.ctg.z