PDA

Просмотр полной версии : Внедрение шрифта "выключает" отображение текста


nyctota
07.01.2006, 18:07
Дано:

1. серверный скрипт, отдающий по запросу некий XML в кодировке UTF-8;
2. флэшка, которая этот XML принимает и помещает в текстовое поле

Всё работает до тех пор, пока в текстовое поле не внедряется шрифт. После этого (в моем случае) из всех символов, которые посылаются, видны лишь символы "равно" ("="). :confused: Остальных как будто бы нет, хотя трейс показывает обратное.

Найти:

Способ заставить текстовое поле отображать данные при внедренном шрифте. Или доказать невозможность этого и определить причину такого поведения.

Antares
07.01.2006, 18:14
Запрос на дополнительные данные:

-- язык -- русский?
-- отдаешь через echo?
-- кодировку указываешь через header("ContentType: text/xml; charset=utf-8"); ?
-- или в объявлении XML: <?xml version="1.0" encoding="utf-8"?> ?

nyctota
07.01.2006, 19:46
=)

Доп. данные:

1. Язык -- русский. По крайней мере на данный момент только русский. Английский как всегда отображается корректно =/

2. Отдаю через echo

3. Кодировку не указывал =). После запроса доп. данных указал кодировку и в хедере и в самом XML -- не помогло.

Antares
07.01.2006, 20:01
У меня подозрение на шрифт. Там вообще русские символы есть? А то бывает и такое.

nyctota
07.01.2006, 20:13
Ну, шрифт Arial Cyr, однако =)

Antares
07.01.2006, 20:33
Сделал у себя тестовый пример, что интересно: при включенной useCodepage отображает, причем указывай ты хедером кодировку utf-8, не указывай -- похеру.

Antares
07.01.2006, 20:33
Щас помучаем еще, вопрос действительно интересный.

nyctota
09.01.2006, 12:43
То есть, если давать флэшке данные в кодировке, отличной от Юникода (скажем win-1251), то всё работает даже при внедренном шрифте? Я не проверял, так как мне по-любому нужен Юникод. =/

nyctota
09.01.2006, 12:46
Люди! Кого-нибудь еще волнует эта проблема?

Я думал, этот случай довольно распространен -- неужели никто не делал подгрузку Юникода в текстовое поле с внедренным шрифтом? =/
Или все пользуются стандартными шрифтами?

silin
09.01.2006, 13:35
если грузить из файла, то все ОК,
может серверный скрипт чего мутит..?

nyctota
09.01.2006, 16:27
если грузить из файла, то все ОК,
может серверный скрипт чего мутит..?
У меня и из файла не получилось =/

Шрифт эмбеддил? =)

А насчет скрипта -- как я уже сказал, если не внедрять шрифт, то всё ОК.

silin
09.01.2006, 16:41
ну да
var x = new XML();
x.onLoad = function() {
_root.createTextField('_txt', 0, 0, 0, 0, 0);
_root._txt.autoSize = _root._txt.embedFonts = true;
_root._txt.text = this.toString();
_root._txt.setTextFormat(new TextFormat('f'));//f-шрифт в библиотеке
};
x.load('test.txt');

nyctota
09.01.2006, 17:28
ну да
var x = new XML();
x.onLoad = function() {
_root.createTextField('_txt', 0, 0, 0, 0, 0);
_root._txt.autoSize = _root._txt.embedFonts = true;
_root._txt.text = this.toString();
_root._txt.setTextFormat(new TextFormat('f'));//f-шрифт в библиотеке
};
x.load('test.txt');
Везёт =) Дай исходник, если не жалко, -- покручу-поверчу, может найду, в чем загвоздка.

silin
09.01.2006, 17:59
держи..

nyctota
09.01.2006, 18:46
держи..
Однако! Всё работает!

А ты пробовал создавать текстовое поле НЕ динамически и включать туда шрифт тоже НЕ динамически? У меня именно так.

Ну, так или иначе, выход найден

_root._txt.setTextFormat(new TextFormat('f')); //f-шрифт в библиотеке


Что ж, спасибо. Но все-таки хочется разобраться, почему так происходит.

silin
09.01.2006, 18:53
>>создавать текстовое поле НЕ динамически и включать туда шрифт тоже НЕ динамически
тож работает :rolleyes:

Antares
09.01.2006, 20:57
Ребята, а я дальше зашел. И забыл у наших PHP-программеров спросить... Если у Апача настройка кодировки одна, а выдавать надо в другой, причем iconv_set_encoding не спасает -- как быть? Тогда получается описанный выше маразм.

Ясное дело, что крутить надо серверную часть, но интересно:) Думаю, надо вопрос в руфлэш кинуть, тут разве что Силин приимет участие в беседе, а не просто отметится постом.

nyctota
10.01.2006, 13:19
Причем тут сервер-то, я не понимаю? =/
Если я подгружаю данные и не внедрил шрифт -- всё нормально, т.е. кодировка = Юникод. Просто внедрив символы шрифта, я никоим образом не могу повлиять на то, что происходит на сервере -- там всё по-старому -- а текст уже не отображается.

И, кажется, я нашел корень всех бед. Вобщем, текстовое поле имеет StyleSheet. Варианта два:

1. без StyleSheet'a всё работает, как показал Silin, в обоих случаях
2. если же подключать стили -- только, когда шрифт не внедрен

Я так понимаю, надо просто внедрить ВСЕ начертания и цвета шрифта, которые используются, для того, чтоб это заработало?

nyctota
10.01.2006, 13:30
Короче говоря, мой косяк! Каюсь. Во всем виноват CSS. Но, почему у Антареса не работало? Тоже, что ли подключал таблицы стилей? =)

silin
10.01.2006, 15:29
попробовал с CSS: все работает если в *.css указывать linkage_Id шрифта в библиотеке:
font-family: f;

KidsKilla
10.01.2006, 15:35
есть 2 ариала ариал кир и ариал юникод.
юзай 2й, т.к. в 1м русские буквы на другом месте.