четверг, 31 марта 2011 г.

Быстрое внедрение шрифтов [Embed]

Быстрое внедрение шрифтов [Embed]:

Уже ни раз писалось о встраивании шрифтов, поэтому я не буду описывать весь процесс а покажу лишь простой и удобный прием на примере кода.

package assets {
 import flash.display.Sprite;
 import flash.system.Security;
 import flash.text.Font;
 import flash.utils.describeType;
 
 public class FontsAsset extends Sprite {
  [Embed(source="../../../res/fonts/MyriadPro-Semibold.otf", mimeType="application/x-font-truetype", fontName="MyriadSemibold", unicodeRange="U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E,U+02C6,U+02DC,U+2013-U+2014,U+2018-U+201A,U+201C-U+201E,U+2020-U+2022,U+2026,U+2030,U+2039-U+203A,U+20AC,U+2122,U+0401,U+0410-U+044F", embedAsCFF="false")]
  // Uppercase [A..Z] ; Lowercase [a..z] ; Numerals [0..9] ; Punctuation [!@#%...] ; Basic Latin ; chars="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя"
  public static var MyriadSemibold : Class;
 
  [Embed(source="../../../res/fonts/MyriadPro-Regular.otf", mimeType="application/x-font-truetype", fontName="MyriadRegular", unicodeRange="U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E,U+02C6,U+02DC,U+2013-U+2014,U+2018-U+201A,U+201C-U+201E,U+2020-U+2022,U+2026,U+2030,U+2039-U+203A,U+20AC,U+2122,U+0401,U+0410-U+044F", embedAsCFF="false")]
  // Uppercase [A..Z] ; Lowercase [a..z] ; Numerals [0..9] ; Punctuation [!@#%...] ; Basic Latin ; chars="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя"
  public static var MyriadRegular : Class;
 
  public function FontsAsset() {
   Security.allowDomain("*");
   var xml : XML = describeType(this);
   for (var i : uint = 0; i < XMLList(xml["variable"]).length(); i++) {
    Font.registerFont(this[XMLList(xml["variable"])[i].@name]);
   }
  }
 }
}

Собственно встроить шрифтов можно сколько угодно, в коде ничего менять не придется кроме добавления строк описывающих само встраивание.
Чтобы шрифты отображались в самом приложении достаточно будет в конструкторе создать новый экземпляр FontsAsset.

new FontsAsset();

Конечно не стоит забывать о использовании textField.embedFonts.

[...]

Комментариев нет:

Отправить комментарий