Open Source Flash Pizza for everyone ! follow-up – Shared Fonts

[lang_fr]
On m’a demandé des précisions sur la technique des “polices partagées” utilisée dans OSFlash Pizza. En voici le secret…
[/lang_fr]

[lang_es]
Me han pedido que precise sobre la técnica de las “fuentes compartidas” utilizada en OSFlash Pizza. He aquí el secreto…
[/lang_es]

Structure de georgia.xml

[xml]


   
                   
       
       
   

[/xml] 

On compile avec la ligne de commande suivante:

[xml]
swfmill simple “src/georgia.xml” “deploy/Georgia Gras.swf”
[/xml]

Voilà !

Ensuite, libre à vous de choisir la façon de charger la police.

Dans le cas d’ OSFlash Pizza j’ ai choisi la voie du MovieClipLoader. Très pratique mais que je déconseille pour la production. Sa gestion des timeout est inéxistante et l’ utilisation de la méthode onLoadError conduit à des catastrophes.

Sur mes projets j’ utilise la classe LibStack de Pixlib. Si vous ne savez toujours pas ce qu’est Pixlib, rendez-vous ici. Attention, dernière fois que je répète !.

UPDATE:

NOM DE LA FONTE ET RISQUE DE CONFUSION.

Attention à utiliser le “vrai” nom de la fonte au moment du format coté Flash.

La fonte Georgia Gras illustre parfaitement ce cas. En effet, bien qu’il s’agisse d’une variante de Georgia, son nom réel est pourtant “Georgia”.
Ou trouver cette référence ? Dans le fichier TTF lui-même, après indication de la signature numérique.

Un bemol

Je n’ai pas encore pu cerner la raison exacte, mais il semblerait qu ‘un délai soit parfois nécessaire afin d’assurer la disponibilité de la fonte dans la librairie.

Pour OSFlash pizza, l’instantiation de l’application a été retardée avec un setTimeout:

[as]
public function Main(target)
{
target.__proto__ = this.__proto__;
target.__constructor__ = Main;
this = target;

XrayLoader.loadConnector(“main_xray_v1.3.4.swf”, _level1);

setTimeout(this, “init”, 500);
}

private function init()
{
var pizza = Application( attachMovie(Application.id, “pizzaService”, 1) );
}
[/as]

Je remercie erixtekila qui m’ a indiqué comment simplifier (de moitié!) la configuration xml. En fin de compte si vous lisez son article qui traite le même sujet, on s’aperçoit que les techniques sont bel et bien identiques. A une nuance près, celle exposée ci tient en un seul xml.

Liens d’ intérêt sur Libstack
http://www.get-url.net/blog/?47–pixlib-libstack-ou-le-multi-chargement
http://www.rosyflower.net/dotclear/index.php?2005/12/22/17-preloader-pixlib-

[lang_es]
Estructura de georgia.xml
[xml]


   
                   
       
       
   

[/xml] 

Compilamos con la siguiente línea de comandos:

[xml]
swfmill simple “src/georgia.xml” “deploy/Georgia Gras.swf”
[/xml]

Voilà !

Luego, sois libres de escoger la forma de cargar la fuente.

En el caso de OSFlash Pizza, he escogido el MovieClipLoader. Muy práctico, pero que desaconsejo para la producción. Su gestión de los timeout es inexistente y el uso del método onLoadError conduce a catástrofes.

En mis proyectos, uso la clase LibStack de Pixlib. Si ne sabáis aún lo que es Pixlib, id aquí. Atención, es la última vez que repito ;) .

ACTUALIZACIÓN:

NOMBRE DE LA FUENTE Y RIESGO DE CONFUSIÓN.

Cuidado con utilizar el “verdadero” nombre de la fuente en el momento de dar formato en Flash.

La fuente Georgia Gras ilustra perfectamente este caso. En efecto, a pesar de que se trata de una variante de Georgia, su nombre real es sin embargo “Georgia”.
¿Dónde encontrar esa referencia? En el fichero TTF mismo, trás la indicación de la firma digital.

Un bemol

Aún no he podido encontrar la razón exacta pero parece que un intervalo es a veces necesario para asegurar la disponibilidad de la fuente en la librería.

Para OSFlash pizza, la instanciación de la aplicación ha sido retardada con un setTimeout:

[as]
public function Main(target)
{
target.__proto__ = this.__proto__;
target.__constructor__ = Main;
this = target;

XrayLoader.loadConnector(“main_xray_v1.3.4.swf”, _level1);

setTimeout(this, “init”, 500);
}

private function init()
{
var pizza = Application( attachMovie(Application.id, “pizzaService”, 1) );
}
[/as]

Doy las gracias a erixtekila que me indicó cómo simplificar (a la mitad!) la configuracíon xml. A fin de cuentas, si leáis su artículo que trata del mismo tema, os daráis cuenta de que las técnicas son perfectamente identicas. Salvo alguna excepción, la de este artículo cabe en un solo xml.

