ALFonts - Créateur de Bitmap pour Fonts

Gulix Message lu Posté le 06 Mar 2009 à 18:06 Bulle
Avatar de Gulix
Membre Confirmé

Messages : 184
GCPoints : 8860
J'ai développé un outil pour m'aider lors de la génération des polices pour mes jeux. Ceux-ci utilisent des bitmaps sur lesquels se trouvent les caractères, et il me faut un fichier de config précis localisant chaque caractère. J'avais fait un programme de conversion de xml vers mon format perso, mais je ne sais plus quel outil j'utilisais pour générer ce xml :pathetic:

J'ai donc retroussé les manches pour faire mon propre outil. Et tant qu'à y être, je l'ai fait en WPF pour tester. Et en plus, j'ai intégré un système de plug-ins. En gros, le programme, tout seul, peut générer une image depuis une des polices installées sur votre poste. Avec un petit plugin (un librairie .NET qui intègre au moins une classe héritant d'une interface perso), on dispose de plus de pouvoirs pour générer l'image (couleur, espacement, format, nom du fichier, ...) et on a toutes les infos (liste des caractères et leur emplacement) pour générer le fichier de config correspondant à ce que l'on développe.

Si ça vous intéresse : http://gulix.fr/blog/spip.php?article150

Si vous galérez aussi pour ajouter vos polices, cet outil pourrait vous sortir une épine du pied :proud: et je suis prêt à écrire quelques plug-ins s'il le faut. D'ailleurs, je proposerai bientôt un pas-à-pas de l'écriture de mon plug-in perso.
Dernière édition le 06 Mar 2009 à 18:07
"Bien souvent, l'école représente votre meilleure chance. Non pas d'apprendre quoi que ce soit, bien sûr, mais de survivre à une attaque de morts-vivants".
Max Brooks - Guide de survie en territoire zombie

Mon Blog, mélange de prog' et de culture
Blind Shark - Pull N' Bounce
Darktib Message lu Posté le 06 Mar 2009 à 19:46 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Interessant ! C'est vrai que les polices vectorielles c'est pas du tout pratique pour les jeux et applications demandant beaucoup de perfs...

J'ai pas encore regardé le lien, mais est-ce que tu gère aussi les polices vectorielles avec des points pour séparer les caractères (comme Irrlicht)? Si c'est le cas je connais un excellent outils qui fait la meme chose, avec test en prime^^ (ici)

En tout cas cet outil est tres interessant, surtout la gestion des plugins.
Mod Message lu Posté le 08 Mar 2009 à 21:50 Bulle
Avatar de Mod
Webmaster

Messages : 4954
GCPoints : 2100823
Ah, effectivement, intéressant. Surtout quand on connaît l'immense joie de créer des fonts bitmap lettre par lettre.

La chose qui serait aussi intéressante, ce serait de pouvoir faire l'inverse, du bitmap vers une police TrueType. J'ignore si c'est faisable, mais ça serait là aussi très utile.

Un outil qui devrait sans doute pouvoir me servir assez rapidement !

Gulix Message lu Posté le 09 Mar 2009 à 09:29 Bulle
Avatar de Gulix
Membre Confirmé

Messages : 184
GCPoints : 8860

Citation :

J'ai pas encore regardé le lien, mais est-ce que tu gère aussi les polices vectorielles avec des points pour séparer les caractères (comme Irrlicht)? Si c'est le cas je connais un excellent outils qui fait la meme chose, avec test en prime^^ (ici)

En tout cas cet outil est tres interessant, surtout la gestion des plugins.



Faudrait que je jette un oeil sur le format de sortie. Si c'est un fichier image (png, bmp, autre) avec les caractères, mon programme devrait pouvoir le gérer. S'il y a un fichier de config en plus, c'est là que le système de plug-in entre en scène :cool: En programmant la génération du fichier de config, ce serait automatique.


Citation :


La chose qui serait aussi intéressante, ce serait de pouvoir faire l'inverse, du bitmap vers une police TrueType. J'ignore si c'est faisable, mais ça serait là aussi très utile.



Ca sortirait trop du domaine du programme. Désolé. Je ne connais pas trop le secteur de la création de fonts. Je sais même pas comment on fait.
"Bien souvent, l'école représente votre meilleure chance. Non pas d'apprendre quoi que ce soit, bien sûr, mais de survivre à une attaque de morts-vivants".
Max Brooks - Guide de survie en territoire zombie

Mon Blog, mélange de prog' et de culture
Blind Shark - Pull N' Bounce
Gulix Message lu Posté le 09 Mar 2009 à 12:48 Bulle
Avatar de Gulix
Membre Confirmé

Messages : 184
GCPoints : 8860
Concernant le format Irrlicht, je pense que c'est réalisable sans trop de problèmes. Il faudrait générer le fichier png avec uniquement les caractères, pour commencer. Puis, avec toutes les infos récoltées (position des caractères, taille des caractères) repasser par dessus le png pour placer les pixels bleus et rouges. Les fonctions de dessin du framework .NET le permettent assez facilement. Avec un peu plus d'infos sur le format précis de ces fichiers (position des pixels colorés), je pourrais essayer de faire le plug-in. Si quelqu'un a une doc là-dessus (j'ai pas réussi à trouver sur le site d'Irrlicht), je suis preneur.
"Bien souvent, l'école représente votre meilleure chance. Non pas d'apprendre quoi que ce soit, bien sûr, mais de survivre à une attaque de morts-vivants".
Max Brooks - Guide de survie en territoire zombie

Mon Blog, mélange de prog' et de culture
Blind Shark - Pull N' Bounce
Darktib Message lu Posté le 09 Mar 2009 à 18:34 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Gulix Message lu Posté le 10 Mar 2009 à 21:35 Bulle
Avatar de Gulix
Membre Confirmé

Messages : 184
GCPoints : 8860
Merci pour les sources, je vais voir ce que je peux faire. Si on doit juste rajouter des pixels bleus/rouges, ça devrait pas être trop compliqué.

Pour info, une version 0.2 est en ligne. Des nouveautés surtout esthétiques et internes. J'ai rajouté pas mal de propriétés pour les plugins, et rajouté une documentation avec la dll pour créer un plugin. Sur mon blog, je présente également les bases pour créer le plugin.

Un second plugin, qui génère un fichier xml tout simple (avec la position de chaque caractère), est également disponible.
"Bien souvent, l'école représente votre meilleure chance. Non pas d'apprendre quoi que ce soit, bien sûr, mais de survivre à une attaque de morts-vivants".
Max Brooks - Guide de survie en territoire zombie

Mon Blog, mélange de prog' et de culture
Blind Shark - Pull N' Bounce
Darktib Message lu Posté le 11 Mar 2009 à 16:57 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Je précise que le mieux est d'avoir une image finale carrée, avec le meme nombre de caractères en hauteur comme en largeur. Dernierement il me semble qu'il y a un ordre pour les caractères.

edit : pendant que j'y pense... voici quelques points que tu pourrais améliorer:
-Un bouton pour visionner l'image créee
-Un exe de test, qui affiche du texte avec la police créée. Par exemple une GUI + deux trois phrases.
-Une traduction en francais :tongue: (soyons un peu chauvins^^)
-Il me semble que le source cs utilise des parties du code source de BlindShark (je ne programme pas en C# mais c'est ce que j'ai compris en regardant le fichier cs), ce serait pratique de réduire les dépendances vis à vis de BlindShark. Enfin, je dis ca, j'utilise Irrlicht et que l'image créee.


Derniere question : si je crée une dll en C++ CLR avec Visual Studio, elle pourra fonctionner en tant que plugin ?
Dernière édition le 11 Mar 2009 à 17:06
Gulix Message lu Posté le 11 Mar 2009 à 18:01 Bulle
Avatar de Gulix
Membre Confirmé

Messages : 184
GCPoints : 8860

Citation :

Un bouton pour visionner l'image créee



J'y ai pensé, et c'est prévu. Ca créera un bitmap temporaire, et ça l'affichera dans une fenêtre dans un champ image, tout simplement ...


Citation :

Un exe de test, qui affiche du texte avec la police créée. Par exemple une GUI + deux trois phrases.



Pas prévu, parce que justement l'intérêt n'est pas là. Chaque plugin génère un bitmap configuré différement, et peut-être son propre fichier de config (ou tout autre chose). Un exe standard de test n'est donc pas faisable, ou tout du moins pas logique. Après, dans le cas où le bitmap généré peut-être directement chargé par un exe, on peut le fournir avec le plugin et intégrer le test dans le plugin. Dans le cas, par exemple, de mon plugin XNA, pas moyen puisque le bitmap doit ensuite être compilé (et le fichier source aussi).


Citation :

Une traduction en francais :tongue: (soyons un peu chauvins^^)



prévue aussi, je compte ainsi tester un module de gestion multilingue au sein de mon projet


Citation :

Il me semble que le source cs utilise des parties du code source de BlindShark (je ne programme pas en C# mais c'est ce que j'ai compris en regardant le fichier cs), ce serait pratique de réduire les dépendances vis à vis de BlindShark. Enfin, je dis ca, j'utilise Irrlicht et que l'image créee.



C'est le plugin dédié que j'ai conçu pour mon moteur XNA qui fait ça. A terme, chaque plugin génèrera son lot de fichiers spécifiques. La programmation par plugin fait que les dépendances seront fortes. Et c'est ce qui est intéressant. Plutôt que d'avoir un fichier à retraiter par derrière (genre un xml pour générer mon cs), mon plugin génère directement mon fichier cs.


Citation :

si je crée une dll en C++ CLR avec Visual Studio, elle pourra fonctionner en tant que plugin ?



Normalement, oui. Toute DLL compatible .NET, avec une classe implémentant IActionPlugin, sera reconnue. Pour tester, tu peux créer une DLL "vide" avec juste un Label, un ActionLabel et rien dans Action(), voir si elle est reconnue. Le framework .NET permet de générer des DLL dans n'importe quel langage, pour ensuite les réutiliser dans tout programme .NET.
"Bien souvent, l'école représente votre meilleure chance. Non pas d'apprendre quoi que ce soit, bien sûr, mais de survivre à une attaque de morts-vivants".
Max Brooks - Guide de survie en territoire zombie

Mon Blog, mélange de prog' et de culture
Blind Shark - Pull N' Bounce
Darktib Message lu Posté le 11 Mar 2009 à 22:46 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
OK merci pour ces informations. Sinon pour l'exe c'était juste pour voir a l'avance ce que donnera la police. Il pourrait alors etre interessant que chaque plugin ai une fonction Test() qui permettrait d'afficher la derniere police calculée. Le but n'est que purement graphique.

edit : j'ai essayé de créer un projet de test avec VS2008, par contre je me demande comment inclure ta classe IActionPlugin vu que c'est pas le meme langage. Peut etre vais-je devoir me mettre au C#...

Toujours est-il que je ferait ca ce week-end.
Dernière édition le 11 Mar 2009 à 22:58
Gulix Message lu Posté le 12 Mar 2009 à 09:31 Bulle
Avatar de Gulix
Membre Confirmé

Messages : 184
GCPoints : 8860
Un bout de FAQ là-dessus

J'avoue ne pas connaître grand chose au C++/CLR, je ne peux donc pas trop t'aider là-dessus. Mais cette FAQ est assez complète.
"Bien souvent, l'école représente votre meilleure chance. Non pas d'apprendre quoi que ce soit, bien sûr, mais de survivre à une attaque de morts-vivants".
Max Brooks - Guide de survie en territoire zombie

Mon Blog, mélange de prog' et de culture
Blind Shark - Pull N' Bounce
Darktib Message lu Posté le 12 Mar 2009 à 18:23 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
En fait je pense que je vais essayer C#.
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.2481 secondes