Aun estoy mejorando el Visor de fuentes.
ya que programare una feature que permite de la Cadena escrita guardarla en un file binario, que guarda toda la cadena UNICODE, para luego cargarla con los comandos en el PRG, eso ya dentro del proyecto.
y tambien un file.txt en formato ASCII normal, para la cadena STRING
Y con un Boton cargar ese File Unicode y cargar el texto tambien.para reeditarlo
Tambien deja guardar la Cadena Unicode + la STRING normal, en un MAP de 32bits(por defeco) comprimido, y con PASS opcional.
El problema de esos MAP que no podeis abrirlos con el MAP Editor actual.
---------------------------------------------------------------------------------------------------
TUTORIALESQuiero ya dejaros algunos tutos que ya podeis hacer con la Beta3 actual(ultima) de momento:
tuto1: Cambiar la calidad de color a las fuentes:Es muy sencillo, debemos abrir la fuente
.map , cuando este ya convertida(con el conversor) en una tira de caracteres:
Por ejemplo la fuente
Arial.map(junto el Arial.txt)32 => 16bits

32 => 8bits(256 colores)

con esto convertiremos la fuente a una calidad inferior, para proyectos que usen set_mode(x,x,8/16); de calidad.
----------------------------------------------------------------------------------------------------
tuto2:Fontrast, Creando fuente ASCII Completa (No Unicode)Estos son los Primeros pasos para Crear una Fuente de 32bits ASCII completa.
1-Abrimos el programa de Fontrast.exe (o donde lo tengamos instalado)

Nota: el Programa se ejecutara como Demo de 30dias, podemos omitir ese mensaje o comprar el software por 15$.
Solo aparece ese mensaje la primera vez que lo ejecutamos.
2-Nos saldra un menu con muchas opciones, Vamos por pasos..
Arriba del todo esta estos menus:

Es para selecionar la Fuente typetrue de Windows, La Altura de la fuente en pixeles, y la anchura...
No recomiendo cambiar la Anchura a modo manual, ya que estira el caracter hasta cortarse la anchura real del caracter.
Podemos cambiar la Altura de la fuente como nos guste, como en el Div2, 8,12,14....32,64,128... a vuestro gusto.
La Fuente generada pesara mas espacio en memoria por el tamaño de la letra y usara mas espacio en pixeles.
3-Selecionamos la Fuente:
Aqui podemos selecionar la fuente que nos guste, el tamaño normal(se auto ajusta luego la altura en pixeles), cursiva,negrita, subrallado,tachado y codificacion.(aun que estas 3 ultimas no lo e probado)
El color aqui no importa nada selecionarlo, no tiene efecto.
Aviso: depende de la fuente que selecioneis, puede
no contener caracteres extendidos, como la Ñ española, y otros simbolos.
hay fuentes que solo se pueden escribir en Mayusculas.
Ademas de que pueden haber fuentes de otros idiomas asiaticos,arabes...etc.
nosotros selecionamos una fuente normal, como el Arial como ejemplo.
De todas formas recomiendo usar este programa para averigurar de una forma rapida que fuentes tienen o no Caracteres ASCII normal:
http://www.ampsoft.net/utilities/FontViewer.php
4-Caracteres que se añadira a la fuente:
Esto es muy importante, para generar tu fuente, ya que aqui es donde le dices que caracteres añadiras a tu fuente.
Para crear una Fuente ASCII recomiendo marcar todas las casillas menos la "null char".
Y despues debemos añadir la ruta del fichero .txt donde contiene todos los caracteres ASCII.
Para este caso de una fuente completa ASCII, usaremos este file: fontrast_to_map/txt/
ASCII+ISO_8859-1+15.txt
Hay mas, pero contiene caracteres UNICODE de otro idioma, NO ASCII.
En este tutorial solo nos interesa crear una fuente ASCII solamente.
Selecionamos esta:
ASCII+ISO_8859-1+15.txtRecuerda tener marcadas las casillas del abecedario,numeros y simbolos. (el null char es tonteria y no sirve)
5-Color de la fuente,fondo y borde:
Aqui lo mas importante es el color de la fuente, yo por defecto siempre lo dejo Blanco.(pero podeis elegir)
por que asi luego se edita con mas facilidad con un editor grafico(photshop,gimp), o luego podemos usar FXcolor programando.
El color del fondo, recomiendo que sea negro, o un color contraste de la fuente.
De todas formas si lo guardamos como png(32bits) siempre sera transparente y no se ve.
El color del borde, no importa, pero para verlo con el MAP Editor, justo despues de Crear la fuente, se ve.
pero luego de todas formas esto se pierde cuando convertimos la fuente en un map unico. Aqui el color no importa, yo siempre lo dejo desmarcado.
6-Panel final, Formato de la fuente creada:
esto es lo mas importante de todos.vamos por partes.
Page Size: es el tamaño que tendra cada file.png creado de la fuente, contra mas grande sea menos files.png necesita crear.
En la fuente que yo creo tiene de vertical 64 pixeles, 8x64=512 , es 8 filas horizontales de fuentes por 64 piexeles que tiene vertical la fuente, es igual a 512 pixeles verticales. recomiendo hacerlo por multiplos del tamaño vertical de nuestra fuente.
Estos parametros del tamaño se pueden calibrar, recomiendo que sean grandes, de 512,1024.... se puede poner cualquiera.
Luego al crear la fuente te daras cuenta como reparte los caracteres en los pngs.
Siempre es mejor que tenga menos paginas(2-4), que no muchas(20-35), ya que el conversor(de maps) de momento solo soporta hasta 20 paginas/files.png de una fuente.
Border: es el grosor de los bordes del color que hemos selecionado antes, si lo tenemos desactivado de antes, se pintaran en el color del fondo.
Importa? pues no, ya que luego al convertirlos en map la fuente, esto se pierde.
Esto simplemente ayuda a ver la fuente con mas claridad, y solo se ve justo al crear esta fuente.
Yo en mi caso lo tengo a 0x0 para que no me haga la separacion entre caracteres.
Supersample: es un filtro antialising que aplica al generar la fuente.
Esto va por gustos, aun que recomiendo que si quieres una fuente de calidad, que la pongas a maximo 8x8
contra mas sea la calidad, mas tarda en generar la fuente, por ejemplo 8x8 tarda unos segundos, casi 1 minuto en generarlo.depende de la CPU de nuestro ordenador.

