Вопрос

Я использую внешний 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).

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top