Pour un logiciel MacOS qui travaille avec des polices dans le shell bash, j'ai besoin d'informations sur les polices installées. Pour obtenir les informations sur les polices, j'utilise
system_profiler SPFontsDataType
Cela fonctionne très bien sur un MacOS anglais. Cependant, lorsqu'il est exécuté sur un MacOS allemand, il produit tout en anglais, à l'exception du style de police. Or, pour des raisons de compatibilité, j'ai également besoin que le style de police soit en anglais.
Exemple MacOS allemand :
Full Name: Times New Roman Fett
Family: Times New Roman
Style: Fett
Exemple anglais MacOS :
Full Name: Times New Roman Bold
Family: Times New Roman
Style: Bold
J'ai essayé de modifier AppleLanguages dans les paramètres par défaut de system_profiler, mais cela n'a pas fonctionné. La sortie était toujours en allemand :
defaults write com.apple.systemprofiler AppleLanguages '("en-US","de-DE")'
defaults write com.apple.systemprofiler AppleLanguages -array "en-US" "de-DE"
Cependant, lorsque j'ai temporairement défini le NSGlobalDomain sur English, cela a fonctionné :
tempvalues=$(defaults read NSGlobalDomain AppleLanguages)
defaults write NSGlobalDomain AppleLanguages -array "en-US"
system_profiler SPFontsDataType
defaults write NSGlobalDomain AppleLanguages "$tempvalues"
Mais n'y a-t-il pas une meilleure approche que de changer le NSGlobalDomain ? L'appel à system_profiler prend quelques secondes, ce qui peut affecter d'autres programmes.
Des polices dont j'ai besoin : le nom complet, la famille, le style, le nom et l'emplacement du fichier (= chemin complet), la version, le champ protégé contre la copie, le champ incorporable. Toutes ces informations sont disponibles dans SPFontsDataType.