El resto de opciones que tiene al rededor solo se activan si ponemos 2x2 como minimo, y no recomiendo activarlas, ya que puede generar una fuente de manera erronea...de todas formas podeis probar.
Antialias Towards: podeis cambiarlo es para el filtro, aun que yo recomiendo tal y como tengo en la captura.
Minimum cell width (pixels): esto crea un espacio minimo en cada caracter, sinceramente es una tonteria y puede causar problemas despues con la fuente entre la separacion entre caracteres, no recomiendo para nada aumentarlo.
dejarlo a 0, es lo normal.
Page format: Esto es muy importante, Yo recomiendo PNG por que es el formtao que soporta 32bits de calidad.
podeis usar tambien BMP, pero el PNG tiene mas opciones y comprime sin perder calidad.

Si deseas una fuente que tenga ya su canal alpha de 32bits, selecionalo en este modo.
24 bits, se vera el fondo negro siempre,no tiene canal alpha.
8bits es escala de grises(256 colores),no tiene canal alpha.
De todas formas al convertilos con el conversor de fuentes, creara una fuente de 32bits si o si.
Yo recomiendo los 32 bits, por facilidad de retoque grafico.
Coords format: Esto es muy muy importante, y
SIEMPRE debe ser en formato ASCII.txtEl formato binario .tab da problemas con el conversor y se decidio por seguridad el formato ASCII.txt
En la captura tengo tachado el Binario.tab, ya que cuando hice esas capturas eran en ese formato, pero da problemas.
asi que SIEMPRE debe ser en formato ASCII.txt, SIEMPRE!
Este documento lo carga el Conversor de fuentes, para crear la fuente final!
Output path: Importante, Es donde va a parar la fuente generada, seria:
Arial.txt + Arial001.png, Arial002.png,...Cambia la direcion en esta carpeta: ...\
fontrast_to_map\fnb
Deben estar en esta carpeta
fnb, es donde carga las fuentes generadas del Fontrast.
Base filename: Es el nombre de nuestra futura Fuente, aqui no hay que poner ninguna extension.
Yo por facilidad de identificacion suelo copiar el nombre de la fuente usada:

se puede selecionar y copiar Ctrl+C y despues pegarlo en el recuadro del nombre Ctrl+V
Start!!!
Estas listo? revisate antes todos los pasos, y cuando creas que estas listo, pulsa Start
Te generara tu fuente, y depende de la Calidad del filtro
Supersample te tardara X segundos, y pones NONE, sera instantaneo!!
Termina cuando los botones del panel nos deje editar de nuevo(por desgracia no dice ninguna notificacion al terminar)
Revisate que esten en este directorio: ...\
fontrast_to_map\fnb que tenga tu fuente: Arial.txt + Arial001.png, Arial002.png,...

