2012-03-17 15 views
7

Me gustaría consultar qué fuentes están disponibles en un sistema * nix, idealmente usando PHP 5.2 o 5.3, pero parece que no hay muchas bibliotecas disponibles para hacerlo en un sistema -independiente php-font-lib solo escanea un directorio (code, demo) pero espero que haya una forma más elegante de hacerlo. (En cualquier caso, escanear una carpeta es solo una parte de la tarea, los archivos de fuentes aún deben abrirse para recuperar el nombre y otros metadatos).Listado de fuentes disponibles en PHP

Antecedentes: estoy renderizando archivos PDF en un servidor web utilizando Inkscape, y me gustaría determinar qué fuentes están disponibles para representar elementos de texto. Estoy desarrollando en OS 10.6.8 y desplegando en Linux.

Editar: He encontrado un PHP wrapper para Pango, que es un procesador de fuentes avanzadas de uso frecuente con El Cairo; ambos se usan en Inkscape. El contenedor es bastante nuevo, por lo que aún no estoy seguro de si puede producir una lista de fuentes, pero se ve interesante :).

+0

para abrir archivos de fuentes y leer nombres/metadatos, puede usar la biblioteca de fontforge. – Pheonix

+0

Ah, supongo que te refieres a [programmatically] (http://fontforge.sourceforge.net/scripting.html)? Gracias, no he oído hablar de esa aplicación; Lo intentaré. – halfer

Respuesta

5

Je! Hago una hora más o menos de búsqueda, y no encuentro nada satisfactorio; luego, como los autobuses, se encuentran varias respuestas a la vez. Aquí hay otro método, desde el comando convert -list font de ImageMagick (aparentemente renombrado desde convert -list type antes de v6.3.5-7 [source]). Creo que prefiero esto más de fc-list, ya que la salida parece que podría analizarse como YAML.

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

Y desde el 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

A partir de hoy he hecho de esto mi respuesta aceptada en lugar del enfoque de Imagick, ya que proporciona información sobre el apellido y el nombre de la fuente. Mi caso de uso a veces encuentra documentos con solo el nombre de familia especificado, ¡lo que sería bueno detectar! – halfer

7

Acabo de encontrar un comando multiplataforma, fc-list. Funciona en OS X 10.6.8 y mi Ubuntu VPS, y podría ser fácilmente invocado por PHP. En mi máquina Linux consigo una lista en este formato:

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

En el Mac se parezca a esto:

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

Esto también produce resultados, a pesar de que sólo se pone el nombre de la fuente según la línea Font: de convert de salida:

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