2012-03-17 12 views
7

* nix系のシステムで利用可能なフォントを理想的にPHP 5.2または5.3で照会したいのですが、システムで使用できるライブラリがないようです独立した方法。 php-font-libはディレクトリ(codedemo)をスキャンするだけですが、もっとうまくいく方法があると思います。 (いずれにしても、フォルダをスキャンすることはタスクの一部にすぎず、名前やその他のメタデータを取得するためにはフォントファイルを開く必要があります)。PHPで使用可能なフォントのリスト

背景:私はInkscapeを使用してWebサーバー上でPDFをレンダリングしており、テキスト要素のレンダリングに使用できるフォントを特定したいと考えています。私はOS 10.6.8で開発し、Linuxで展開しています。

編集:カイロで頻繁に使用される高度なフォントレンダラーであるPangoのPHP wrapperが見つかりました。どちらもInkscapeで使用されています。ラッパーは全く新しいものなので、フォントリストを作成できるかどうかはまだわかりませんが、面白そうです:)

+0

フォントファイルを開き、名前/メタデータを読み取るために、fontforgeライブラリを使用できます。 – Pheonix

+0

ああ、あなたは[プログラムによって]意味すると思います(http://fontforge.sourceforge.net/scripting.html)?ありがとう、私はそのアプリケーションについて聞いたことがありません。私はそれを行こう。 – halfer

答えて

5

へぇを!私は1時間かそこらの検索を行い、満足するものは何も見つかりません。バスのように、すぐにいくつかの回答が見つかります。 ImageMagickのconvert -list fontコマンド(別の方法は、v6.3.5-7の前にconvert -list typeに改名されたように見えます)の別の方法があります。[source]私はfc-list以上の方が好きだと思います。出力はYAMLとして解析できるようです。

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から:Linuxからの

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

7

クロスプラットフォームのコマンドfc-listが見つかりました。 OS X 10.6.8と私のUbuntu VPSで動作し、PHPから簡単に呼び出すことができます。私のLinuxマシン上で、私はこの形式でリストを得る:Macの

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... 

それは次のようになります。

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

それだけでconvert出力からFont:行ごとにフォント名を取得しますが、これはまた、結果が得られます。

<?php 
    $imagick = new Imagick(); 
    $fonts = $imagick->queryFonts(); 
    foreach($fonts as $font) 
    { 
     echo $font; 
    } 
?> 
関連する問題