Quizz Silverlight : Expression Blend ne propose que 8 polices de base pour les objets TextBlock


Si vous avez un peu manipulé Expression Blend 2 pour créer des scènes Silverlight, vous avez sans doute remarqué que le choix des polices de caractère proposées pour les objets TextBlock est assez limité :

ExpressionBlendFonts

Pour quiconque a déjà utilisé un outil de dessin tel que Paint.NET ou bien même Microsoft Word ou encore Powerpoint, cette liste de polices de caractères représente un choix assez limité...

La question est donc la suivante : Est-il possible d'utiliser d'autres polices que celles-ci dans une application Silverlight ? Si non : pourquoi ce choix est-il si limité, et si oui, comment procéder ?

A vos claviers 😉


Share this post :

Comments (7)

  1. Il suffit d’utiliser la propriété SetFontSource de l’objet TextBlock pour fournir une nouvelle police !

    http://msdn2.microsoft.com/en-us/library/bb404722.aspx

  2. CLaueR says:

    Bon début, Thierry, mais la réponse est incomplète…

    Parce que ne mentionner que la méthode SetFontSource() sous-entend à mon sens qu’il suffit de donner la bonne propriété à SetFontSource() et que cette méthode se suffit à elle même.

    Allez, un petit effort pour donner le complément et expliquer le mécanisme complet, qui n’est pas évident de prime abord…

  3. Arnaud Weil says:

    Toujours dans les tâtonnements: j’imagine que l’ensemble de polices incorporées dans Silverlight est limité tout simplement pour réduire la taille de l’environnement à installer (c’est pour ça qu’on arrive à 1 à 4 Mo). Donc, de base, on n’a que ces polices.

    Par contre, comme c’est WPF derrière, j’imagine qu’on doit pouvoir fournir une nouvelle ressource contenant de nouvelles fontes, par exemple en les incorporant en tant que ressources dans nos assemblys Silverlight ou bien en les récupérant à la volée par Web Service…

  4. CLaueR says:

    Hello Arnaud,

    Good guess pour le premier point : c’est effectivement dans le but de ne pas allourdir inutilement le "plug-ins" Silverlight, car les fontes comme toutes autres ressources utilisées sont naturellement embarquées dans le plug-in et le prix à payer est donc celui du poids du téléchargement lors de son installation.

    Maintenant, concernant le second point, tes déductions ne sont pas mauvaises mais forcément un peu à côté de la réponse exacte, mais avouons que c’est pratiquement impossible de deviner exactement quels sont les choix d’implémentation qui ont été retenus.

    En fait, le mécanisme passe par l’utilisation d’un objet de Silverlight qui s’appelle le Downloader. Ce downloader peut rappatrier de façon asynchrone un ensemble de ressources contenues par exemple dans une archive Zip.

    Ensuite, la fonction de callback invoquée lors de la fin du téléchargement va pouvoir extraire un ou plusieurs éléments contenus dans le Zip et les utiliser, par exemple, pour servir de propriété à la méthode SetFontSource() mentionnée plus haut par Thierry.

    La réponse complète, qui vaut le détour, est expliquée dans ce billet sur le blog de l’équipe Silverlight SDK :

    http://blogs.msdn.com/silverlight_sdk/archive/2007/05/02/downloading-fonts-using-the-downloader-object.aspx

    Voyez aussi ce que Tim Heuer en a fait avec une fonte manuscrite qu’il s’est fabriqué, ça vaut le coup d’oeil :

    http://timheuer.com/blog/archive/2007/08/29/embedding-fonts-with-silverlight-and-user-controls-rss-json.aspx

    Bonne lecture !

    Bravo à tous les deux pour avoir participé, c’est sportif de ne pas avoir simplement utilisé un moteur de recherche pour cheater la réponse 😉

  5. Florian says:

    Bonjour,

    Je me demande s’il y a toujours un intérêt à venir au Tour de France Silverlight avec ces Quizz ? (ils sont tellement complets 😉 je plaisante évidemment !

    Plus sérieusement, est-ce qu’on peut/pourra détecter les fonts sur le système ? (et déclencher des downloads si elle(s) n’existe(ent) pas ?

    Continuez, les quizz c’est sympa 🙂

  6. CLaueR says:

    @Florian : Dans ma compréhension, permettre à Silverlight de lister les Fontes système ouvrirait une brèche vers la lecture de fichiers et de données sur le disque local dans un répertoire système. Petits soucis de sécurité en perspective, alors que par ailleurs, tout Silverlight a été conçu pour fonctionner en mode "Sandboxé".

    Et puis dépendre d’une ressource locale, alors qu’on peut potentiellement s’exécuter sur différents systèmes (Windows XP, 2003 Vista et Mac OS X) est un peu hasardeux…

Skip to main content