Me acabo de dar cuenta de que no sé crear fuentes para Bennu

Started by panreyes, July 01, 2012, 05:39:16 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

panreyes

Así que, vengo a pedir ayuda. Llevo peleándome con el asunto desde hace horas.


El problema es que no consigo una fuente con un ancho fijo, y cuando creo que lo consigo falla de igual forma.
¿No se podría añadir un par de parámetros a load_fnt para establecer manualmente el ancho de cada letra y del espacio (que esa es otra)?


¿Qué ventajas tiene el fichero FNT frente a un FPG? ¿Por qué no utilizamos directamente FPG para las fuentes?

josebita

splinter añadió soporte para utilizar una imagen como fuente.

igual eso te sirve...

Futu-block

yo tampoco, ni tampoco se como hacer que se pueda escribir en alguna parte, no se si me entendeis...

SplinterGU

se pueden hacer fonts de ancho fijo y tambien puedes hacer un font a partir de un mapa, donde tienes el font en un mapa a un tamaño fijo... (ver diario de avance)

si no me equivoco, hay incluso ejemplos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

panreyes


FreeYourMind



Futu-block

creo que se como se hace...
vamos que capto el concepto, jiji

panreyes

Gracias por el enlace, ese tema me ayudará mucho.


Aún así sigo en mis trece, me gustaría poder utilizar FPGs como FNTs :)
¿Podríamos hacer esto?

FreeYourMind

si claro, te curras tu propria funcion que cargue imagenes como letras, yo lo hago en el PolloPollo por ejemplo

panreyes


Lo que haré al final será generar la FNT a partir de pngs, como si de un fpg se tratara.


A ver si alguien me averigua por qué me peta el get_glyph... :\



import "mod_screen";
import "mod_video";
import "mod_map";
import "mod_dir";
import "mod_file";
import "mod_string";
import "mod_grproc";
import "mod_say";


Begin
set_mode(100,100,argv[1]);
from x=2 to argc;
say("Procesando fuente: "+argv[x]);
procesa(argv[x]);
end
End


Function procesa(string fntname);
Private
fuente;
Begin
say("carga fuente");
fuente=load_fnt("fnt/"+argv[fntname]+".fnt");
from x=1 to 999;
say("iteracion "+x);
graph=get_glyph(fuente,x);
if(graph>0)
say("glyph en graph");
save_png(0,graph,x+".png");
say("save png hecho");
end
End
End

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

panreyes

Si lo ejecutas con una fuente verás que falla en el primer glyph que se intenta (en el 1)

SplinterGU

jejeje... te has dado cuenta que pasas por string el nombre del font y luego ese nombre lo usas de indice? con lo que falla la carga del font?

----
Function procesa(string fntname);
Private
   fuente;
Begin
   say("carga fuente");
   fuente=load_fnt("fnt/"+argv[fntname]+".fnt");
----
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

prueba esto


import "mod_map";
import "mod_string";
import "mod_say";

Function procesa(string fntname);
Private
    x;
    graph;
fuente;
Begin
fuente=load_fnt(fntname);
    if ( fuente != -1 )
    say("carga fuente ok");
    from x=1 to 255;
    graph=get_glyph(fuente,x);
    if(graph>0)
        say("save glyph "+x);
    save_png(0,graph,x+".png");
    end
        end
    else
    say("carga fuente fail");
end
end

private
x;
Begin
from x=1 to argc-1;
say("Procesando fuente: "+argv[x]);
procesa(argv[x]);
end
End
Download Lastest BennuGD Release: http://www.bennugd.org/node/2