Question

Imaginez que vous créez une présentation qui sera traduite dans une douzaine de langues, y compris des langues avec des caractères non latins (le chinois, par exemple). Le guide de style de la marque du client indique que certaines polices sont acceptables pour certaines langues. Le contenu lui-même doit être externalisé, de sorte que le texte puisse être remplacé sans jamais ouvrir un fichier .fla, ni réenregistrer un graphique.

Nous parlons donc de TextField dynamiques, générés à partir de XML, avec la police remplacée par la police afin de s'adapter à la langue du visualiseur. nécessaire? Je recherche des solutions utilisant Flash uniquement, pas Flex .

Était-ce utile?

La solution 2

Je suis totalement déçu que personne ne le sache - bien. J'ai finalement trouvé quelqu'un qui avait écrit une petite classe pour gérer le processus de chargement des polices et qui m'a expliqué comment créer le fichier .swfs à charger:

Chargement de polices Flash AS3

J'espère que cela sera utile pour d'autres personnes - cela s'est avéré être la solution miracle à mes problèmes.

Autres conseils

C’est un peu fastidieux en flash, mais c’est tout à fait possible. Ce que vous devez faire, c'est "intégrer". la police à l’intérieur d’un fichier swf séparé, chargez-le à partir de votre application principale, puis enregistrez-le à l’intérieur de ce fichier. Cela vous permettra de charger les polices à l'exécution. Pour cela, vous devez spécifier la police par langue dans l'application ou dans le fichier dans lequel vous stockez les traductions, ce qui n'est peut-être pas parfait, mais l'intégration de toutes les polices dans votre application principale n'est pas non plus. Cela représenterait peut-être des centaines de ko de polices chargées sans raison.

Ce billet de blog présente un bon aperçu de ce que vous devez faire pour le faire fonctionner. Je l'ai fait moi aussi, donc si cela vous intéresse, je peux développer ce post avec quelques exemples plus tard.

Eh bien, vous allez avoir besoin de savoir quelle langue vous chargez. La détection automatique peut être assez difficile.

En supposant que vous connaissiez la langue du contenu, vous pouvez enregistrer les polices à utiliser au moment de l'exécution à l'aide de Font.registerFont () ; Avec cela, vous pouvez charger un fichier swf contenant une police, l'enregistrer et il sera disponible pour une utilisation future dans tous les champs de texte. print ("exemple de code");

[Embed(src="someFont.ttf", fontFamily="myFont", mimeType="application/x-font")]
private var fontClass:Class;

...

Font.registerFont(fontClass);

Notez que vous devrez compiler à l'aide du compilateur flex pour prendre en charge la balise incorporée.

Un police également utile. .hasGlyphs () , que vous pouvez utiliser pour vérifier si les caractères que vous utilisez sont disponibles dans des polices incorporées. Cela peut être utilisé pour revenir à une police système ou afficher un avertissement pour vous en tant que développeur (si vous avez oublié des caractères ou autre). Sous-classer TextField pour faire cette vérification automatiquement peut être une bonne idée.

Si cela doit être en ligne, vous devez penser à deux fois d’intégrer le chinois. L’incorporation de tous les caractères augmentera la taille du fichier beaucoup et, autant que je sache, il n’existe pas autant de polices chinoises complètes disponibles. La technique ci-dessus est bien sûr toujours utile pour de nombreuses autres langues.

Tout d’abord, assurez-vous de définir les attentes afin que personne ne pense que vous utiliserez des polices incorporées dans des langues asiatiques telles que le chinois et le japonais. Sauf si vous envisagez de charger plusieurs mégaoctets de glyphes, vous utiliserez des polices de périphérique, un point final. En tant que tel, il est raisonnable d’avoir des directives sur la classe de police à utiliser - _sans , _serif , _typewriter ou leurs équivalents localisés - mais pas les directives sur la police en tant que telle.

Deuxièmement, dans le passé, mon approche a toujours été de convaincre les gens que, dans la plupart des cas, ils sont probablement mieux lotis avec les polices de périphérique. L'utilisation de polices de périphérique réduira votre temps de développement et vous évitera des bugs. Cela accélérera le chargement de votre contenu (sur le réseau) et, dans presque tous les cas, le rendu sera plus rapide. Souvent, ce sera aussi plus clairement lisible.

Les clients aiment exiger que tout leur texte soit en Garamond-Extra-Britannique ou autre, mais s’assurent de connaître les coûts. S'ils voient la lumière, vous vous épargnerez beaucoup de douleur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top