Работая над проектом Рулимоны (русскоязычный клон нашего проекта DrivingKids), я наткнулся на жесткий баг флэша, из-за которого пришлось потратить в общей сложности 6 часов напряженной работы, чтбы просто понять, кто виноват и что делать. Спешу поделиться опытом. Понятно, что AS2 и Flash Player 9 уже не особо актуальны, т.к. можно нынче писать на AS3 под 10, а теперь и под 11 плейер. Но ведь есть еще legacy-проекты, в которых используется AS2 и 9-й Flash-плейер.

В один прекрасный день в issue tracker на меня упала задача вида "Пропали некоторые надписи в GUI".
Полез разбираться и наткнулся на проблему: реально, пропала часть строк в диалогах. Сразу появилась злая мысль: "опять что-то напортачили в языковых XML-файлах". Но логи оказались чистыми, все загружалось, находилось и прописывалось в текстовые поля.

Ладно. Идем дальше.
Запускаем копию на локальной машине и начинаем ковырять. По прошествии некоторого времени подтверждается мысль: не виден один из шрифтов. Здесь нужно объяснить, как в проекте используются шрифты.
Все шрифты хранятся в одном внешнем файле и импортируются во все модули проекта (в т.ч. и в главный файл приложения). В этих эпических граблях оказались замешаны три шрифта: Bold, Light и Italic. Специфика работы Flash до версии CS4 (Player 10) со шрифтами такова, что Flash не различал поддержку различных начертаний самими шрифтами, а делал жирный и наклонный варианты сам. Это привело к необходимости использования трех вариантов одного и того же шрифта в шареной библиотеке этих шрифтов. Так вот, все эти три шрифта - это вариации Arial Narrow (обычный, жирный и жирный наклонный).

При компиляции под Flash Player 8 проблема выражалась в том, что вариация шрифта Light просто не отображалась. Все остальное работало нормально. Компиляция приложения (и различные варианты компиляции шареных библиотек под Flash Player 9) приводили к страшным глюкам, поэтому я сделал один простой вывод: все файлы должны быть скомпилированы строго под одну версию плеера. Либо 8, либо 9.

Надо двигаться вперед, поэтому решил все скомпилять под девятку. Под девятым плеером глюк носил другой характер. В среде Flash все работало без проблем, а на сайте раз на раз (зависимость или систему установить не смог) просто пропадали все шрифты (ничего не отображалось).

В общем, я долго ковырял библиотеку символов флэшки, отсеивал, тестировал и локализовал-таки баг. В итоге оказалось все нереально тупо. Flash глючил из-за того, что в одной шареной библиотеке использовался шрифт Arial Narrow для статического текста (это даже не TextField, а просто Static Text в одном из мувиклипов). Ну не нужен мне там был shared font! Просто надо было написать одну строчку, да и то, она была чисто техническая и отображается только в случае ошибки.

Достаточно было просто сконвертировать этот Static Text в кривые или заменить шрифт Arial Narrow на любой другой, как тут же проблема исчезла!

Каким-то образом у флэша этот Arial Narrow вызывал несварение совместно с Arial Narrow, импортируемым из вешнего файла со шрифтами, вкупе с несколькими подключаемыми шареными библиотеками, которые также используют этот же шареный шрифт.

Вывод: если у вас есть легаси-проект на AS2/Flash8/9, и там начались грабли со шрифтами в шаренных библиотеках, постарайтсь использовать везде одни и те же шрифты из внешних файлов, либо воспользуйтесь чем-то вроде FontLoader/FontManager. К слову, есть версия и для AS3.