Использование встроенных шрифтов с TLFTextField - PullRequest
1 голос
/ 23 мая 2011

Я не знаю о вас, но мне очень тяжело разобраться с TLF.

Я использую Flash CS5.Я загрузил встроенный шрифт из внешнего SWF.Насколько я могу судить, он встроен правильно - он работал до того, как я переключился с классического TextField, - но мне нужно было переключиться, потому что мне нужна расширенная поддержка лигатуры.Мой код:

//setting up...
var text:TFLTextField = new TLFTextField();
text.width = 530;
text.height = 330;
text.type = TextFieldType.INPUT;
text.text = "Enter your own text here";
text.embedFonts = true;
addChild(text);

var format:TextLayoutFormat = new TextLayoutFormat();
format.fontSize = currentSize;
format.ligatureLevel = LigatureLevel.EXOTIC;

textFlow = text.textFlow;
textFlow.hostFormat = format;
textFlow.flowComposer.updateAllControllers();

//... later on, when the font is loaded:

private function fontLoadedHandler(e:Event):void {
var a:Array = Font.enumerateFonts();

for (var i:Number = 0; i < a.length; i++) {
trace(a[i]); //font name shows up just fine in the list...
}

var format:TextLayoutFormat = new TextLayoutFormat();
format.fontFamily = e.currentTarget.fontName;
format.fontLookup = FontLookup.EMBEDDED_CFF;
format.fontSize = currentSize;

textFlow.invalidateAllFormats();
textFlow.hostFormat = format;           

textFlow.flowComposer.updateAllControllers();
}

Когда я компилирую, по умолчанию используется Times New Roman.Я провел достаточное количество поисков в Google и обнаружил следующее: http://forums.adobe.com/message/3477909

У парня, похоже, есть проблема, похожая на мою, но я попробовал его решение и получил тот же отрицательный результат.

Любая помощь или ссылки или что-нибудь будет очень признателен!

Спасибо, Андрей

Редактировать: Просто попытался переключить шрифт на Arial,и он снова вернулся к Times New Roman.Так что, очевидно, проблема не в встраивании, а в том, как я назначаю шрифт - это может быть менее сложным, чем я думал. Поцарапайте, Arial работал после того, как я изменил embedFonts на false.Так что проблема заключается в том, что в конце концов встраивается.

Ответы [ 2 ]

3 голосов
/ 24 мая 2011

Хорошо, я точно знаю, в чем проблема сейчас. Я оставляю это, чтобы служить предупреждением для всех, кто чрезвычайно смущен TLF (много людей, которых я представляю).

Проблема возникает из-за проблем совместимости между форматами структуры, которые используют TLF и классический текст. По-видимому, TLF работает только с DF4, а Classic Text работает исключительно с DF3. Вы можете изменить эти настройки в диалоговом окне «Внедрить» на вкладке Actionscript (Flash CS5, не уверен насчет CS4).

Я не совсем уверен, есть ли обходной путь для этого - и я определенно собираюсь искать его, так как на данный момент мне нужно использовать как DF3, так и лигатуры - но я думаю, что этого достаточно для ответа на помогите кому-нибудь, кто столкнется с этой проблемой в будущем.

Андрей

2 голосов
/ 30 июня 2011

в случае, если у кого-то еще есть проблемы с DF3 и DF4 ... вы можете встроить оба сразу,

, например, "Helvetica" с DF4 и "Helvetica" с DF3 (важная часть заключается в том, что ониоба могут использовать одно и то же имя) ... тогда вы можете использовать шрифт "Helvetica" как со старыми текстовыми полями, так и с новыми текстовыми полями TLF.

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

это также относится к Flex.

...