(la captura esta mal, le falta el file Arial.txt)
Asi sabras que habrá terminado.
Puedes ver el resutado:
Botones: Export settings,Import settings:(opcional, pero recomendado)

Estos 2 botones permite guardar toda la configuracion de la fuente que has creado, y te lo guarda en un file.
Con este file te sera facil recargar la configuracion de una fuente contreta a otra, asi no hace falta volver a configurar todo de nuevo, recomiendo usarlo, y es una buena manera de ir rapido!!
----------------------------------------------------------------------------------------------------
tuto3:Fuente generara .PNG a .MAP convertidoEstos son los pasos Ultimos para Convertir una Fuente de Fontrast a un map de 32bits ASCII completa.
1-Asegurarse que existan las fuentes en el sitio correcto:Si, debemos comprobar si existen los ficheros y la ruta correcta antes de empezar a convertir la fuente generada por Fontrast a la nueva.
Revisate que esten en este directorio: ...\
fontrast_to_map\fnb que tenga tu fuente:
Arial.txt + Arial001.png, Arial002.png,...
(la captura esta mal, le falta el file Arial.txt)
2-Convertir los PNG a MAPMuchos de nosotros ya sabemos como convertir el formato, pero de todas formas lo recuerdo

yo lo hago de esta manera:
Selecionamos el PNG con el
boton derecho,
Abrir con... y MAP EditorEn caso de no tenerlo en esa lista, tendreis que buscarlo vosotros mismos, en
Elegir programa...No debeis activar la casilla: Utilizar siempre el programa selecionado para abrir este tipo de archivos.

Una vez abierto el MAP Editor con el PNG abierto, hay que salvarlo como MAP
File -> Save Image As...
Como Arial00x.map
Asi hay que hacerlo con
todos los PNG de nuestra Fuente generada con Fontrast.3-Asegurarse que existan las fuentes en el sitio correcto:Si, debemos comprobar si existen los ficheros y la ruta correcta antes de empezar a usar el conversor.
Revisate que esten en este directorio: ...\
fontrast_to_map\fnb que tenga tu fuente:
Arial.txt + Arial001.map, Arial002.map,...
(la captura esta mal, le falta el file Arial.txt)
4-Utilizar el programa:Fontrast_to_MAP.exe
Nos aseguramos que tengamos la carpeta
fnb con nuestra fuente dentro.
y ejecutamos Fontrast_to_MAP.exe

Nos cargara una pagina de nuestra fuente, en tamaño grande(x2) pero es normal.
Explico, remarcado en colores que es cada cosa:
Verde: Son las fuentes que hay disponibles para convertir y que las considera correctas, muestra el nombre de la fuente.
Para cambiar de fuente utiliza los cursores arriba y abajo. para cambiar.
Rojo: Numero de Paginas que contiene esta fuente, son las paginas que a generado Fontrast para tu fuente, para cambiar de pagina utiliza derecha y izquierda.
y para desplazarte y verla utiliza W,S,A,D, como cursores de desplazamiento.
Amarillo: El numero de Caracteres que contiene la Fuente, es de informacion simplemente.
pero te servira para luego para programar.
Azul Cielo: Altura en pixeles de la Fuente, es de Informacon, y te servira para luego para programar.
Pulsa Enter para selecionar esta fuente para Convertir!

Esto sirve para
calibrar el tamaño y posicion de los caracteres, y no hay que cambiarlos de uno en uno, eso lo aplica a
todos los caracteres, para que sirve esto?
Esto tiene utilidad si tienes pensado para luego retocarlo con photshop/gimp, para
añadir sombras, resplandor, efectos de movimiento.... etc.
Pero si tu tienes pensado de NO usar sombras,resplandor, o cualquier cosa que
sobresalga del tamaño original de los caracteres, pues puedes dejarlo todo a
0, por defecto.Pero puedes aplicar todos estos efectos de photshop, mientras que no pinte nada fuera del area de cada caracter:

(y trazado de Dentro)
Si reservaras un espacio adicional, SI podrias usar Sombras,resplador y Trazados exterior o Centro.
Resumiendo, es para poder reservar un espacio adicional y posicionar el centro del caracter en la fuente.
y si, tiene efecto entre separacion de fuentes.
Pulsamos Enter si ya has terminado de ajustar algo,o si no quieres tocar nada aqui.

