Autor Tema: Traduccion con fuentes  (Leído 266 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Dublan

Traduccion con fuentes
« en: Mayo 07, 2018, 09:27:31 pm »
Hola Makeros!

Tengo casi listo mi segundo juego, y ahora estoy en la fase de traducirlo a varios idiomas  XD

Estoy teniendo bastantes problemas con la traducción a chino, árabe, vietnamita, etc. He creado fuentes para cada uno de estos idiomas, y a la hora de crearlos parece que todos los símbolos/letras están correctamente implementados en la fuente, pero a la hora de ejecutar el juego, no escribe absolutamente nada  :(

Qué estoy haciendo mal????  ???


PD: Haciendo la traducción a idiomas como el ingles, portugués, francés...no hay problema.


 
No Tienes Permisos Para Dar Puntos
point 8 Puntos

Usuarios que puntuaron el tema » Clamud (8 Pts) 


Desconectado Clamud

Re:Traduccion con fuentes
« Respuesta #1 en: Mayo 08, 2018, 05:19:42 pm »
¿Cómo se ha agregado la fuente al proyecto?
 


Desconectado Dublan

Re:Traduccion con fuentes
« Respuesta #2 en: Mayo 08, 2018, 07:41:08 pm »
Hola Clamud!

He probado varias cosas:

1)Creando fuentes a partir de .ttf que me he descargado e instalado en windows.

2)También acabo de probar de esta otra manera y nada. He incluido el archivo del ttf al juego, y en el create event he puesto:

Código: [Seleccionar]
chino=font_add("drfont_daraehand_Basic.ttf",20,true,true,32,54000)

Y en draw event:
Código: [Seleccionar]
draw_set_font(chino)
draw_text_outline(x,y-60,"新游戏",3,c_black,4)
draw_text_colour(x,y-60,"新游戏",c_orange,col1,col,col,1)
« última modificación: Mayo 08, 2018, 08:22:02 pm por Dublan »
 

Desconectado Clamud

Re:Traduccion con fuentes
« Respuesta #3 en: Mayo 11, 2018, 02:11:29 pm »
Tal vez las fuentes no son compatibles con UTF-8
En la ventana de propiedades de la fuente en GMS, ¿si escribes en el cuadro de prueba se muestra el mismo texto?
 

Desconectado Dublan

Re:Traduccion con fuentes
« Respuesta #4 en: Mayo 11, 2018, 07:05:30 pm »
Pues acabo de probar y si que se ven los símbolos. Te adjunto lo que veo yo.

 

Desconectado Dublan

Re:Traduccion con fuentes
« Respuesta #5 en: Mayo 13, 2018, 01:21:42 pm »
Hola,

Os pongo por aquí los resultados de mi investigación (todavía no he probado que funcione), por si puedo ir ayudando a alguien con mi mismo problema.

En primer lugar tendría que añadir las fuentes .ttf como included files, llamarlas con la función font_add(), y luego utilizar un archivo UTF8 para leer y escribir sobre el:

https://forum.yoyogames.com/index.php?threads/using-japanese-characters-in-game-maker.3984/

https://forum.yoyogames.com/index.php?threads/solved-how-to-write-out-strange-symbols.17448/

https://docs.yoyogames.com/source/dadiospice/002_reference/file%20handling/ini%20files/index.html

Es decir, crear un archivo de texto en blanco con el bloc de notas y guardarlo como UFT8. Una vez creado, insertarlo en game maker en "included files". De esta manera tendríamos una página en blanco en formato UFT8 que puede leer símbolos y acentos de otros idiomas. Ahora utilizaríamos este archivo como un archivo ini en el que iríamos escribiendo y borrando el texto que queramos de cualquier idioma. Lo más práctico será crear un script que pueda ir escribiendo, leyendo y borrando el texto siempre sobre este archivo UTF8.

Cuando tenga tiempo de probar lo que comento, editaré este post con el resultado!  :D
« última modificación: Mayo 13, 2018, 01:28:35 pm por Dublan »
 

Desconectado Dublan

