domingo, 29 de novembro de 2009

Loading True Type fonts in Flash/Flex at runtime

UPDATE 06/01/2010
  • It doesn't use Tamarin ESC Compiler anymore.
  • You can download the source code here.
-------------------------------------------------

Currently there are two usual ways to use embedded fonts in Flash/Flex:
  • Embed the font in the application SWF.
  • Or generate SWF files with the fonts, and then load them at runtime.
But with some tricks, it's also possible to load True Type fonts in a Flash/Flex application at runtime.

Click here to open an experiment I've made that does that.

What are the advantages?
  • It's easy to use and share fonts between Flash/Flex applications.
  • RIAs like text processors, image editors and others, can use this technique to allow users to use their own fonts.
How it was done?
  1. The font file (.ttf) is loaded and parsed.
  2. The glyphs are converted and a SWF file is generated in memory.
  3. Using the class flash.display.Loader, the in-memory SWF is loaded, and the font is registered.
What I've used?
Em português:

Atualmente, há duas maneiras usuais de utilizar fontes embutidas em uma aplicação Flash/Flex:
  • Gerar o SWF da aplicação com a fonte embutida.
  • Gerar arquivos SWF para as fontes, e carregá-los dinamicamente na aplicação.
Mas com alguns truques, também é possível carregar fontes True Type no Flash/Flex em tempo de execução.

Clique aqui para abrir um experimento que desenvolvi que faz isso.

Quais as vantagens?
  • Maior facilidade na utilização de fontes compartilhadas em aplicações Flash/Flex.
  • RIAs como processadores de texto, editores de imagens e outros, poderão utilizar o carregamento de fontes True Type para permitir aos usuários a utilização de suas próprias fontes.
Como isso é feito?
  1. O arquivo da fonte (.ttf) é carregado e interpretado.
  2. Os caracteres da fonte são convertidos e um arquivo SWF é gerado na memória.
  3. Utilizando a classe flash.display.Loader é feito o carregamento desse SWF, e a fonte é registrada.
O que utilizei?