Как проверить, какие шрифты содержат определенный символ с perl?
Вот уже вопросы:
У меня много разных шрифтов. Многие из них "только ascii", и мне нужно проверить, какие шрифты содержат несколько акцентированных символов. (латинские - unicode codepoints - тексты кодируются как utf8), например: (áäčďéěíĺľňóôöőŕřšťúůüűýž)
В основном:
- Шрифты TrueType (с расширением .ttf)
- Коллекции TrueType (расширение .ttc)
- Шрифты OpenType (.otf)
Каков обычный (правильный) способ сделать это с помощью perl? (это единственный язык, который я знаю немного, и вышеупомянутые вопросы относятся к C). Перед тем, как начать, установите все модули CPAN, содержащие "font":).
Я нахожусь в OS X (если это имеет значение и может установить любой пакет macports - если это поможет).
Ответы
Ответ 1
Для файлов .ttf вы можете использовать Font::TTF
и связанные с ним модули:
use Font::TTF::Font;
my $font = Font::TTF::Font->open( "C:/Windows/Fonts/ariali.ttf" );
my @supported_codepoints = sort { $a <=> $b } $font->{cmap}->reverse;
Я выхожу из своей глубины, но там также есть модуль Font::TTF::Ttc
в дистрибутиве Font::TTF
, который вы могли бы сориться и посмотреть, можете ли вы извлечь дополнительную информацию о поддерживаемых кодовых точках.
(Font::TTF
предложение появилось из здесь)