Dynamic textField kerning in Flash8

// febbraio 7th, 2008 // Sviluppo e tips

UPDATE: Click here for the english version (by Bob Walton)

Stiamo lavorando alla nuova versione del sito web aziendale (tempo permettendo) e come è giusto ci si pone sempre degli obiettivo complessi, delle soluzioni nuove e complicate.
All’atto del progetto grafico in Photoshop alcuni campi di testo sono stati pensati con il font Adobe Garamond Pro con un corpo molto grande e un kerning di -50 che in Flash si traduce in -3.

Andando a realizzare il codice Flash si è verificato il seguente problema: create un textField sullo stage con font e kerning impostati a piacere e dategli come instance name my_text

Poi via actionscipt settate:

my_text.text = "Hello world!"

Come noterete non viene visualizzato il kerning settato nel pannello delle proprietà del textField (vedi prima riga della figura sottostante).

Dynamic textField kerning in Flash8

Leggendo la guida di Flash (F1) ci viene consigliato di incorporare il font in libreria e utilizzare TextFormat… ma assolutamente non ne vuole sapere di funzionare.
Una soluzione (ridicola) c’è ed è stata frutto di prove e, diciamolo, fortuna. Si tratta di creare un textField dinamico identico a quello che ci servirà nella nostra applicazione, in una zona non visibile dello stage (ad esempio a x:-2000 y:-2000) con qualcosa scritto dentro (ad esempio “Test”) e gli diamo con instance name tf_test. A questo punto scriviamo la seguente riga di codice:

var fmt:TextFormat = tf_test.getTextFormat();

Poi sullo stage mettiamo un textField con instance name my_text con le stesse proprietà di quello di test e scriviamo:

my_text.setTextFormat(fmt);

my_text.setNewTextFormat(fmt);

my_text.text = "Hello World!";

Il risultato è quello che vedete nella seconda riga della figura precedente.
Se scoprite altre soluzioni interessanti fatemi sapere.

One Response to “Dynamic textField kerning in Flash8”

  1. Albo scrive:

    Ciao, incorporando la font (sempre Garamond linkage = Font 1) ho visto che il kerning funziona però. Guarda qui direttamente dall’F1:

    var fmt1:TextFormat = new TextFormat();
    fmt1.font = “Font 1″;
    fmt1.size = 50;
    fmt1.color = 0xFF0000;
    fmt1.kerning = false;

    var fmt2:TextFormat = new TextFormat();
    fmt2.font = “Font 1″;
    fmt2.size = 50;
    fmt2.color = 0×0000FF;
    fmt2.kerning = true;

    this.createTextField(“tf1″, this.getNextHighestDepth(), 10, 10, 400, 100);
    tf1.embedFonts = true;
    tf1.text = “Text 7AVA-7AVA”;
    tf1.setTextFormat(fmt1);

    this.createTextField(“tf2″, this.getNextHighestDepth(), 10, 40, 400, 100);
    tf2.embedFonts = true;
    tf2.text = tf1.text;
    tf2.setTextFormat(fmt2);

Leave a Reply