Встроенные шрифты во флэш-памяти с тем же свойством fontName - PullRequest
1 голос
/ 05 мая 2009

Я использую внешний SWF-файл, содержащий несколько классов шрифтов, для загрузки и регистрации шрифтов для моего флэш-сайта во время выполнения. (экспортируется в библиотечную панель Flash IDE, затем регистрируется в рамочном скрипте)

В этом конкретном случае SWF содержит несколько различных весов одного и того же семейства. например. шрифт римский, шрифт курсивный, шрифт светлый, шрифт тяжелый и т. д. ...

Похоже, что шрифты регистрируются нормально, но когда я пытаюсь использовать шрифты, некоторые свойства fontName этих шрифтов идентичны. Три появляются как Роман, а два - как светлые, а один - как светлые ... Итак, я отправился на поиски глупых ошибок кодирования, но, к своему ужасу, я не нашел ни одной. Объекты правильного шрифта загружались в правильном порядке.

После небольшого тестирования я проверил папку со шрифтами (vista). Когда я открыл файл для Heavy, заголовок в средстве просмотра шрифтов показывает Roman; названия в средстве просмотра шрифтов соответствовали тому, что я получал во флэш-памяти. Такое поведение является уникальным для этого шрифта.

Поскольку fontName - единственный способ, которым я знаю, как назначить шрифт TextField, я озадачен тем, как я могу использовать этот прекрасный тяжелый шрифт для своих динамических заголовков!

Это шрифт типа 1

Кто-нибудь может предложить причину, решение или обходной путь?

Ответы [ 2 ]

3 голосов
/ 07 мая 2009

Спасибо, я думаю, что вы правы в этом.

Однако я нашел способ встроить шрифт и задать имя.

Прежде всего, я использовал CrossFont для преобразования шрифта postscript Type 1 в .otf

Используя функцию [embed ()], теперь доступную в cs4, я смог использовать атрибут fontFamily, чтобы установить свойство fontName встроенного шрифта.

В приведенном ниже коде вы видите, что я установил имя «BlaaDeeBlaa», и TextFormat примет его и отобразит встроенный шрифт.

[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);

n.b. Только OpenType (.OTF) и Truetype (.TTF) могут быть встроены с помощью этого метода

Я был задействован в этой технике Учебное пособие Ли Бримелоу в gotoandlearn

0 голосов
/ 07 мая 2009

Похоже, это проблема шрифта, а не вашего программного обеспечения (Flash).

Если это бесплатный шрифт, вполне возможно, что автор семейства шрифтов использовал один шрифт в качестве базового и редактировал его копии для разных стилей лица. Возможно, они просто изменили имя файла и забыли изменить внутреннее имя.

Возможно, вы сможете как-нибудь отредактировать имена самостоятельно, но я не слишком уверен в этом.

...