Aqui esta YA convertiendo tu Fuente en una nueva, limpia y bien creada, ya que la que crea Fontrast añade publicidad, ademas de tener paginas.
Esta fuente nueva no usa paginas, y crea un file binario de configuracion.
CAR: Muestra los caracteres que esta convirtiendo y el total.
COD: Es el numero ASCII(o Unicode) que corresponde ese caracter que esta convertiendo.
Ach: es una informacion adicional del caracter actual, dice el ancho del caracter y la altura(siempre es la misma)
LongT: Es la longitut total en pixeles del nuevo MAP de tu fuente y la posicion actual que esta conviertiendo.
Cuando termine saldra este mensaje:

Fijate bien la ruta que te indica, es una nueva carpeta que a creado y el nombre de tu fuente.
Solo hay 2 files y siempre sera 2 files por fuente.
X.cnf y X.map
Siempre es así!Podemos abrir este
nuevo .map con el MAP Editor

Vemos que nos a pasado la fuente en una tira similar a los FNT de div2.
pero este no tiene ningun espacio, ni puntos de control ni nada.
toda informacion y configuracion lo almacena el
file .cnf----------------------------------------------------------------------------------------------------
tuto4: Editar fuente nueva y algun truco (X.cnf y X.map) (Opcional)
como que la fuente nueva esta en .MAP, hay que abrirla con el MAP Editor
y salvarla como PNG.
Siempre que el MAP no este comprimida o contenga contraseña.
Con este PNG del MAP original podemos ya editarlo con cualquier editor grafico.
Yo uso el Photoshop:
Depende de la separacion y espacio reservado que hemos creado para esta fuente podremos o no añadir sombras,resplador y trazado exterior/centro.
como esta fuente:(con separacion y centrado adicional)

(y aun así,la sombra se sale un poco de esa separacion/area entre caracteres)
Si no es asi (no tiene ninguna separacion), solo podemos hacer todas estas cosas como mucho:

tambien puedes retocarlo a mano a gusto.
o modificar algun caracter existente.
Cuando termines, salvalo de nuevo en PNG.
Y de este PNG nuevo, Salvalo a MAP con MAP Editor.
una vez dentro del MAP Editor PUEDES cambiar la calidad de colores, como indico en el
TUTO1: arrabia del todo.
y despues salvarla como un nuevo .map.
Puedes crear una copia de la fuente, siempre que tambien copies el file.cnf que viene junto con el .map.
Arial.cnf y Arial.mapy el modificado:
Arial_2.cnf y Arial_2.map----------------------------------------------------------------------------------------------------
tuto5: Tu primer PRG y otros ejemplos:Bien, ya tienes tu fuente creada:
Arial.cnf y Arial.map1-Abrimos GMXEditor y creamos un nuevo programa:
Depende de la calidad de la fuente que usaremos:
Si tu fuente es de
32, tu programa debe ser de
32bits.si tu fuente es de
16, tu programa puede ser de
32 y 16 bits.si tu fuente es de
8, tu programa puede ser de
32,16 y 8bits.El resto de opciones lo dejo a vuestro gusto.
2-Nos aseguramos y creamos una carpeta de nuestro PRG:
Nos aseguramos que tengamos estos files de esta manera.
a-Podemos crear una carpeta para guardar nuestras fuentes,(lo recomeindo) yo le llamo
Fontb-Importante o no funcionara: Necesitamos
writen.prges el modulo/programa que Interpreta y crea y pinta nuestras fuentes!!
c-Y este doc: DOC_WritenFonts.prg es solo para consultar los comandos,variables,estructuras para nuestros proyectos (es opcional, pero recomiendo tenerlo cerca, y no se compila!)
d-Nuevo programa creado.prg lo guardamos con el nombre que queramos.
3-Preparamos el DOC:(para guiarnos y de ayuda)
Lo podemos abrirlos de diferentes formas/aplicacion.
blok de notas, notepad++ y el IDE de Gemix.
To tengo la costumbre de cargarlo con el IDE de Gemix, ya que me pinta el sintasy de colores. y me es mas facil buscar los comandos. esto va a gusto.
4-Nuestro primer codigo PRG(esta inclompleto)


Se necesita tener puesto SIEMPRE: para cargar el modulo de fuentes.
-------------------------------------------------------------------------
mas ejemplos:






