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?
splinter añadió soporte para utilizar una imagen como fuente.
igual eso te sirve...
yo tampoco, ni tampoco se como hacer que se pueda escribir en alguna parte, no se si me entendeis...
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.
¿Dónde? ¿Cómo?
en el foro, eso si, practica con el buscador xD
http://forum.bennugd.org/index.php?topic=816.msg35989#msg35989
creo que se como se hace...
vamos que capto el concepto, jiji
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?
si claro, te curras tu propria funcion que cargue imagenes como letras, yo lo hago en el PolloPollo por ejemplo
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
argc - 1
glyph, van de 0 a 255.
Si lo ejecutas con una fuente verás que falla en el primer glyph que se intenta (en el 1)
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");
----
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
Puff... que idiota estoy xD
En fin, ahora estoy con esto:
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-1;
procesa(argv[x]);
say(argv[x]);
end
End
Function procesa(string fntname);
Private
fuente;
Begin
cd(fntname);
fuente=fnt_new(CHARSET_ISO8859,argv[1]);
from x=0 to 999;
If(file_exists(itoa(x)+".png"))
glyph_set(fuente,x,0,load_png(itoa(x)+".png"));
end
End
save_fnt(fuente,"../../fnt/"+fntname+".fnt");
cd("..");
End
Esto lo que hace es convertirme una carpeta entera de pngs a una fuente, pero tengo un problema.
El ancho de cada carácter de la fuente es siempre el mismo, sin importar el ancho del gráfico.
Veo que creando una fuente de un mapa con todo funciona correctamente, pero no es lo que busco.
los fonts creados con la funcion estandard son fonts de ancho fijo, pero eso no importa en lo mas minimo... puedes definir el offset y el avance de cada glyph... para esto tenes que definir en el mapa que vas a agragar como glyph 2 puntos de control extra, el 1 y el 2, el 1 es el offset y el 2 es el avance al siguiente caracter...
te suguiero probar con diferentes valores para que veas como funciona cada uno de estos.
Gracias, intentaré hacer magia.
De todas formas ¿puedo recuperar también esa información de las fuentes ya creadas?
yo lo que hago en mi codigo es ajustar el ancho de algunas letras, como caracteres especiales, etc. es un coñaço, pero despues de estar hecho ya se escibe todo bien con esa fuente, eso si, si se cambia hay que reajustar de nuevo algunos caracteres xD
Quote from: PiXeL on July 09, 2012, 10:58:49 AM
Gracias, intentaré hacer magia.
De todas formas ¿puedo recuperar también esa información de las fuentes ya creadas?
si, con get_glyph viene ese informacion tambien.
Alguien Soluciono esto ??? , vi unos ejemplos de un link que colocaron, pero no adjuntaron el png
" g = png_load("font.png"); "
entonces no puedo probar el ejemplo, alguien lo tiene ?
--------------------------------
ya lo solucione, encontre uno en internet, ahora como puedo generar mi propio font ?
--------------------------------
Bueno, ante pronta respuesta :P :P encontre en internet este programa y me funciona super bien
http://www.codehead.co.uk/cbfg/ (http://www.codehead.co.uk/cbfg/)
Quote from: emov2k4 on July 15, 2012, 02:18:00 AM
Alguien Soluciono esto ??? , vi unos ejemplos de un link que colocaron, pero no adjuntaron el png
" g = png_load("font.png"); "
entonces no puedo probar el ejemplo, alguien lo tiene ?
--------------------------------
ya lo solucione, encontre uno en internet, ahora como puedo generar mi propio font ?
--------------------------------
Bueno, ante pronta respuesta :P :P encontre en internet este programa y me funciona super bien
http://www.codehead.co.uk/cbfg/ (http://www.codehead.co.uk/cbfg/)
gracias y karma por la tool...
bennupack te estan llamando!