Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Внедрение шрифта "выключает" отображение текста (http://www.flasher.ru/forum/showthread.php?t=73941)

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
если грузить из файла, то все ОК,
может серверный скрипт чего мутит..?

У меня и из файла не получилось =/

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

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

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

Цитата:

Сообщение от silin
ну да
Код:

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

Вложений: 1
держи..

nyctota 09.01.2006 18:46

Цитата:

Сообщение от silin
держи..

Однако! Всё работает!

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

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

_root._txt.setTextFormat(new TextFormat('f')); //f-шрифт в библиотеке
Что ж, спасибо. Но все-таки хочется разобраться, почему так происходит.

silin 09.01.2006 18:53

Вложений: 1
>>создавать текстовое поле НЕ динамически и включать туда шрифт тоже НЕ динамически
тож работает :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м русские буквы на другом месте.


Часовой пояс GMT +4, время: 17:06.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.