--------------------------------------------
Dejo de momento estos sintaxy, en el DOC esta todos, pero muy resumido y en ingles malo.
Cargar una fuente en memoria:id numero de fuente cargada = WS1_load_font(<string file de la fuente,sin extension>,<string contraseña>);
----Sintaxy---
Carga en memoria la fuente de alta calidad, y la guarda toda la informacion en una estructura global
llamada WS1_fuent_t.
Puede cargar fuentes comprimidas y con contraseña con WS1_SAVE_FONT
Devuelve 0=> el numero de fuente cargada, corresponde tambien el numero de estructura WS1_fuent_t[X]
Siendo así:
id_font=WS1_load_font("font/Arial",0);
WS1_fuent_t[id_font]...
Nombre de la fuente, sin extension, debe existir 2 files: X.cnf y X.map, X es el nombre de la fuente.
Se admiten rutas completas como estas: C:\mi_d\dnt\Arial , ..\fnt\Arial2 , Fuentes\Arial
Contraseña de la fuente.
si esta a: 0/"" = sin contraseña, cargara la fuente siempre que no tenga ninguna contraseña.
"..." es la contraseña de la fuente, si esta mal la contraseña, dara error de carga!
Descargar Fuente en memoria:ok = WS1_unload_font(int id de la fuente);
----Sintaxy---
Descarga una fuente de alta calidad, y borra toda la informacion en una estructura global
llamada WS1_fuent_t.
Pero sigue en memoria aquellos textos imprimidos con funciones tipo: Writen
hasta proxima actualizacion de su contenido.
Si desea borrarlos tambien, use WS1_delete_writen(all_text);
Tambien puede Descargar TODAS las Fuentes en memoria:
usando: WS1_unload_font(all_fnt);
Devueble 1 si se a descargado bien la fuente, 0 no puede descargar esa fuente.
int id de la fuente = Es el numero identificador que devuelve WS1_load_font(
usandolo de esta forma:
id_font=WS1_load_font...
...
WS1_unload_font(id_font);
Imprimir texto en pantalla:id_text=WS1_writen(id_font,320,240,4,"Hola Mundo!");
ID = WS1_writen(int id_font,int x,int y ,int ALIGN,string text);
----Sintaxy---
Imprime en pantalla un texto estatico(no autoactualizable) en pantalla
debuevle el ID del texto, se puede manipular como si fuese un processo normal.
Ademas de contener estas variables locales:
LOCAL
*string WS1_text_wrt[top_text_limit]; //texto actualizable
* byte WS1_kill_wrt; //local killed writen, 0=normal,1=kill writen
* word WS1_longx_wrt; //largo grafico de la cadena
* word WS1_srtlen; //largo en caracteres del texto stirng,int,float
* int WS1_ajspc_wrt; //ajuste de separacion entre caracteres
* int WS1_font_wrt; //id load_font/id_font
* byte WS1_centro_wrt; //codigo centrado
no se puede matar a un WS1_writen, con signal(type WS1_writen,s_kill);
tampoco congelarlo,ni dormirlo.
Si desea borrar el texto, use WS1_delete_writen(id_texto);
Tambien puedeborrar TODOS las textos en pantalla:
usando: WS1_delete_writen(all_text);
Su uso de los parametros de WS1_writen es casi igual que WRITE de Div2.
El campo de String texto, se puede escribir cualquier texto ASCII completo(32-255), pero NO Unicode.
Al crear el WS1_writen se crea por defecto con los variables globales para los textos WRITE
GLOBAL
* text_alpha (= 255)
* text_angle (= 0)
* text_flags (= 0)
* text_fxmode (= 0)
* text_fxcolor (= 0)
* text_fxintensity (= 0)
* text_region (= 0)
* text_size_x (= 100)
* text_size_y (= 100)
* text_z (= -256)
* text_tfmorder (= 0)
* text_shear_x (= 0)
* text_shear_y (= 0)
* text_destination_file (= 0)
* text_destination_graph (= 0)
Incluyendo uno nuevo: * byte WS1_text_ctype (= 0) //ctype en los textos
Para actualizar el texto de WS1_writen, deben usar esta sentecia:
id_texto.WS1_text_wrt="Texto nuevo";
se actualizara automaticamente.
Tambien es posible imprimir un texto de esta manera:
id_text=WS1_writen(id_font,320,240,4,0);
id_text.WS1_text_wrt="Texto nuevo";