Re:Traduccion con fuentes
« Respuesta #6 en: Mayo 13, 2018, 09:33:02 pm »
Pues algo estoy haciendo mal.... >:( >:(

El caso es que poniendo show_message("继续游戏") me sale el mensaje perfectamente. No entiendo qué ocurre......

Alguna idea????

Este es mi código:

Script scr_traducido
Código: [Seleccionar]
if global.idioma=="chin"
{
idioma=font_add("drfont_daraehand_Basic.ttf",argument0,true,true,32,54000)//Fuente incluida en "included files"
draw_set_font(idioma)
}

ini_open("traduccion")//EL archivo de texto UTF8 en "included files"

if ini_section_exists("Save")
{
ini_section_delete("Save")
}

ini_write_string("Save","Trad",argument1)

texto_uft8=ini_read_string("Save","Trad","-")

ini_close()

return texto_uft8//el string de UTF8

En el objeto:

Draw event
Código: [Seleccionar]
texto=scr_traducido(30,"继续游戏")
draw_text_outline(x,y-60,texto,3,c_black,4)
draw_text_colour(x,y-60,texto,c_orange,col1,col,col,1)

Gracias!!
« última modificación: Mayo 13, 2018, 10:23:54 pm por Dublan »
 

Desconectado Void

Re:Traduccion con fuentes
« Respuesta #7 en: Mayo 15, 2018, 02:04:05 am »
Descargue la fuente que estas usando, o al menos la que google encontró al buscar con ese nombre, y la fuente no tiene glifos para los caracteres que ocupas, los caracteres 32487,32493,28216 y 25103 están en blanco.

Que te aparezcan en show_message o en la ventana de creación de fuente no importa, eso es dibujado por windows y si la fuente usada no tiene los glifos requeridos windows usa fuentes alternativas que si los tengan para mostrarlos.

Al probar con una fuente más completa el texto es dibujado sin problema.
 
Los siguientes usuarios dieron las gracias a este tema: Dublan

Desconectado Dublan

Re:Traduccion con fuentes
« Respuesta #8 en: Mayo 15, 2018, 08:31:38 pm »
Gracias por la respuesta Void!

He probado con otra fuente y sí que parece que es el problema principal. Lo que me despistaba es justamente:
Que te aparezcan en show_message o en la ventana de creación de fuente no importa, eso es dibujado por windows y si la fuente usada no tiene los glifos requeridos windows usa fuentes alternativas que si los tengan para mostrarlos.

Para ver las fuentes, yo uso el programa Fontforge, pero lo que me parece curioso es que supieras en qué posición deberían aparecer los símbolos que puse. ¿Como lo supiste?

Aprovecho para preguntar, ¿De donde puedo sacar fuentes fiables? Es que me he descargado muchas gratuitas y a la mayoría le faltan muchos símbolos, por ejemplo para hindi.

Voy a seguir buscando fuentes para asegurarme que ese fue el motivo.

Edit: Como es posible que por ejemplo para hindi, poniendo el texto en su idioma no dibuje nada, y si lo pongo en ingles me dibuje texto en hindi???  :-\

« última modificación: Mayo 15, 2018, 09:07:00 pm por Dublan »
 

Desconectado Void

Re:Traduccion con fuentes
« Respuesta #9 en: Mayo 15, 2018, 11:14:21 pm »
También uso FontForge, para encontrar la posición de un carácter puedes ir al menú Ver y usar la opción Ir a, o usar el atajo ctrl+alt+>, en la ventana que abre escribes o pegas el carácter y el programa te lleva a la posición que debería tener dentro de la fuente. Alternativamente, si colocas los caracteres en el rango de una fuente en GMS te dará sus posiciones, pero si hay varios seguidos los dará en secuencia, lo que puede ser algo molesto.

Sobre donde sacar fuentes fiables, no conozco de ningún lugar seguro, siempre dependerá del autor de la fuente que tanto esfuerzo le haya puesto, y si hablamos de fuentes gratuitas es difícil encontrar trabajos completos. Es cuestión de usar san google y esperar tener suerte, por ejemplo, para ver los caracteres chinos que querías dibujar use SimSun, que de acuerdo a un articulo explicando las complicaciones de hacer una fuente china para computadoras es una fuente que fue agregada a Windows XP de uso generalizado en China. Asumí que si era lo suficientemente buena para China sería lo suficientemente buena lo que buscaba.

Sobre hindi, en general las fuentes que se encuentran remplazan el alfabeto latino por el alfabeto devanagari, es por eso que si tratas de usar el valor Unicode de una letra devanagari solo consigues un espacio en blanco, pero si usas letras latinas aparece devanagari.

Lo que necesitas es una fuente que use ambos alfabetos, por ejemplo en fonts.google.com encontré Hind, una fuente de código abierto que tiene el alfabeto latino y devanagari en sus respectivas posiciones Unicode.
 

Desconectado Dublan

Re:Traduccion con fuentes
« Respuesta #10 en: Mayo 20, 2018, 09:48:36 pm »
Muchas gracias Void!

He probado con la fuente "Hind medium" que me comentabas de google fonts, y me sale un símbolo muy raro...mira la primera imagen adjunta.

Pertenece al código:
Código: [Seleccionar]
draw_text_colour(x,y-305,"फोजी",c_orange,col1,col,col,1)

Que viene de la traducción "soldado".

Es como que dibuja un círculo discontinuo en el símbolo que no encuentra. He estado haciendo algo similar con el idioma bangla, usando la fuente "Ekushey Azad" o "Atam", y dibuja también el círculo.

En Forgefont, buscando la segunda palabra "जी", me aparece lo que adjunto en la otra imagen. Parece que solo tiene dibujado parte de la palabra. He probado con muchas fuentes y pasa lo mismo. ¿Qué puede estar pasando?

« última modificación: Mayo 20, 2018, 09:56:46 pm por Dublan »
 

Desconectado Void

Re:Traduccion con fuentes
« Respuesta #11 en: Mayo 21, 2018, 02:39:16 am »
Probando con Hind Medium no tengo ningún problema, el texto se dibuja como debería:



Si dices que te esta pasando con varias fuentes entonces podría tratarse de un problema de incompatibilidad, quizás GM no esta juntando los caracteres apropiadamente, asegurate de tener la ultima versión de GMS, si no la tienes actualiza, y crea un respaldo de cualquier proyecto ANTES de abrirlo con la nueva versión.

Si ya tienes la ultima versión, o si al actualizar no se soluciona el problema, entonces no sé cual pueda ser el error, tocaría ponerse en contacto con el soporte de Yoyo.
 

Desconectado Dublan

Re:Traduccion con fuentes
« Respuesta #12 en: Mayo 24, 2018, 09:13:17 pm »
Ufff, me da pánico actualizar GM   :-X

Por ahora tengo traducido el juego a 10 idiomas, pero aparte de duplicar el tamaño del apk  ???, estoy viendo que el rendimiento del juego con el movil va fatal. Antes de meter tantos idiomas, el juego iba de 10, y ahora me saca del juego al jugarlo 2 minutos......... Me he asegurado de eliminar instancias con traducciones que no se dibujan, y aun así va muy mal.

¿Qué puede estar afectando tanto al rendimiento referente a las fuentes? Viendo los fps, mas o menos están estables a 60, hasta que de repente se cierra el juego.

PD: ya tengo agrupadas las texturas
PD1: en otros móviles, funciona bien hasta pasados 5 minutos, donde se empieza a ralentizar muchísimo
 

Desconectado Void

Re:Traduccion con fuentes
« Respuesta #13 en: Ayer a las 03:04:47 am »
Suena a fuga de memoria, en tu script scr_traducido, por ejemplo, veo que usas font_add, y llamas ese script en un evento draw, eso quiere decir que, a menos de que estés limpiando las fuentes con código que no mostraste, por cada step que pasa estas creando una fuente nueva sin eliminar la anterior. Exceptuando para arrays, GMS no tiene recolector de basura, así que esas fuentes se quedan flotando en el limbo y saturando la memoria.
 

Desconectado Dublan

Re:Traduccion con fuentes
« Respuesta #14 en: Ayer a las 06:35:44 pm »
Si, casi seguro que es fuga de memoria, pero no veo donde está  ???

En cuanto a lo del script, lo descarté y no lo tengo metido. La forma en la que estoy usando las fuentes es:

Código: [Seleccionar]
if global.idioma=="esp"
{
draw_set_font(font_30)
draw_text_outline(x-130,y-25,"DIA",1,c_black,16)
draw_text_outline(x+80,y-25,"HORA",1,c_black,16)
}
else if global.idioma=="eng"
{
draw_set_font(font_30)
draw_text_outline(x-130,y-25,"DAY",1,c_black,16)
draw_text_outline(x+80,y-25,"HOUR",1,c_black,16)
}
else if global.idioma=="bang"
{
draw_set_font(font_40_bengali)
draw_text_outline(x-130,y-40,"দিন",1,c_black,16)
draw_text_outline(x+80,y-40,"ঘন্টার",1,c_black,16)
}
else if global.idioma=="chin"
{
draw_set_font(font_40_chino)
draw_text_outline(x-130,y-28,"天",1,c_black,16)
draw_text_outline(x+80,y-28,"小时",1,c_black,16)
}
else if global.idioma=="alem"
{
draw_set_font(font_30)
draw_text_outline(x-130,y-25,"TAG",1,c_black,16)
draw_text_outline(x+80,y-25,"STUNDE",1,c_black,16)
}
else if global.idioma=="fran"
{
draw_set_font(font_30)
draw_text_outline(x-130,y-25,"JOUR",1,c_black,16)
draw_text_outline(x+80,y-25,"HEURE",1,c_black,16)
}
else if global.idioma=="indi"
{
draw_set_font(font_30_indio)
draw_text_outline(x-130,y-25,"दिन",1,c_black,16)
draw_text_outline(x+80,y-25,"घंटे",1,c_black,16)
}
else if global.idioma=="indo"
{
draw_set_font(font_30)
draw_text_outline(x-130,y-25,"HARI",1,c_black,16)
draw_text_outline(x+80,y-25,"JAM",1,c_black,16)
}
else if global.idioma=="japo"
{
draw_set_font(font_30_japon)
draw_text_outline(x-130,y-25,"日",1,c_black,16)
draw_text_outline(x+80,y-25,"時間",1,c_black,16)
}
else if global.idioma=="core"
{
draw_set_font(font_60_coreano)
draw_text_outline(x-130,y-45,"일",1,c_black,16)
draw_text_outline(x+80,y-45,"시간",1,c_black,16)
}
else if global.idioma=="marr"
{
draw_set_font(font_30_arabe)
draw_text_outline(x-130,y-25,"يوم",1,c_black,16)
draw_text_outline(x+80,y-25,"ساعة",1,c_black,16)
}
else if global.idioma=="pais"
{
draw_set_font(font_30)
draw_text_outline(x-130,y-25,"DAG",1,c_black,16)
draw_text_outline(x+80,y-25,"UUR",1,c_black,16)
}
else if global.idioma=="port"
{
draw_set_font(font_30)
draw_text_outline(x-130,y-25,"DIA",1,c_black,16)
draw_text_outline(x+80,y-25,"HORA",1,c_black,16)
}
else if global.idioma=="rusi"
{
draw_set_font(font_22_ruso)
draw_text_outline(x-130,y-15,"ДЕНЬ",1,c_black,16)
draw_text_outline(x+80,y-15,"ЧАС",1,c_black,16)
}
else if global.idioma=="viet"
{
draw_set_font(font_30_viet)
draw_text_outline(x-130,y-25,"NGÀY",1,c_black,16)
draw_text_outline(x+80,y-25,"GIỜ",1,c_black,16)
}

Siendo el draw_text_outline:

Código: [Seleccionar]
var dto_dcol=draw_get_color();

draw_set_color(argument4);

for(var dto_i=45; dto_i<405; dto_i+=360/argument5)
{
    draw_text(argument0+lengthdir_x(argument3,dto_i),argument1+lengthdir_y(argument3,dto_i),argument2);
}

draw_set_color(dto_dcol);

draw_text(argument0,argument1,argument2);

Tengo muchas fuentes creadas, por cada idioma (10 ahora) y por cada tamaño (9 por idioma).No sé si vendrá por ahí el problema.