actionscript 3 - Incrustación de fuentes As3
actionscript-3 fonts (3)
He visto muchas preguntas relacionadas con la incrustación de fuentes en flash y parece que no puedo encontrar una respuesta a mi problema.
Cargué las fuentes de un archivo swf de fuente y las registro en un nivel alto para que puedan usarse en archivos secundarios secundarios. El problema es que el swf del niño también puede incrustar estas fuentes, pero no explícitamente, lo que significa que solo están incrustadas porque hay campos en el swf secundario que usan ciertos caracteres de una fuente. Esto significa que los campos de texto en el niño usan la fuente incrustada incompleta en lugar del conjunto completo incrustado que está registrado en el padre o en cualquier nivel de abuelo. También esto significa que los archivos SWF que pueden convertirse en hijos de este niño no obtendrán la fuente completa.
Mi pregunta: ¿hay alguna manera de decirle flash en compilación para no incrustar, bajo ninguna circunstancia, las fuentes en un swf? Si no, ¿hay alguna herramienta que elimine fuentes incrustadas de un swf compilado?
Aquí hay algunas cosas que he pensado / notado hasta ahora:
- Parece como si cada clase de Font estuviera ligada a un ApplicationDomain. (La confirmación de esto sería útil)
- El uso de fuentes de dispositivo en campos de texto no causará ninguna fuente para incrustar. (No es una opción para mí, sin embargo, porque necesito los campos para incrustar fuentes en tiempo de ejecución desde un swf principal).
- No puedo encontrar la forma de anular el registro de fuentes o simplemente decirle a swfs hijos cargados que utilicen fuentes principales, lo que sería útil para aplicar al archivo swfs hijo cargado.
- Es posible cargar el elemento secundario en un contexto diferente que permita que las definiciones principales de una fuente anulen las definiciones secundarias. (¿O habría dos definiciones y, de ser así, cuál tiene prioridad?)
- Al cargar los activos de la biblioteca del niño y agregarlos al escenario obtendrá la definición principal de la fuente. (Esto tiene sentido porque el activo se crea fuera del dominio del niño)
- Una posible solución podría ser no agregar ningún carácter a los campos de texto para compilar el archivo swf, pero tampoco es una opción porque necesito texto estático con cualquier fuente.
Empecé a formar una definición de lo que el problema en mi mente puede ser incorrecta, así que si es necesario, retroceda unos pasos y bríndeme una perspectiva diferente del problema. Hasta ahora, parece que la pregunta que hice más arriba es la pregunta correcta para responder y si hay una solución para ella, todos mis problemas desaparecen.
¡Gracias!
Si estoy en lo cierto al entender, ¿en lugar de eliminar / anular el registro de todas las fuentes que no están completas como la versión de esta fuente específica que ya estaba cargada, pero incrustada en otro swf?
Cada fuente que está incrustada crea una clase, cada swf que carga a través de la clase Loader se carga de forma predeterminada en su propio dominio de aplicación, para evitar conflictos de espacio de nombres, pero puede forzar al cargador a cargar todo en el dominio de aplicación actual con »loader contexto «parámetro del método load () de Loader. De esta forma, podrías tratar de forzar la anulación de las clases en el mismo espacio de nombres, pero no puedes controlar qué clase desechar, lo que significa que no puedes verificar qué letra tiene más glifos. (Tal vez solo arroja errores en lugar de anular y no se ejecuta en absoluto, no estoy tan seguro de esto).
Por otro lado, debe preguntarse cómo las fuentes están realmente integradas en los archivos swf del niño. No conozco otra manera más que insertar fuentes como:
en * .fla-files como "library symbol", o en código de flashbuilder o flex como este: [Embed(source="c:/windows/fonts/verdana.ttf", fontFamily="Verdana", embedAsCFF="false")]
,
o esto:
@font-face {
src: url("../assets/MyriadWebPro.ttf");
fontFamily: myFontFamily;
advancedAntiAliasing: true;
}
en archivos mxml Entonces, (eso es lo que supongo) el Nombre resultante de la clase que se genera depende de la propiedad »font-family« (o incluso más configuraciones) dada por el desarrollador, significa que incluso si la misma fuente está incrustada dos veces en la clase- el nombre puede diferir causado a través de la configuración.
Además, no hay ningún método Font.unregisterFont()
, por lo que la forma de gestionar esto sigue siendo una buena pregunta, en caso de que pueda encontrar la misma clase de Font de alguna manera (tal vez RegExp se convierta en un ayudante amigable).
Creo que para resolver esto correctamente necesita control en tiempo de compilación, utilizando xml * .xfl puede ayudar a los archivos del proyecto, pero incluso que el Font-File referenciado puede tener un nombre diferente.
Un buen problema, buena suerte
Resulta que esto es un error con mi versión de Flash Professional. Hice una actualización y las fuentes compartidas en tiempo de ejecución ahora son posibles. Probablemente apunte la fuente compartida a una URL incorrecta para las fuentes, luego las fuentes vendrán del dominio de aplicación principal porque no están compiladas en el archivo swfs secundario. Estoy usando Flash Professional CS5.5 11.5.1 ahora. Estaba usando CS5.5 11.5.0.
http://forums.adobe.com/message/3926344
Gracias Adobe por perder mi tiempo.
Tuve muchos problemas al usar fuentes con flash. Todavía es un problema en html con diferentes navegadores de diferentes formas.
De todos modos, para flash, construí este conjunto de herramientas que me ayuda mucho. Compruebe cómo personalizar sus fuentes. Si haces los pasos, estoy bastante seguro de que el problema se resolverá.
https://github.com/tbwa/AS3-Toolkit/tree/master/src/com/utils/text