Встроенные шрифты во flash с тем же свойством FontName
-
05-07-2019 - |
Вопрос
Я использую внешний swf-файл, содержащий несколько классов шрифтов, для загрузки и регистрации шрифтов для моего flash-сайта во время выполнения.(экспортируется во Flash IDE панели библиотеки, затем регистрируется в скрипте frame)
В данном конкретном случае swf содержит несколько различных весов одного и того же семейства.например.шрифт римский, шрифт курсивный, шрифт светлый, шрифт жирный и т.д...
Шрифты, похоже, регистрируются нормально, но когда я пытаюсь использовать шрифты, некоторые свойства FontName этих шрифтов идентичны.Три отображаются как Roman, два как light и один - light sc...Поэтому я принялся искать какие-нибудь глупые ошибки в кодировании, но, к своему ужасу, ни одной не нашел.Правильные объекты шрифта загружались в правильном порядке.
После довольно продолжительного тестирования я проверил свою папку fonts (vista).Когда я открыл файл для Heavy, заголовок в программе просмотра шрифтов показывает Roman;заголовки в программе просмотра шрифтов соответствовали тому, что я получал во flash.Такое поведение, по-видимому, уникально для данного шрифта.
Поскольку FontName - это единственный известный мне способ присвоения шрифта текстовому полю, я в замешательстве относительно того, как я могу использовать этот прекрасный жирный шрифт для своих динамических заголовков!
Это шрифт типа 1
Кто-нибудь может предложить причину, решение или обходной путь?
Решение
Спасибо, я думаю, что вы правы на этот счет.
Однако я нашел способ встроить шрифт и задать название.
Прежде всего, я использовал CrossFont для преобразования шрифта postscript Type 1 в .otf
Используя функцию [embed()], доступную теперь в cs4, я смог использовать атрибут FontFamily для установки свойства FontName встроенного шрифта.
В приведенном ниже коде вы можете видеть, что я установил для имени значение "BlaaDeeBlaa", и текстовый формат примет его и отобразит встроенный шрифт.
[Embed(source="assets/FontFileName.otf",
fontFamily="BlaaDeeBlaa",
mimeType="application/x-font")]
var BlaaDeeBlaa:Class;
var CH:Font = new BlaaDeeBlaa();
var testTxt:TextField = new TextField();
testTxt.defaultTextFormat = new TextFormat("BlaaDeeBlaa",28,0x000000,true);
testTxt.embedFonts = true;
testTxt.text = Font.enumerateFonts(false)[0].fontName;
testTxt.autoSize = "left";
addChild(testTxt);
н.б.Только OpenType (.OTF) и Truetype (.TTF) могут быть встроены с помощью этого метода
Я познакомился с этой техникой благодаря Учебник Ли Бримелоуса на gotoandlearn
Другие советы
Похоже, это проблема шрифта, а не вашего программного обеспечения (Flash).
Если это бесплатный шрифт, вполне возможно, что автор семейства шрифтов использовал один шрифт в качестве базового и редактировал его копии для разных стилей лица. Возможно, они просто изменили имя файла и забыли изменить внутреннее имя.
Возможно, вы сможете как-нибудь отредактировать имена самостоятельно, но я не слишком уверен в этом.