2 votos

Uso de system_profiler con salida en inglés en MacOS alemán

Para un software de MacOS que trabaja con fuentes en el shell bash necesito información sobre las fuentes instaladas. Para obtener la información de las fuentes utilizo

system_profiler SPFontsDataType

Esto funciona bien en un MacOS inglés. Sin embargo, cuando se ejecuta en un MacOS alemán, todo sale en inglés, excepto el estilo de la fuente. Y por compatibilidad también necesito el estilo de fuente en inglés.

Ejemplo de MacOS alemán:

Full Name: Times New Roman Fett
Family: Times New Roman
Style: Fett

Ejemplo de MacOS inglés:

Full Name: Times New Roman Bold
Family: Times New Roman
Style: Bold

Intenté cambiar AppleLanguages en los valores por defecto de system_profiler, pero no funcionó. La salida seguía siendo en alemán:

defaults write com.apple.systemprofiler AppleLanguages '("en-US","de-DE")'

defaults write com.apple.systemprofiler AppleLanguages -array "en-US" "de-DE"

Sin embargo, cuando establecí temporalmente el NSGlobalDomain en inglés, funcionó:

tempvalues=$(defaults read NSGlobalDomain AppleLanguages)
defaults write NSGlobalDomain AppleLanguages -array "en-US" 
system_profiler SPFontsDataType
defaults write NSGlobalDomain AppleLanguages "$tempvalues"

¿Pero no hay un enfoque mejor que cambiar el NSGlobalDomain? Llamar a system_profiler lleva unos segundos, por lo que podría afectar a otros programas también.

De las fuentes que necesito: el nombre completo, la familia, el estilo, el nombre y la ubicación del archivo (=ruta completa), la versión, el campo protegido contra copia, el campo incrustado. Toda esta información está disponible en SPFontsDataType.

2voto

benwiggy Puntos 8

Yo sugeriría que es mucho más fácil de usar NSFontManager que intentar utilizar la información localizada de System Profiler.

Aquí hay un Swift script que produce una lista de los nombres PostScript de cada fuente instalada.

#!/usr/bin/swift    
import AppKit

    let manager = NSFontManager.shared
    let fontList = manager.availableFonts

    print (fontList)

Si sólo quiere comprobar si una fuente concreta está instalada, hay formas sencillas de hacerlo.

Sin embargo, esto se está desviando hacia el desarrollo de software, que está fuera del tema aquí, y para el cual Stack Overflow es más apropiado.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X