我想查询类似* nix的系统上可用的字体,理想情况下使用PHP 5.2或5.3,但似乎没有很多库可以以独立于系统的方式进行。 php-font-lib只扫描一个目录(code,demo),但我希望有一种更优雅的方式来执行此操作。 (无论如何,扫描文件夹只是任务的一部分;仍然需要打开字体文件来检索名称和其他元数据。)
背景:我使用Inkscape在Web服务器上呈现PDF,并希望确定可用于呈现文本元素的字体。我正在开发OS 10.6.8并在Linux上进行部署。
编辑:我为Pango找到了PHP wrapper,这是一个经常与开罗一起使用的高级字体渲染器;这些都在Inkscape中使用。包装器很新,所以我还不确定它是否可以生成字体列表 - 但它确实看起来很有趣:)
。
答案 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;
}
?>