2017-01-21 2 views
3

J'ai suivi un certain nombre de tutoriels, mais cela ne fonctionne pas: je veux simplement ajouter une police personnalisée à une application macOS.Ajout d'une police personnalisée à l'application macOS à l'aide de Swift

Ce que j'ai essayé essentiellement:

  1. Ajouté le .ttf police-fichiers à mon projet: Adhésion cible est définie et j'ai aussi fait en sorte que les fichiers sont copiés à l'aide Copy Files au sein Bundle Phases. Après la compilation je peux voir que tous les fichiers sont dans le paquet. Cela semble donc parfaitement fonctionner.

enter image description here

  1. Info.plist: Je ajouté Fonts provided by application et créé un élément pour chaque police fichier que je veux ajouter (comme valeurs myFont.tff). J'ai vérifié que j'utilise le nom de police correct. J'ai installé les polices sur mon système et configuré une étiquette avec Interface Builder afin qu'il utilise la police souhaitée. J'ai imprimé sa valeur print(myLabel.font.fontName).

  2. Confusion: Si le exactement même police-fichier que je veux ajouter à l'application est installé dans les systèmes Fontbook et activé, tout fonctionne bien. Quand je le désactive, ça ne marche pas. Pour moi, cela indique que j'utilise le nom de police correct.

  3. J'ai trouvé ATSApplicationFontsPath et essayé de ajouter à la Info.plist, mais ni en utilisant un chemin (recommandé par les docs) ou des valeurs comme . (qui semblait fonctionner pour certaines personnes là-bas) a marché.

enter image description here

apprécierais toute aide!

+0

Si vous pensez que vous pouvez utiliser une police personnalisée en la classant simplement avec Info.plist comme vous le faites dans iOS, non, c'est comme ça que ça fonctionne dans Cocoa. –

+1

@ElTomato Vous ne me menez pas dans la bonne direction en disant comment cela ne fonctionne pas. – ixany

Répondre

2

J'ai résolu mon problème par accident.J'ai remarqué que dans les fichiers Bundle, mes polices ont été incluses deux fois: elles ont été copiées dans le répertoire "Resources" ainsi que dans le sous-chemin I déclaré dans les phases de construction "Copy Files". J'ai supprimé les polices de mon projet, je les ai rajoutées (sans vérifier l'appartenance à la cible) et les ai ajoutées dans les phases de construction afin qu'elles soient copiées uniquement sur le sous-chemin. Après ça ça a marché.

Notes complémentaires:

est apparu que Fonts provided by application est une propriété que iOS il est donc pas nécessaire pour une mise en œuvre MacOs. En outre, ATSApplicationFontsPath n'a pas besoin de barres obliques. Par exemple: Fonts devrait fonctionner très bien. J'ai eu du mal à trouver les noms corrects pour les fichiers de polices .ttf et j'ai parfois découvert un comportement étrange: NSFont a choisi des polices aléatoires (normal, moyen, gras ...) à partir d'une famille de polices sans aucun changement de code. En utilisant des fichiers .otf à la place, je pourrais résoudre cela aussi.

1

La valeur ATSApplicationFontsPath (c'est-à-dire Application fonts resource path) est relative au dossier Resources de votre ensemble d'applications.

Pour voir où vos polices sont copiées:

  1. Dans Xcode, développez la section Produits sous Navigator Project, puis cliquez sur Afficher dans le Finder

Locate app bundle

  1. Dans le Finder, maintenez la touche Ctrl enfoncée et cliquez sur Afficher le contenu de la ressource. Accédez au dossier Resources et trouvez vos polices ici. enter image description here
+0

Je me suis assuré que chaque fichier de police est copié dans le répertoire des paquets. J'ai essayé 'ATSApplicationFontsPath' en laissant vide ou avec une valeur comme' fonts/'mais ça ne marche pas. – ixany

+0

Difficile de voir où les choses se sont mal passées alors je donne juste quelques conseils génériques: (a) assurez-vous que vos polices sont bien copiées dans 'Resources/fonts'; (b) essayez 'fonts' au lieu de' fonts/'dans le fichier Info.plist –

+0

(a) Les fichiers sont copiés correctement dans' Contents/Resources/Fonts', (b) Essayé de différentes manières mais rien ne semblait fonctionner ('/Fonts', 'Fonts /', 'Fonts') – ixany