Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Так как все таки встраивать шрифты? (http://www.flasher.ru/forum/showthread.php?t=134536)

dj_Kayot 03.01.2010 16:46

Так как все таки встраивать шрифты?
 
Добрый день читатели и отвечатели этого форума.
Я начинающий программер. на днях столкнулся с проблеммой добавления своих шрифтов в проэкт. Перелопатил весь поиск форума и поиск гугла. так ничего и не понял, только запутался. перепробовал все что предлагали - ничего не получилось.
1. пробовал через библиотеку. т.е. new Font ->linkage properties-> export for actionscript
результата ноль. +читал что это очень плохо и все дела...
2. пробовал [Embed... разными способами. хз толь не туда вставляю толи что то не так пишу - не высвечивается.
3. пробовал через текстовое поле(но если шрифта в библиотеке нет то кнопа ембед не появляется и возник вопрос почему это не через библиотеку???) - тоже ничего не вышло.
и везде пишут типа "так не правильно", а как правильно не пишет никто. :(

в общем я в отчаянии. напишите пожалуйста как для "барана":wacko:. как встраивать шрифты? по шагам? какие есть способы? и как ими пользоватся? спасибо. извините за повторение уже обсужденного вопроса.

Юзаю Abode Flash CS4

Alex Lexcuk 03.01.2010 20:03

так попробуйте
Код AS3:

package  
{
        import flash.display.*;
        import flash.text.*
        /**
        * ...
        * @author http://www.murmadillo.tut.su/
        */

        public class DocFontUse extends Sprite
        {
                        [Embed(source='ACADEMY.TTF', fontName='vampire_ttf')]
                        public static var Geisha_ttf:Class;
 
                        /*[Embed(source = 'C:/WINDOWS/Fonts/GARA.TTF', fontName = '_Garamond')]
                        public var _Garamond:Class;
                        */

                public function DocFontUse()
                {
 
                        //смотрим все фонты
                        //var allFonts:Array = Font.enumerateFonts(true);
                        //allFonts.sortOn("fontName", Array.CASEINSENSITIVE);
                        Font.registerFont(Geisha_ttf);
                        //смотрим ембеденные фонты
                        var embeddedFonts:Array = Font.enumerateFonts(false);
                        //embeddedFonts.sortOn("fontName", Array.CASEINSENSITIVE);
                        trace(embeddedFonts);
                        //trace показывает
                        //object Font],[object DocFontUse_Geisha_ttf]
 
 
                        var font:DocFontUse_Geisha_ttf = new DocFontUse_Geisha_ttf();
                        var txt_fmt:TextFormat=new TextFormat();
                        txt_fmt.font=font.fontName;
                        txt_fmt.size = 25;
                        var txt:TextField=new TextField();
                        txt.autoSize=TextFieldAutoSize.LEFT;
                        txt.defaultTextFormat=txt_fmt;
                        txt.embedFonts=true
                        txt.htmlText ='Меню      Reset';
                        txt.selectable = true;
                        txt.rotation = 45;
                        txt.x = 100;
                        txt.y = 100;
                        addChild(txt);
 
                }
 
        }
 
}


GFreemen 03.01.2010 23:08

добавляете ручками текстовое поле, в нем че-нить пишете необходимым шрифтом.
В свойствах этого текстового поля ставим динамик текст, а в характер эмбединг - выбираем необходимые для внедрения символы.
Далее в скрипте, для програмного текстового поля ставим этот шрифт и ембедФонтс=тру.

dj_Kayot 04.01.2010 01:37

Alex Lexcuk
На строке
Код AS3:

Font.registerFont(Geisha_ttf);

мне выдавало ошибку: попытка использовать не объявленный класс. и откуда берется DocFontUse_Geisha_ttf???

GFreemen пасиба, помог. тока еще один вопрос. шрифт большой затирается немного. можно полечить?

Wolsh 04.01.2010 16:29

Товарищ murmadillo слегка перемудрил как мне кажется. Я обычно вставляю так:
Код:

//// EMBED FONT FILE
[Embed(source='../../../../../../lib/obla.ttf', fontName='obla', mimeType='application/x-font-truetype')]
public var OblaFont:Class;

И далее использую просто имя -
Код:

_textFMT = new TextFormat();
_textFMT.font = "obla";
_textFMT.size = 22;


Alex Lexcuk 05.01.2010 00:22

Цитата:

Сообщение от dj_Kayot (Сообщение 876710)
Alex Lexcuk
На строке
Код AS3:

Font.registerFont(Geisha_ttf);

мне выдавало ошибку: попытка использовать не объявленный класс. и откуда берется DocFontUse_Geisha_ttf???

GFreemen пасиба, помог. тока еще один вопрос. шрифт большой затирается немного. можно полечить?

dj_Kayot, а вы можете просто во флеш cs4 сделать документ класс DocFontUse скачать с интернета какой-нибуть ttf шрифт и тупо скопипасть тот код,
что я дал и просто попробовать, если у вас Font.registerFont(Geisha_ttf) выдал ошибку, то это просто катастрофа..., а DocFontUse_Geisha_ttf берется, как я уже и писал
Код AS3:

                        //смотрим ембеденные шрифты
                        var embeddedFonts:Array = Font.enumerateFonts(false);
                        //embeddedFonts.sortOn("fontName", Array.CASEINSENSITIVE);
                        trace(embeddedFonts);
                        //trace показывает
                        //object Font],[object DocFontUse_Geisha_ttf]

его показывает trace, если мой компилятор так встраивает шрифты, то что я могу.

Snarkus 08.08.2013 13:49

Решено!
 
Специально зарегистрировался чтобы поделиться находкой с сообществом.
После долгих мытарств найдено на просторах англицких форумов следующее решение:
Код AS3:

[Embed(source="SomeFont.ttf", fontName="sfont", embedAsCFF="false")]
public var someFont:Class;

и далее все как в мануалах :)
Судя по всему, глюк чисто FlashDevelop, его версия компилятора "ду сомфинг рон" :).
Этот false "правит" баг в FlashDevelop, после этого все работает!
Спасибо flasher.ru и лично mooncar за быстрое решение проблемы с публикацией поста!

Wolsh 08.08.2013 19:17

Три года назад не было никакого CFF.
И никакого глюка, никакого бага в FD нет. Формат CFF появился вместе с TLF и FTE, а вместе с ним и обязательная опция в [Embed] для компилятора.

Snarkus 08.08.2013 22:13

Простите, это все мой малый опыт разработки на AS3, на форуме решения не нашел, специально поднял ветку адобовского форума где нашел : тут пишут в частности:

"just add this in the embed tag and it works fine!
All the script was correct!
embedAsCFF="false"
[Embed(source="c:/windows/fonts/verdana.ttf", fontFamily="Verdana", embedAsCFF="false")]"
и сразу за ним ответ:
"Oh, I see. This is SDK issue. You didn't have to do that in versions prior to 4. I am using 3.5"

Да, не FD ошибка, тут я подзабыл, просто в ветке о нем упоминалось.

Что вижу то пою, мне помогло, в других вариациях не срабатывало, данного решения не нашел более нигде, возможно плохо искал, если это поможет кому-то, и то хорошо.

За наводку с TLF спасибо, прочел.

PS: дата публикации на адоб форуме Nov 15, 2010, что примерно 3 года назад и есть.

Wolsh 08.08.2013 22:29

Угу, а эта тема от 3 января. Почти год разницы. Но дело даже не в этом — три года это неслабый срок для флэш-плеера, а для форума и подавно. Сейчас про embedAsCFF каждый ребенок знает — уже "примерно 3 года" без этого аттрибута шрифт в проект вкомпиливается как CFF по-умолчанию, а TLF до сих пор пользуются единицы.
Не надо таких некропостингов впредь, хорошо? ))
И добро пожаловать.


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

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