PDA

Просмотр полной версии : При вставке как htmlText неразрывный пробел преобразуется в обычный - как победить?


mikhailk
10.02.2014, 12:15
Столкнулся вот с таким поведением. Если вставить в текстовое поле как htmlText строку с кодом неразрывного пробела, то он превращается в итоге в пробел обычный. Т.е., остальные сущности остаются в том же виде, а код пробела улетает. По определенным причинам мне нужно, чтобы он остался. Какие идеи?


var str:String = '<br  />';
trace(str);
tf.htmlText = str;
trace(tf.htmlText);



<br  />
<TEXTFORMAT LEADING="4"><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="16" COLOR="#FFFFFF" LETTERSPACING="0" KERNING="0">&lt;br /&gt;</FONT></P></TEXTFORMAT>

Wolsh
10.02.2014, 12:31
а если заменить на U+00A0

mikhailk
10.02.2014, 13:02
Да, это помогло. Он тоже в итоге выглядит как пробел (в хтмл-коде), но по крайней мере он не сжимается.

Добавлено через 23 минуты
Увы, помогло не везде...

alatar
10.02.2014, 14:23
&nbsp; не поддерживается в TextField
Flash Player и AIR поддерживают следующие HTML-сущности (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/text/TextField.html#htmlText):
Сущность Описание
&lt; < (знак меньше)
&gt; > (знак больше)
&amp; & (ampersand)
&quot; " (двойные кавычки)
&apos; ' (апостроф, одинарная кавычка)

mikhailk
10.02.2014, 14:34
&nbsp; не поддерживается в TextField

Это в доках я видел.

В принципе, в одном месте вариант с юникодным пробелом U+00A0 у меня прокатил. Но в другом месте (другой шрифт) пробелы все равно сжались.

Т.е., я не бьюсь именно за &nbsp; в коде. Мне нужен железобетонный пробел.

Wolsh
10.02.2014, 18:33
Шрифт это только картинка. Может, дело в наличии самого глифа с этим кодом. Может, нет его в шрифте, а может, не внедрили если шрифт embed?

alatar
10.02.2014, 18:41
Мне нужен железобетонный пробел.
Так вам нужен пробел (http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B1%D0%B5%D0%BB) фиксированной длины (em space / en space) или неразрывный?

mikhailk
10.02.2014, 22:10
По факту мне нужно вставить в текст несколько пробелов, которые бы не сжались. Т.е., да, фиксированной длины. Но при этом они должны образовывать неразрывную конструкцию, чтобы если они все не помещаются в текущей строке, то все вместе улетели бы на следующую.

in4core
10.02.2014, 22:13
mikhailk через CDATA и не надо никаких спец символов выдумывать. работают все и пробелы и забелы, и слешЭры...

mikhailk
10.02.2014, 22:28
через CDATA и не надо никаких спец символов выдумывать

Что-то у меня не работает...


var str:String = 'bukv<![CDATA[ ]]>a!';
trace(str);
tf.htmlText = str;
trace(tf.htmlText);



bukv<![CDATA[ ]]>a!
<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="Calibri" SIZE="20" COLOR="#000000" LETTERSPACING="0" KERNING="0">bukva!</FONT></P></TEXTFORMAT>