2012-03-17 16 views
7

Chciałbym zapytać, jakie czcionki są dostępne w systemie * nix-podobnym, najlepiej przy użyciu PHP 5.2 lub 5.3, ale nie ma wielu dostępnych bibliotek, aby zrobić to w systemie niezależny sposób. php-font-lib po prostu skanuje katalog (code, demo), ale mam nadzieję, że jest bardziej elegancki sposób to zrobić. (W każdym przypadku skanowanie folderu jest tylko częścią zadania, pliki czcionek muszą być nadal otwarte, aby pobrać nazwę i inne metadane).Lista dostępnych czcionek w PHP

Tło: renderuję pliki PDF na serwerze internetowym za pomocą programu Inkscape i chcę określić, jakie czcionki są dostępne do renderowania elementów tekstowych. Pracuję nad systemem OS 10.6.8 i wdrażam na Linuksie.

Edytuj: Znalazłem PHP wrapper dla Pango, który jest zaawansowanym renderowaniem czcionek często używanym w Kairze; oba te są używane w Inkscape. Opakowanie jest całkiem nowe, więc nie mam jeszcze pewności, czy może utworzyć listę czcionek - ale wygląda ciekawie :).

+0

do otwierania plików czcionek i czytania nazwy/metadanych, można użyć biblioteki fontforge. – Pheonix

+0

Ach, myślę, że masz na myśli [programowo] (http://fontforge.sourceforge.net/scripting.html)? Dzięki, nie słyszałem o tej aplikacji; Zrobię to. – halfer

Odpowiedz

5

He! Robię co najmniej godzinę szukania i nie znajduję niczego satysfakcjonującego; wtedy podobnie jak autobusy, kilka odpowiedzi znajduje się od razu. Oto inna metoda z polecenia ImageMagick'a o nazwie convert -list font (najwyraźniej zmieniona na nazwę z convert -list type przed wersją 6.3.5-7 [source]). Myślę, że wolę to ponad fc-list, ponieważ wynik wygląda tak, jakby mógł zostać przetworzony jako YAML.

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

A z 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

Na dzień dzisiejszy dokonałem tej mojej akceptowanej odpowiedzi zamiast metody Imagick, ponieważ zawiera ona informacje o nazwach rodzin oraz nazwę czcionki. Mój przypadek użycia czasami napotyka dokumenty z określoną nazwą rodziny, które dobrze byłoby wykryć! – halfer

7

Właśnie znalazłem polecenie wieloplatformowe, fc-list. Działa na OS X 10.6.8 i moim Ubuntu VPS i może być łatwo wywołany przez PHP. Na moim komputerze z systemem Linux uzyskać listę w formacie:

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

na Mac wygląda to tak:

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

Daje to również wyniki, chociaż to po prostu staje nazwę czcionki jak na linii Font: z convert wyjścia:

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