在PHP中列出可用字体

时间:2012-03-17 12:25:13

标签: php fonts

我想查询类似* nix的系统上可用的字体,理想情况下使用PHP 5.2或5.3,但似乎没有很多库可以以独立于系统的方式进行。 php-font-lib只扫描一个目录(codedemo),但我希望有一种更优雅的方式来执行此操作。 (无论如何,扫描文件夹只是任务的一部分;仍然需要打开字体文件来检索名称和其他元数据。)

背景:我使用Inkscape在Web服务器上呈现PDF,并希望确定可用于呈现文本元素的字体。我正在开发OS 10.6.8并在Linux上进行部署。

编辑:我为Pango找到了PHP wrapper,这是一个经常与开罗一起使用的高级字体渲染器;这些都在Inkscape中使用。包装器很新,所以我还不确定它是否可以生成字体列表 - 但它确实看起来很有趣:)

3 个答案:

答案 0 :(得分: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
...

答案 1 :(得分:7)

嘿!我做了一个小时左右的搜索,发现没什么令人满意的;然后就像公共汽车一样,可以找到几个答案。这是另一种方法,来自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

答案 2 :(得分:6)

这也会产生结果,但它只是根据Font:输出的convert行获取字体名称:

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