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" для подобных проблем.