Dot.Blog

C#, XAML, WinUI, WPF, Android, MAUI, IoT, IA, ChatGPT, Prompt Engineering

Fontes encapsulées sous Xamarin.Forms

Utiliser des fontes personnalisées était déjà possible mais pas toujours très simple à mettre en œuvre.,Les fontes encapsulées Xamarin.Forms sont une nouvelle solution plus efficace…

Fontes personnalisées

Depuis fort longtemps il est possible de se servir de fontes personnalisées sous Xamarin.Forms. Le chemin à suivre impliquait souvent d’aller bricoler dans les projets natifs mais ça marchait bien.

Toutefois la gymnastique à faire n’était ni évidente ni très élégante, on s’attendait à ce que ce problème soit réglé par les Xamarin.Forms. Heureusement c’est le cas maintenant.

J’ai parlé de ce problèmes dans plusieurs billets comme “gérer des fontes natives” ou bien “utiliser des fontes personnalisées (Dot.Vlog n°6)”, etc… C’est dire si la résolution de ce problème a évolué au cours du temps ! Et à chaque étape on avance vers plus de simplicité… Vous allez voir que désormais faire plus simple va être compliqué, même si sous MAUI c’est encore un poil plus facile, mais l’esprit est le même que la version que je vous propose aujourd’hui (et pour cause, beaucoup des dernières modifications des Xamarin.Forms ont été faites pour préparer le terrain de MAUI).

Fontes encapsulées

Aujourd’hui j’aborde à nouveau cette même problématique mais sous l’ange des fontes encapsulées, c’est à dire gérées non pas dans les projets natifs mais dans le projet Xamarin.Forms commun.

Il y a beaucoup d’avantages à cette façon de faire. La première est bien entendu qu’on a besoin d’une seule copie de la fonte et qu’elle est centralisée avec pour conséquence nul besoin de bricoler les projets natifs…

Donc comment faire ?

Deux étapes et c’est tout

Il est vrai que cela ne veut rien dire, cela pourrait être trois étapes super complexes… mais ce n’est pas le cas !

Etape 1 : Ajouter la fonte au projet commun

On suppose que vous disposez déjà du fichier TTF ou OTF de la fonte à utiliser. Alors ajoutez simplement ce fichier au projet commun en vérifiant bien que son option de build (Build Action) est en mode “EmbeddedResource”, ressource embarquée (ou encapsulée, comme vous voulez, la terminologie n’a pas d’importance).

Etape 2 : Exporter la fonte

En exportant la fonte vous la rendez disponible dans tout le projet ou tout un namespace en particulier. Et pour le faire il suffit de placer un attribut au dessus du namespace de votre projet. L’endroit le plus sûr étant App.Xaml.cs ou AssemblyInfo.cs. je préfère App.Xaml.cs car c’est là que se trouve les choses communes et les initialisations.

Exemple : [assembly: ExportFont(“mafonte.ttf")]

Consommer la fonte…

Ensuite il suffit d’utiliser la fonte en indiquant son nom de fichier, c’est tout !

Parfois les noms de fichier ne sont pas parlants ou ont une graphie pas agréable, revenez à l’étape 2 et dans l’attribut spécifiez un alias. Vous utiliserez alors ce dernier pour référencer votre fonte.

[assembly: ExportFont(“mafonte.ttf", Alias=”FonteTitre”)]

Maintenant la fonte sera utilisable sous le nom de “FonteTitre”. par exemple dans un Label :

<Label Text="Test de fonte encapsulée" 
    FontFamily="FonteTitre" FontSize="60" …  />

Conclusion

De plus en plus facile, de plus en simple… Avec les fontes encapsulées vous pouvez désormais utiliser de superbes fontes pour vos titres, vos icônes, votre texte, le tout sans bricoler des images en 50 résolutions, sans vous occupez des projets natifs, juste aussi simplement que les deux étapes présentées…

Même si MAUI est là dans très peu de temps, les Xamarin.Forms ne disparaissent pas tout de suite. On peut encore écrire en Xamarin.Forms, on peut encore maintenir du code Xamarin.Forms, et pour longtemps, tout le temps du support offert par Microsoft à l’arrêt d’un produit. Bien entendu pour les nouveaux projets, et dès que la V1.0 de MAUI sera officialisée en novembre 2021 prochain, il sera bien plus judicieux de créer des projets de ce type.

Il y aura des petites différences, mais MAUI est une évolution des Xamarin.Forms, vous y retrouverez l’essentiel. Toutefois les petites nuances et le nouveau cadre de développement, tout cela sera au menu de Dot.Blog, et vous lisez certainement l’un des derniers, si ce n’est le dernier, article sur les Xamarin.Forms… Alors pour prendre le train MAUI à l’heure…

Stay Tuned !

Faites des heureux, PARTAGEZ l'article !