2012-03-17 40 views
7

Tôi muốn truy vấn phông chữ nào có sẵn trên hệ thống * nix, lý tưởng bằng cách sử dụng PHP 5.2 hoặc 5.3, nhưng dường như không có nhiều thư viện để thực hiện nó trong một hệ thống - cách độc lập. php-font-lib chỉ cần quét một thư mục (code, demo) nhưng tôi hy vọng có một cách thanh lịch hơn để làm điều đó. (Trong mọi trường hợp, việc quét một thư mục chỉ là một phần của nhiệm vụ; các tệp phông chữ vẫn cần được mở để truy xuất tên và siêu dữ liệu khác).Liệt kê các phông chữ có sẵn trong PHP

Thông tin cơ bản: Tôi đang hiển thị các tệp PDF trên máy chủ web bằng Inkscape và muốn xác định những phông chữ nào có sẵn để hiển thị các phần tử văn bản. Tôi đang phát triển trên OS 10.6.8 và triển khai trên Linux.

Chỉnh sửa: Tôi đã tìm thấy một PHP wrapper cho Pango, một trình kết xuất phông chữ nâng cao thường được sử dụng với Cairo; cả hai đều được sử dụng trong Inkscape. Các wrapper là khá mới, vì vậy tôi chưa chắc chắn liệu nó có thể tạo ra một danh sách font - nhưng nó trông thú vị :).

+0

để mở phông chữ và đọc tên/siêu dữ liệu, bạn có thể sử dụng thư viện phông chữ. – Pheonix

+0

Ah, tôi đoán bạn có nghĩa là [lập trình] (http://fontforge.sourceforge.net/scripting.html)? Cảm ơn, tôi đã không nghe nói về ứng dụng đó; Tôi sẽ cho nó đi. – halfer

Trả lời

5

Heh! Tôi làm một giờ hoặc hơn để tìm kiếm, và thấy không có gì thỏa mãn; sau đó như xe buýt, một số câu trả lời được tìm thấy cùng một lúc. Đây là một phương pháp khác, từ lệnh convert -list font của ImageMagick (dường như được đổi tên từ convert -list type trước khi v6.3.5-7 [source]). Tôi nghĩ rằng tôi thích điều này trên fc-list, vì đầu ra có vẻ như nó có thể được phân tích cú pháp như YAML.

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

Và từ 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

Tính đến hôm nay tôi đã thực hiện câu trả lời được chấp nhận này thay vì phương pháp Imagick, như thos cung cấp thông tin tên gia đình cũng như tên phông chữ. Trường hợp sử dụng của tôi đôi khi gặp các tài liệu chỉ với tên gia đình được chỉ định, điều này sẽ rất hữu ích để phát hiện! – halfer

7

Tôi vừa tìm thấy lệnh đa nền tảng, fc-list. Hoạt động trên OS X 10.6.8 và Ubuntu VPS của tôi, và có thể dễ dàng được gọi bởi PHP. Trên máy tính Linux của tôi, tôi nhận được một danh sách ở định dạng này:

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

Trên Mac nó trông như thế này:

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

này cũng mang lại kết quả, mặc dù nó chỉ được tên font theo dòng Font: từ convert đầu ra:

<?php 
    $imagick = new Imagick(); 
    $fonts = $imagick->queryFonts(); 
    foreach($fonts as $font) 
    { 
     echo $font; 
    } 
?> 
Các vấn đề liên quan