FlashCS5 встроенный шрифт htmlText жирным шрифтом: как использовать TLFTextField и TextConverter?

Я очень и очень долго застрял в этом вопросе, который уже много раз поднимался и обсуждался. Задача все же проста, и на самом деле она не должна занимать безумное количество времени, которое у нее уже есть: выделить несколько слов в текстовом поле встроенным шрифтом (кроме Arial).

Кажется, что тег b работает только при использовании шрифта, в котором Flash, по-видимому, распознает жирный шрифт изначально (Arial и т. Д.), Но я использую шрифт, который имеет 4 веса: обычный, средний, жирный и черный. Мне нужен черный вес для жирных слов в теле текста среднего веса.

Я сделал буквально десятки тестов, все из которых не сработали, используя "классические" текстовые поля, встраивая шрифт один раз для каждого веса и используя htmlText: пробовал все возможные настройки в диалоге встраивания, с тегами b, span, em - с TextFormat (полужирный, шрифт) или StyleSheet (fontWeight, fontStyle, fontFamily)...

Вывод: НЕТ способа установить 2 разных встроенных шрифта в одном textField.

Эта проблема, безусловно, связана с внедрением шрифтов, что подтверждается следующими вспомогательными функциями отладки:

/**
 *  Debug helper: trace embedded fonts
 */
function trace_embedded_fonts():void
{
    var fonts:Array = Font.enumerateFonts();
    for ( var i:int = 0; i < fonts.length; i++ )
       trace( fonts[ i ].fontName + " - " + fonts[ i ].fontStyle + " - " + fonts[ i ].fontType );
}

/**
 *  Debug helper: Trace format
 */
function trace_classic_textfield_format( tf:TextField ):void
{
    trace( "trace_tlf_textfield_format( " + tf.name + " )" );
    trace( "  font = " + tf.getTextFormat().font );
}

вывод соответственно Maven Pro - regular - embedded (только эту единственную строку, хотя я встраивал 4 раза шрифт, по одному на вес - и да: я назвал их осторожно и попытался экспортировать для actioncript, в DF3 и в DF4, а также без экспорта), и font = Maven Pro на всех экземплярах textField на сцене, какой бы стиль не был применен к ним (также пробовал оба выбора встроенного шрифта - с * в конце - и системный шрифт).

Короче говоря, шрифт странный, но я ничего не могу с этим поделать.

Таким образом, мой вопрос относится к новой платформе Text Layout Framework (TLFTextField): можно ли с ее помощью достичь?

Текст загружается из XML и содержит простые теги, такие как em, b и т. Д., Но переписать их в потоковые теги нельзя.

Я пытался преобразование доступно через класс TextConverter - как var tf:TextFlow = TextConverter.importToFlow(hyperText, TextConverter.TEXT_FIELD_HTML_FORMAT); - ср. http://help.adobe.com/en_US/as3/dev/WS14c3067b34b57c6d4a97343b122ab36a52f-7ffb.html - но я не понимаю, как стилизовать каждый текст и как применять TF к уже добавленному тексту. вручную на сцене Flash?

1 ответ

Решение

Для информации, я отказался от использования TLFTextFields и обошел эту проблему, используя другой шрифт (тот, который Flash понимает жирным шрифтом) - мораль этой истории в том, что эта проблема в настоящее время является жестким ограничением для TextFields во Flash.

Еще одна вещь: полужирный текст не будет работать в текстовых полях, динамически добавляемых на сцене, если только там уже нет текстовых полей (в каждом стиле, который вам нужно использовать), присутствующих на сцене с самого начала (я оставил 2 текстовых поля с надписью "test" белого цвета на белый бг, чтобы скрыть их).

Примечание на будущее: сделайте видео а-ля "Angry Video Game Nerd" для подобных проблем.

Другие вопросы по тегам