2011-08-11 19 views
8

He estado tratando de hacer esto por bastante tiempo, y no he encontrado una manera eficiente de hacerlo. Actualmente he estado tratando de enumerar todas las fuentes que conozco de esta manera:AppleScript - Listar todas las fuentes

set the font_list to {"Arial","Comic Sans MS","Arial Black",...} 

pero se necesita siempre para escribir todas las fuentes y sé que hay un montón de fuentes en el Mac. ¿Hay una manera más eficiente de obtener todas las fuentes en el sistema, escribir un montón de cosas en un documento de texto y luego establecer la fuente de cada línea consecutiva a la siguiente fuente (es decir, la fuente de la Línea 1 es la Fuente 1, la fuente de la Línea 2 es fuente 2, etc.)?

Respuesta

1

Tiene razón al decir que el Mac OS X tiene toneladas de fuentes. Estas fuentes se distribuyen a través de cuatro o más carpetas, según la instalación del software y la cantidad de cuentas de usuario en su computadora.

+1 a su pregunta, ya que he estado tratando de hacer lo mismo, así que compuse un pequeño guión que hace el trabajo. Extrae fuentes de cuatro/cinco ubicaciones diferentes, escribe en un documento de texto y luego cambia las fuentes. Sin embargo, cuando lo ejecuta, su sistema puede comenzar a retrasarse (como lo hizo el mío hace unos momentos). ¡Pero el retraso vale la pena! Aquí está la secuencia de comandos:

--"get all the fonts on the system" 

display dialog "WARNING" & return & return & "This script may cause your computer to lag. Are you sure you want to proceed with the font sampler?" with icon caution 
set the font_folders to {"/Users/" & the short user name of (system info) & "/Library/Fonts/", "/Library/Fonts/", "/Network/Library/Fonts/", "/System/Library/Fonts/", "/System Folder/Fonts/"} 
set these_fonts to {} 
repeat with this_font_folder in the font_folders 
    try 
     tell application "Finder" to set the end of these_fonts to every item of ((this_font_folder as POSIX file) as alias) 
    end try 
end repeat 

--"write a bunch of stuff in a text document" 

tell application "TextEdit" 
    activate 
    set zoomed of the front window to true 
    set the name of the front window to "Font Sampler" 
end tell 
repeat with this_font in these_fonts 
    tell application "Finder" to set this_font to the name of this_font 
    tell application "TextEdit" to set the text of document 1 to the text of document 1 & this_font & ": The quick brown fox jumps over the lazy dog." & return 
end repeat 

--"set the font of each consecutive line to the next font (i.e. Line 1's font is Font 1, Line 2's font is Font 2, etc.)" 

repeat with i from 1 to the count of these_fonts 
    tell application "Finder" to set this_font to the name of item i of these_fonts 
    tell application "TextEdit" to tell paragraph i of the text of document 1 to set the font to this_font 
end repeat 
3
tell application "Font Book" to name of font families 

set l to {"Regular", "Roman", "Book", "Plain", "55 Roman", "R"} 
set found to {} 
tell application "Font Book" 
    repeat with x in typefaces 
     if l contains style name of x then set end of found to name of x 
    end repeat 
end tell 
found 
+0

+1 porque, por sorprendente que parezca, ¡no he oído hablar de 'Font Book' hasta ahora! : P – fireshadow52

+0

¡Esto debe marcarse como la respuesta correcta! –

2

Hay un comando UNIX que puede utilizar: system_profiler. El tipo de datos de "SPFontsDataType" le dará solo las fuentes del perfil del sistema. El -xml presentará los datos en XML.

system_profiler -xml SPFontsDataType > ~/Desktop/myfonts.plist 

Puede capturar esto en la memoria o en un archivo y analizarlo para el propósito que necesite.

+0

La manera perfecta de inicializar otro comando de shell: "mdls/path/to/font" que listará todas las propiedades de fuente. – Orwellophile

Cuestiones relacionadas