Installer une police automatiquement

olivier555olivier555 Membre
00:37 modifié dans API AppKit #1
Bonjour,
J'ai un problème avec mon soft. Je me sers d'une police de caractère .ttf, et mon installer (meta package) dispose d'un package qui va copier cette font dans le dossier Macintosh HD/Bibliothèque/Fonts. Tout va bien jusqu'au moment ou l'utilisateur lance l'appli à  partir d'un autre compte. Là  le soft ne trouve plus la font, alors qu'elle est présente. J'ai remarqué qu'il fallait lancer le fichier .ttf et cliquer sur 'Installer la police' pour que ça fonctionne (elle n'est pas installée par défaut sur les comptes secondaires mais elle l'est sur l'admin, or le fichier est présent sur tous les comptes).
Savez-vous comment installer la police automatiquement? Soit je fais un script qui lors de l'installation 'installe' la font sur tous les compte, soit au premier lancement du soft c'est le logiciel qui l'installe. Mais je ne sais pas comment faire. Avez-vous des idées?
Merci!

Réponses

  • BruBru Membre
    00:37 modifié #2
    Si ta police n'est utilisée que par ton application, ne serait il pas préférable qu'elle se trouve dans le bundle de ton appli (dans le rep Resources par exemple) ?

    Dans ce cas, c'est à  ta charge (dans l'initialisation de l'appli) de la charger et de l'activer.

    .
  • RocouRocou Membre
    00:37 modifié #3
    dans 1152810180:

    Si ta police n'est utilisée que par ton application, ne serait il pas préférable qu'elle se trouve dans le bundle de ton appli (dans le rep Resources par exemple) ?

    Dans ce cas, c'est à  ta charge (dans l'initialisation de l'appli) de la charger et de l'activer.

    .

    Je me permets de remonter ce fil car j'ai besoin d'utiliser une police qui ne fait pas partie de celle fournies par Apple (Il s'agit d'une police du domaine public permettant d'imprimer des codes barres).
    Je l'ai bien copiée dans le répertoire Resources du bundle de l'application mais cette dernière se crashe lamentablement sur une machine où la police n'est pas installée.

    Bru, tu parles de "charger et d'activer" la police. Qu'est-ce que cela signifie? Comment réaliser cela?
  • CéroceCéroce Membre, Modérateur
    septembre 2009 modifié #4
    Je doute que Bru te réponde, il ne traà®ne plus par ici.

    Si tu regardes un peu la doc de Apple Type Services, tu verras qu'il faut activer la fonte, en utilisant la fonction ATSFontActivateFromFileReference() ou une de ses cousines.

    Un lien qui devrait beaucoup t'intéresser (le dernier listing). La méthode active les fontes présentes dans le répertoire /font des ressources.

    Edit:
    Au bas de la page, il est écrit qu'il suffit de déclarer la clé
    ATSApplicationFontsPath
    dans ton info.plist.
    À tester en premier.
  • RocouRocou Membre
    00:37 modifié #5
    dans 1253007399:

    Je doute que Bru te réponde, il ne traà®ne plus par ici.

    Si tu regardes un peu la doc de Apple Type Services, tu verras qu'il faut activer la fonte, en utilisant la fonction ATSFontActivateFromFileReference() ou une de ses cousines.

    Un lien qui devrait beaucoup t'intéresser (le dernier listing). La méthode active les fontes présentes dans le répertoire /font des ressources.

    Edit:
    Au bas de la page, il est écrit qu'il suffit de déclarer la clé
    ATSApplicationFontsPath
    dans ton info.plist.
    À tester en premier.

    Merci beaucoup pour tes recherches.
    j'ai vu cela mais cela ne fonctionne pas. Je pense avoir tout vérifié:
    -J'ai bien ma police dans mon Bundle (Resources/Fonts/maPolice.ttf)
    -J'ai créé une nouvelle ligne dans mon fichier info.plist:
    Application fonts resources path ---> Fonts
    -J'ai vérifier le fichier info.plist dans le bundle, il indique les chose correctement:
    &lt;key&gt;ATSApplicationFontsPath&lt;/key&gt;<br />	&lt;string&gt;Fonts/&lt;/string&gt;
    


    L'application crashe toujours. Quand j'édite le fichier log, j'ai l'erreur suivante:
    Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: NSFont)'

    Je précise que l'application fonctionne très bien si la police est installée avec toutes les autres.
  • CéroceCéroce Membre, Modérateur
    septembre 2009 modifié #6
    Essaie plutôt /Fonts.
  • RocouRocou Membre
    00:37 modifié #7
    dans 1253017228:

    Essaie plutôt /Fonts.

    Pas mieux  :-\\

  • CéroceCéroce Membre, Modérateur
    00:37 modifié #8
    C'est bizarre, selon ce lien, "Fonts/" devrait marcher.
  • RocouRocou Membre
    00:37 modifié #9
    dans 1253081161:

    C'est bizarre, selon ce lien, "Fonts/" devrait marcher.

    Oui, ça "devrait".
    Le plus curieux est que cela fonctionne sous différentes sessions sur la même machine (bien évidemment, la police n'est pas présente dans le répertoire Fonts de la session) mais dés que l'on change de machine, boom.

    J'abandonne pour le moment. Je te remercie beaucoup pour tes recherches et le temps passé.
Connectez-vous ou Inscrivez-vous pour répondre.