¿Cómo puedo encontrar la ruta completa a una fuente a partir de su nombre para mostrar en una Mac?
Pregunta
Estoy usando la API de JavaScript de Photoshop para encontrar las fuentes en un PSD determinado.
Dado un nombre de fuente devuelto por la API, quiero encontrar el archivo de fuente físico real al que corresponde ese nombre de fuente en el disco.
Todo esto sucede en un programa Python que se ejecuta en OSX, así que supongo que estoy buscando uno de:
- Algunos javascript de Photoshop
- Una función de Python
- Una API de OSX a la que puedo llamar desde Python
Solución
Desafortunadamente, la única API que no está en desuso se encuentra en el marco ApplicationServices, que no tiene un archivo de soporte de puente y, por lo tanto, no está disponible en el puente.Si desea utilizar ctypes, puede utilizar ATSFontGetFileReference después de buscar ATSFontRef.
Cocoa no tiene ningún soporte nativo, al menos a partir de la versión 10.5, para obtener la ubicación de una fuente.
Otros consejos
abra una terminal (Aplicaciones->Utilidades->Terminal) y escriba esto:
locate InsertFontHere
Esto generará todos los archivos que tengan el nombre que desea.
Advertencia:Puede que haya mucho que recorrer.
Debe haber un método en Cocoa para obtener una lista de fuentes, luego tendrías que usar los enlaces PyObjC para llamarlo.
Dependiendo de para qué los necesite, probablemente podría usar algo como lo siguiente.
import os
def get_font_list():
fonts = []
for font_path in ["/Library/Fonts", os.path.expanduser("~/Library/Fonts")]:
if os.path.isdir(font_path):
fonts.extend(
[os.path.join(font_path, cur_font)
for cur_font in os.listdir(font_path)
]
)
return fonts
No he podido encontrar nada que haga esto directamente.Creo que tendrás que recorrer las distintas carpetas de fuentes del sistema: /System/Library/Fonts
, /Library/Fonts
, y probablemente también pueda haber un directorio a nivel de usuario ~/Library/Fonts
.