Vínculos de interés en Libstack
http://www.get-url.net/blog/?47–pixlib-libstack-ou-le-multi-chargement
http://www.rosyflower.net/dotclear/index.php?2005/12/22/17-preloader-pixlib-
[/lang_es]

Application Architecture, AS2, MVC, Pixlib

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

12 Responses to “Open Source Flash Pizza for everyone ! follow-up – Shared Fonts”
  • Philippe says:

    Ah excellent – je n’avais pas trouvé l’article d’exixtekila très clair ;)

    Pour le “retard”, c’est pas étonnant – les librairies partagées sont un peu capricieuses et il leur faut un peu de temps pour fusionner…

    PS: ya pas une coquille au niveau de “deploy/Georgia Gras.swf” ?

  • Mike says:

    Merci pour la coquille Philippe ^^.

    Ton commentaire a par ailleurs attiré mon attention sur une source de confusion potentielle concernant le nom de la fonte et son référencement au moment du format.

    L’article à été mise à jour en conséquence.

    ++ :)

  • erixtekila says:

    @Philippe : Comment ça pas très clair ?!

    @Mike :
    Je pense pour rajouter de l’eau au moulin par rapport aux noms des polices.
    Je vais tacher d’être clair :D . hm hm.
    Dans swfmill, tu peux utiliser comme attribut de id et name.
    Il ont chacun leur utilité spécifique.
    - @id est utilisé comme référence d’exportation dans le swf final. Ce paramètre sera ensuite transformé en identifiant numérique unique par swfmill.
    Ce paramètre sert notamment aux champs texte :

    - @name : définit un nom utilisé pour TextFormat. Cet identifiant est conservé dans le swf produit.
    Il est d’ailleurs tout à fait possible d’importer les glyphes de même famille avec des graisses différentes en leur donnant un attribut name équivalent. C’est pratique lors de l’utilisation de setTextFormat avec les polices embarquées.

    Lorsqu’aucun @nom est donné à la police, swfmill utilisera le nom de la police native tel que Mike l’expliquait. Néanmoins, je vous conseille d’utiliser cette approche.
    Il est possible tout à fait d’utiliser une font en donnant un identifiant et un nom.

    PS : Il était prévu avec Daniel Fischer que je documente certains nouveaux aspects du vocabulaires simpple de swfmill, mais le temps me manque. Si certains sont intéressés, c’est simple. Allez faire un bon dans les sources eet admirez le travail de Dan. Plongez dans le répertoire xslt et lisez les commentaires. Tout un chacun comprenant les rudiments de xslt, s’y retrouvera aisement.

    Bon et puis, puisque je suis susceptible, j’arrête de vous expliquer tout cela et de blogger, du même coup tiens. VOILA.

  • Mike says:

    Merci pour toutes ces précisions erixtekila !

    Néanmoins… ;)

    Je comprends l’aspect pratique d’un seul identifiant pour tous les styles, ex:

    [xml]
    < ?xml version="1.0" encoding="iso-8859-1" ?>








    [/xml]

    mais quand tu dis:

    Il est d’ailleurs tout à fait possible d’importer les glyphes de même famille avec des graisses différentes en leur donnant un attribut name équivalent.
    C’est pratique lors de l’utilisation de setTextFormat avec les polices embarquées

    Je ne suis pas sûr de saisir ( on te charrie pas, c’est promis :) ).
    Tu parles de graisses, moi je comprends: light, medium, bold, extra-bold , black et extra-black.
    Si on s’entend bien, peux tu m’expliquer comment tu arrives à gérer des graisses ?

    Et puis faut pas arrêter de blogger pour si peu. ALLER…

  • erixtekila says:

    Je veux dire :
    http://fr.wikipedia.org/wiki/Graisse_(typographie)
    Donc on s’entend bien sur la même chose. Ouf, sauvé !

    Plus généralement, je parlais de famille de fonte.
    L’attribut name te permet de les regrouper sémantiquement pour les utiliser en actionscript ensuite.

  • Mike says:

    L’attribut name te permet de les regrouper sémantiquement

    Comme ça, j’ai compris :) .

    Mais sans doute n’étais-je pas très frais lors la lecture de ton commentaire car c’est bien l’idée que tu exprimes en parlant d’

    importer les glyphes de même famille avec des graisses différentes en leur donnant un attribut name équivalent.

    Voila ce qui se passe quand on poste à des heures indues ^^.

    Tu avais été très clair !

    ps: dis, je corrige le lien ou pas ? ça m’a fait rire en cliquant dessus ;)

  • Any chances of an english version of this article?

  • Mike says:

    Hi Marcelo,

    I’m about to do a rewrite (to include the great additions I had in the comments).
    The new article will come with a v2 DataGrid (CellRenderer) example and will be available in English :)

    Thanks for asking !

  • Great! :) Can´t wait for that!

  • Hey Mike, could you be so kind to send me a msg when the english version is available!?

    Cheers,

    Marcelo.

  • Mike says:

    Hi Marcelo,

    I thought you would understand that the corresponding english version of this article is already available here since a few weeks.

    Best,

Leave Comment

(required)

(required)


eXTReMe Tracker