Как проверить, какие шрифты содержат определенный символ с 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предложение появилось из здесь)