2012-03-17 26 views
7

我想查詢類似* nix的系統上可用的字體,理想情況下使用PHP 5.2或5.3,但系統中似乎沒有多少庫可用獨立的方式。 php-font-lib只是掃描一個目錄(code,demo),但我希望有一個更優雅的方式來做到這一點。 (在任何情況下,掃描文件夾只是任務的一部分;字體文件仍然需要打開以檢索名稱和其他元數據)。列出PHP中的可用字體

背景:我使用Inkscape在Web服務器上呈現PDF,並且想要確定可用於呈現文本元素的字體。我正在開發OS 10.6.8並在Linux上部署。

編輯:我找到了Pango的PHP wrapper,這是一種經常與開羅一起使用的高級字體渲染器;這兩個都用於Inkscape。包裝是相當新的,所以我不確定它是否可以產生一個字體列表 - 但它看起來很有趣:)

+0

用於打開fontfiles並讀取名稱/元數據,您可以使用fontforge庫。 – Pheonix 2012-03-17 12:33:51

+0

啊,我想你的意思是[編程](http://fontforge.sourceforge.net/scripting.html)?謝謝,我還沒有聽說過這個應用程序。我會放棄它。 – halfer 2012-03-17 12:52:53

回答

5

嘿!我做了一個小時左右的搜索,發現沒有什麼令人滿意的;然後像巴士一樣,找到幾個答案。這裏有另一種方法,從ImageMagick的convert -list font命令(顯然在v6.3.5-7 [source]之前從convert -list type重命名)。我想我比fc-list更喜歡這個,因爲輸出看起來像可以被解析爲YAML。

從Linux:

Path: /usr/lib/ImageMagick-6.5.7/config/type-ghostscript.xml 
    Font: AvantGarde-Book 
     family: AvantGarde 
     style: Normal 
     stretch: Normal 
     weight: 400 
     glyphs: /usr/share/fonts/type1/gsfonts/a010013l.pfb 
    Font: AvantGarde-BookOblique 
     family: AvantGarde 
     style: Oblique 
     stretch: Normal 
     weight: 400 
     glyphs: /usr/share/fonts/type1/gsfonts/a010033l.pfb 
... 

而且從Mac:

Path: /opt/local/etc/ImageMagick/type-ghostscript.xml 
    Font: AvantGarde-Book 
     family: AvantGarde 
     style: Normal 
     stretch: Normal 
     weight: 400 
     glyphs: /opt/local/share/fonts/urw-fonts/a010013l.pfb 
    Font: AvantGarde-BookOblique 
     family: AvantGarde 
     style: Oblique 
     stretch: Normal 
     weight: 400 
     glyphs: /opt/local/share/fonts/urw-fonts/a010033l.pfb 
... 
Path: System Fonts 
    Font: .Aqua-Kana-Bold 
     family: .Aqua Kana 
     style: Normal 
     stretch: Normal 
     weight: 600 
     glyphs: /System/Library/Fonts/AquaKana.ttc 
    Font: .Aqua-Kana-Regular 
     family: .Aqua Kana 
     style: Normal 
     stretch: Normal 
     weight: 300 
     glyphs: /System/Library/Fonts/AquaKana.ttc 
+0

截至今天,我已經做出了這個我接受的答案,而不是Imagick的方法,因爲thos提供了姓氏信息以及字體名稱。我的用例有時會遇到文件,只有指定的家族名稱,這將是很好的檢測! – halfer 2012-05-05 13:44:49

7

我剛剛找到了一個跨平臺的命令,fc-list。適用於OS X 10.6.8和我的Ubuntu VPS,並且可以很容易地由PHP調用。在我的Linux機器我這種格式獲取列表:

Nimbus Sans L:style=Regular Italic 
URW Palladio L:style=Roman 
Century Schoolbook L:style=Bold Italic 
Nimbus Sans L:style=Bold 
URW Chancery L:style=Medium Italic 
Nimbus Roman No9 L:style=Regular 
Century Schoolbook L:style=Bold 
Century Schoolbook L:style=Italic 
Nimbus Sans L:style=Regular 
URW Palladio L:style=Italic 
Nimbus Sans L:style=Bold Condensed 
URW Gothic L:style=Demi 
Nimbus Roman No9 L:style=Medium Italic 
Nimbus Mono L:style=Bold Oblique 
Dingbats:style=Regular 
...continues... 

在Mac上,它看起來像這樣:

URW Gothic L:style=Book Oblique 
Fixed:style=ja 
URW Palladio L:style=Bold Italic 
Heiti SC,黑體\-簡,黒體\-簡,Heiti\-간체,黑體\-簡:style=Light,細體,Mager,Fein,Ohut,Fin,Leggero,ライト,가는체,Licht,Tynn,Leve,Светлый,細體,Fina 
Arial Narrow:style=Bold Italic,Negreta cursiva,tučné kurzíva,fed kursiv,Fett Kursiv,Έντονα Πλάγια,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,Полужирный Курсив,Tučná kurzíva,Fet Kursiv,Kalın İtalik,Krepko poševno,Lodi etzana 
Fixed:style=Regular 
Helvetica:style=Bold Oblique 
Arial:style=Bold,Negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,Полужирный,Fet,Kalın,Krepko,đậm,Lodia 
KufiStandardGK:style=Regular,標準體,Ordinær,Normal,Normaali,Regolare,レギュラー,일반체,Regulier,Обычный,常規體 
Courier:style=Regular,標準體,Ordinær,Normal,Normaali,Regolare,レギュラー,일반체,Regulier,Обычный,常規體 
New Century Schoolbook:style=Italic 
Menlo:style=Bold 
Luxi Sans:style=Bold Oblique 
... 
5

這也產生了結果,雖然它只是得到的字體名稱爲每Font:線從convert輸出:

<?php 
    $imagick = new Imagick(); 
    $fonts = $imagick->queryFonts(); 
    foreach($fonts as $font) 
    { 
     echo $font; 
    } 
?>