Outils pour utilisateurs

Outils du site

A PCRE internal error occured. This might be caused by a faulty plugin

allegro:addon_fonts

===== Allegro — Polices de caractères ===== ==== Chargement des fontes Bitmap ==== Dans cet exemple, on va utiliser cette fonte: {{allegro:silver_font.png?linkonly}} (les glyphes sont en blanc, donc elles se voient mal).\\ Une fonte Bitmap doit respecter un certain format : * On doit avoir une couleur de fond sur tout le bitmap (par exemple le rose bonbon (FF, 00, FF) * Toutes glyphes (lettre) doivent avoir la même hauteur (mais pas forcément la même largeur) * Chaque glyphe est séparée des autres par au moins 1px de la couleur de fond (rose) * Chaque glyphe est représentée en couleurs sur fond transparent * Vos glyphes doivent avoir la taille que vous souhaitez utiliser dans votre jeu (sinon dessinez dans un bitmap que vous agrandirez) * Vos glyphes doivent comporter les pixels d'espacement entre les lettre (en général ou on une bande transparente à droite et sous le glyphe) * à cause du fond des glyphes transparent, on préfèrera le format TGA ou PNG (sinon utilisez un masque et passez-le en alpha avec **al_convert_mask_to_alpha**). <code c> #include <allegro5/allegro.h> #include <allegro5/allegro_font.h> ALLEGRO_FONT * init_font(void) { ALLEGRO_PATH *path; ALLEGRO_FONT *font; ALLEGRO_BITMAP *bmp; int ranges[] = {' ', '~'}; al_init_font_addon(); /* initialize the font addon */ path = al_get_standard_path(ALLEGRO_RESOURCES_PATH); al_append_path_component(path, "resources"); al_set_path_filename(path, "font.tga"); if ((bmp = al_load_bitmap(al_path_cstr(path, '/'))) == NULL) return NULL; al_destroy_path(path); font = al_grab_font_from_bitmap(bmp, 1, ranges); /* load the font */ al_destroy_bitmap(bmp); /* now you can destroy the bitmap */ return font; } </code> Cette fonction renvoie une fonte prête à l'emploi ou **NULL** en cas d'échec. <code c> int ranges[] = {' ', '~'}; </code> Regardez notre //font.png//, les glyphes représentées sont les caractères ascii de ' ' à '~', cette variables contient les bornes (par paires) des caractères représentées par les glyphes, les valeurs peuvent être en unicode puisque allegro les supporte ! Ensuite on charge un bitmaps avec la même méthode que celle de l'[[allegro:bitmaps#charger_des_bitmaps_depuis_le_disque|article sur les bitmaps]]. **al_grab_font_from_bitmap** prend en paramètres le bitmap, le nombre de bornes (taille de //ranges// divisée par 2) et les bornes. Elle renvoie **NULL** en cas d'échec. //P.S.// pour créer vos fontes ceci peux vous intéresser : [[http://www.angelcode.com/products/bmfont/|BMFont]].\\ [[allegro:bitmap_fonts|Fontes bitmap présentes sur ce site]]. ==== Chargement des fontes TTF ==== Ce greffon permet de charger des fontes TTF pour les utiliser avec les fonctions du greffon Font : celui-ci doit donc être initialisé en premier. Ce greffon est dépendant de la bibliothèque logicielle FreeType2, ce qui ne pose pas de problème sous Linux où est est généralement disponible, elle doit être packagée avec votre jeu dans pour pouvoir le redistribuer sous Windows. Des builds sont disponibles à cette adresse : http://gnuwin32.sourceforge.net/packages/freetype.htm L'avantage est que le greffon gère tous les formats supportés par cette lib, c'est à dire la plupart ! <code c> #include <allegro5/allegro.h> #include <allegro5/allegro_font.h> #include <allegro5/allegro_ttf.h> ALLEGRO_FONT * init_font(void) { ALLEGRO_PATH *path; ALLEGRO_FONT *font; al_init_font_addon(); /* initialize the font addon */ if (!al_init_ttf_addon()) return NULL; /* initialize the ttf (True Type Font) addon */ path = al_get_standard_path(ALLEGRO_RESOURCES_PATH); al_append_path_component(path, "resources"); al_set_path_filename(path, "myfont.ttf"); font al_load_ttf_font(al_path_cstr(path, '/'), 72, ALLEGRO_TTF_MONOCHROME); /* load the font */ al_destroy_path(path); return font; } </code> **al_load_ttf_font** Prend en paramètre le path vers le fichier TTF, la taille en pixels ainsi qu'un booléen comportant deux flags : * **ALLEGRO_TTF_NO_KERNING** — empêche tout [[http://fr.wikipedia.org/wiki/Cr%C3%A9nage|crénage]] sur la police * **ALLEGRO_TTF_MONOCHROME** — Fonte monochrome (pas de niveaux de gris = pas d'anti-aliasing) Pour changer la taille, il faut regarder la fonte en réutilisant cette fonction avec une taille différente. ==== Dessiner du texte ==== Rien de plus simple : <code c> float x = 0, y = 0; al_draw_text(font, al_map_rgb(0, 0, 0), x, y, 0, "Hello World !"); </code> Elle prend en paramètres : * La fonte * Une couleur pour teindre (si c'est une bitmap en couleurs, mettre #FFFFFF(blanc) pour ne pas teindre) * les coordonnées X, Y du coin supérieur gauche où sera dessiné le texte * Une valeur pour changer l'alignement du texte parmi : * **ALLEGRO_ALIGN_LEFT** (ou 0) * **ALLEGRO_ALIGN_CENTRE** X, Y est le coin supérieur au "\\milieu\\" * **ALLEGRO_ALIGN_RIGHT** X, Y est le coin supérieur droit * La chaine à afficher. C.F. [[http://liballeg.org/a5docs/trunk/font.html]] ==== Fonte de débogage ==== Depuis la 5.0.8, Allegro vient avec une font bitmap intégrée pour afficher des informations de débogage (en effet la taille des glyphes sont de 8x8 pixels). Le bitmap est enregistré dans la mémoire, mais la fonte n'est pas créée, vous devez demander à Allegro de le faire puis vous **devez la détruire** lorsque votre jeu se ferme. <code c> ALLEGRO_FONT *dbg_font = al_create_builtin_font(); /* ... code ... */ al_destroy_font(dbg_font); </code> Le jeu de caractères est le suivant : * caractères ASCII * Latin 1 * Extended A * Symbole €uro [[allegro:addons|Liste des greffons]]

allegro/addon_fonts.txt · Dernière modification: 2018/09/06 18:16 par mrhide