2013-06-03 41 views
10

這裏已經是問題:如何檢查哪些字體包含perl的特定字符?

我有很多不同的字體。其中許多是「ascii only」,我需要檢查哪些字體包含多個重音字符。 (拉丁語 - Unicode代碼點 - 文本編碼爲UTF-8),如:(áäčďéěíĺľňóôöőŕřšťúůüűýž)

主要有:

  • TrueType字體(擴展名爲.ttf)
  • 的TrueType集合(擴展名.ttc)
  • OpenType字體(.otf)的

什麼是通常的(正確)的方式使用Perl做到這一點? (這是我知道的唯一一種語言,上面的問題是針對C的)。在我開始安裝包含「font」:)的所有CPAN模塊之前詢問。

我在OS X上(如果這很重要,並且可以安裝任何macports軟件包 - 如果有幫助的話)。

+1

有一個看看我的答案爲[這個問題](http://stackoverflow.com/questions/15896493/how-can-one-find-the-unicode-碼點 - 即-A-字體具有-字形換上-A-的Debian/15905540#15905540)。 – nwellnhof

+0

@nwellnhof不幸的是,我無法在OS X上安裝'Font :: FreeType'。編譯FreeType.xs引發錯誤。幸運的是@mob的suggetion'Font :: TTF'安裝得很乾淨。無論如何,很高興知道,這裏是另一種解決方案。 – cajwine

+0

不是perl,但是爲了SEO,這個python腳本很好用:http://unix.stackexchange.com/a/268286/26952 –

回答

3

對於.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建議從here來)

+0

'Font :: TTF'是一個不錯的模塊,但它需要對TrueType和OpenType格式。順便說一句,'$ font - > {cmap} - > ms_table'返回一個散列,它將Unicode代碼點映射爲字形ID。這個散列應該比' - > reverse'返回的數組更容易使用。 – nwellnhof

相關問題