tutorial ejemplos descargar actionscript-3 flash fonts internationalization text-rendering

actionscript 3 - ejemplos - ¿Cómo puedo evitar el desplazamiento de texto para algunas fuentes de idiomas extranjeros?



actionscript 3.0 tutorial (7)

Tengo un proyecto multilingüe (actualmente 13 idiomas), que utiliza muchas variaciones de fuentes diferentes de "Helvetica Neue", en su mayoría recortes audaces, condensados ​​y regulares del conjunto de fuentes LinoType Pro (que incluye caracteres europeos occidentales) y lo mismo para cirílico. Probablemente añadiremos variaciones chinas y japonesas en el futuro.

He configurado el proyecto para usar diferentes hojas de estilo CSS y cargar las fuentes por separado para cada versión, dependiendo de qué idioma seleccione el usuario, por lo que puedo tener distintas alturas de línea, kerning y / o tamaños de fuente para que todo mantenga el aspecto original. incluso si las fuentes no se parecen en nada.

Todo esto funciona bien, excepto por un problema: por alguna razón, todas las letras cirílicas parecen estar desplazadas. Aparecen 2-3 píxeles por debajo de la línea de base correcta, y sobresalen en realidad por el borde inferior del campo de texto, incluso cuando el campo está configurado para autosize. Cuando uso textfield.getCharBoundaries() , todos los valores parecen ser correctos, aunque obviamente no se representan correctamente.

Para que todo parezca perfecto, podría, por supuesto, mover manualmente todos los campos de texto problemáticos hacia arriba o hacia abajo de acuerdo con el idioma y el tamaño de fuente, pero me preguntaba si había alguna forma de prevenir o al menos detectar este tipo de desplazamiento para manejar automáticamente el Ajustes: Flash Player debería tener algún tipo de información sobre cómo se procesan las cosas, ¿no es así? ¿Alguno de ustedes ha tenido problemas similares? O mejor aún: ¿una solución?


¿Has intentado simplemente modificar la fuente para ajustar el 1px más o menos? Simplemente mueva las letras hacia arriba (o hacia abajo). No leí todo lo que escribieron todos. Aunque actualmente no lo tengo instalado, creo que mi preferencia para los editores es "Fontlab".


¿Has intentado usar una fuente de ancho fijo?


¿Su versión de Helvetica Neue tiene glifos para cirílico? Si no es así, obtienes la fuente alternativa y la fuente utilizada para el ruso no es, en realidad, Helvetica Neue, sino otra cosa, con otras métricas. Y tendrás más de esto si vas al chino, porque Helvetica Neue definitivamente no contiene glifos chinos :-)

Por otro lado, realmente considero TLF. Es mucho mejor para el soporte internacional, y Flash Player 10.0 (que presenta TLF) ya tiene más de 2,5 años. Intenta convencer a tus clientes que no es razonable pedir una tipografía internacional de alto nivel con tecnología antigua. Es un trato de ambos.


He experimentado un problema similar con el idioma árabe. Parece que las aplicaciones de Adobe siempre tienen problemas con los idiomas que no están en inglés. En algunos idiomas, en Flash Player el texto se ve dañado, pero al reproducir Flash en Flash Player, el problema no existe.

No estoy seguro de cuál podría ser la solución para su problema, pero puede intentar solucionarlo.

Pruebe este trabajo, pero se vuelve más complicado: - en cada pulsación de tecla, inserte el carácter presionado como una imagen. Podría resolver su problema, pero llevaría más tiempo escribir el código


He tenido problemas similares, y todas las soluciones que he probado son bastante complejas o tienen algún inconveniente:

  • Use TLF. Sé que no quieres, pero es una solución bastante segura (pero compleja).

  • No utilice antialiasing de "legibilidad", use "animación". Las fuentes se verán peor, pero sus métricas deberían ser un poco más confiables.

  • Pruebe con cacheAsBitmap o filtros nulos (es decir, BlurFilter (0,0,0)). Funcionará en algunos casos, pero no en todos.

  • Guarde manualmente todos los campos de texto como BitmapData. Esto debería mostrar métricas mucho más confiables, pero puede ser complicado. Incluso puede arreglar esto sobre la marcha con getColorBounds para obtener las métricas "reales". Pero, de nuevo, todo es muy complicado y necesita muchas pruebas.


Parece que la fuente que está utilizando tiene un error real en los glifos para cirílico. Así que aquí hay una solución brutalmente simple, pero molesta. Edita la fuente. Suena loco, pero no hay tantos glifos cirílicos, y parece que quieres una sola fuente. Edítelo, distribuya la versión corregida y listo.

Fontforge es bastante decente, apuesto a que puedes editar la fuente en una hora una vez que hayas configurado.


Tuve este problema para chino, pero solo en OS X versus Windows. No pude encontrar la forma de obtener automáticamente las métricas adecuadas para saber dónde estaban realmente los personajes. Terminé con una función aproximada a la que llamé cada vez que configuré un TextField:

public static function adjustPositioning(field:TextField):void { if(OS != "MAC") return; var fontSize:int = field.defaultTextFormat.size as int; field.y += fontSize/5; }

Estaba configurando todos mis TextFields en código en lugar de IDE, así que fue fácil. ¡Sin embargo, creo que es la solución que no estás buscando!