Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-08-2010, 19:04   #1 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Question Antialiasing von Systemschriften mit der FTE?!

Ich baue gerade einen XML-gefütterten Header mit animierter Schrift, die geglättet dargestellt werden muss, um nicht zu ruckeln. Dummerweise soll darin u.a. chinesischer Text dargestellt werden. Wenn ich den chinesischen Teil der "Arial Unicode" einbette, wächst die SWF jedoch auf indiskutable 6,6 MB. Deshalb versuche ich jetzt das Problem mit einer Systemschrift zu lösen.

Nun bin ich auf diesen Beitrag hier gestoßen, der behauptet, dass mit Hilfe der FlashTextEngine seit FlashPlayer 10 auch Systemschriften geglättet dargestellt werden können.

Also habe ich mich mit Hilfe dieses Artikels mal in das Thema eingearbeitet, schaffe es aber leider nicht, dass den Text geglättet dargestellen zu lassen.

Hier der zugehörige Code:
PHP-Code:
        static public function createTextstr:Stringcolor:uint ):TextLine {
            
            var 
fontDescription:FontDescription = new FontDescription("_sans""bold");
            
fontDescription.renderingMode RenderingMode.NORMAL;
            
fontDescription.fontLookup FontLookup.DEVICE;
            
            var 
format:ElementFormat = new ElementFormat(fontDescription14color); 
            var 
textElement:TextElement = new TextElement(strformat); 
            var 
textBlock:TextBlock = new TextBlock(textElement); 
            
textBlock.content textElement;
            
            var 
textLine:TextLine textBlock.createTextLine(null300);             
            
            return 
textLine;
        } 
Ist es Generell möglich Systemschriften zu glätten (wenn ja wie?) oder ist das ganze ein Gerücht?

Schon vorab vielen Dank für Eure Hilfe!

P.S.: Ich hab für chinesisch diese folgende Unicode-Range gefunden: 4E00-9FFF. Gibt es ggf. einen kleineren Satz, der für vereinfachtes Chinesisch ausreicht?
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 13-08-2010, 10:21   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
*ThreadNachObenHol* Ist wirklich noch nie jemand auf dieses Problem gestoßen?

Mir leuchtet es generell nicht ganz ein, warum Flash eingebettete Schriften so anders behandelt als auf dem Clientsystem installierte. Die Datenbasis ist schließlich in beiden Fällen dieselbe (eben eine PS, TT oder OpenType-Schrift). Es müßten also alle nötigen Informationen zur Verfügung stehen...

Oder ist die transcodierung der Schriften ins SWF-interne Format so aufwändig, das sie nicht on-the-fly ausgeführt werden könnte?
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 16-08-2010, 10:56   #3 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
*ThreadNochmalNachObenHol* Ich kann mir irgendwie nicht vorstellen, dass ich der Einzige bin, der sich bisher mit diesem Problem beschäftigen musste?!

Mir würde es auch weiterhelfen, wenn ...
  • ...mir jemand sagt, dass es definitiv nicht geht, Sytemschriften zu glätten?!
  • ...jemand eine andere Lösung weiß, wie man chinesische Zeichen bei vertretbarer Dateigröße für dynamischen Text integriert?
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 16-08-2010, 13:51   #4 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.496
oh hi martin,

danke fürs hochholen. der wär mir durchgewitscht. ich hab das noch nicht gemacht und komm heut auch noch nicht dazu, aber das sieht echt interessant aus. und das beispiel bei insideRIA beweist ja eigentlich, dass es geht ...

ich gehs die tage mal durch und meld mich wieder. bis denne.

mfg

sx
__________________

flintfabrik.de
shin10 ist offline   Mit Zitat antworten
Alt 20-08-2010, 10:46   #5 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.496
hi,

da bin ich wieder. wahrscheinlich hast du das kleine geheimnis schon raus. Y!! aber mal wieder echt nett, dass sie das nirgends dazuschreiben

PHP-Code:
function createTextstr:Stringcolor:uint ):TextLine
{

    var 
fontDescription:FontDescription = new FontDescription("_sans","bold");
    
fontDescription.renderingMode RenderingMode.NORMAL;
    
fontDescription.fontLookup FontLookup.DEVICE;

    var 
format:ElementFormat = new ElementFormat(fontDescription,14,color);
    var 
textElement:TextElement = new TextElement(str,format);
    var 
textBlock:TextBlock = new TextBlock(textElement);
    
textBlock.content textElement;

    var 
textLine:TextLine textBlock.createTextLine(null,300);

    return 
textLine;
}

addChild(createText("Bazinga!"0));
12;//<< da liegt der hase im pfeffer!

var bmpd:BitmapData = new BitmapData(200,200,true,0);
var 
bmp:Bitmap = new Bitmap(bmpd);
bmp.200;
addChild(bmp);
bmpd.draw(stage, new Matrix(100100));
bmp.scaleX 5;
bmp.scaleY 5
aber die gute nachricht: dein code hat immer funktioniert.

mfg

sx

EDIT: geil. danke!

editEDIT: allerdings merk ich gerade, dass er auch glättet, wenn ich ein normales textfeld beim antialiasing auf devicefont stell
bin ich jetzt deppert??
__________________

flintfabrik.de

Geändert von shin10 (20-08-2010 um 10:54 Uhr)
shin10 ist offline   Mit Zitat antworten
Alt 20-08-2010, 11:12   #6 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Hi shin10!

Cool, dass Du Dich nochmal mit meinem Problem beschäftigt hast. Allerdings ist mir nicht so ganz klar, was Du z.B. mit diesem Code bewirkst:
PHP-Code:
12;//<< da liegt der hase im pfeffer! 
Wäre schön, wenn Du das etwas erläutern könntest. Das BmpData verwendest Du ja nur um das AntiAliasing zu vergrößern?!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (20-08-2010 um 11:26 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 20-08-2010, 11:19   #7 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Auch ich hab da mittlerweile etwas weitergeforscht aber noch keine Zeit gefunden das hier zusammen zu schreiben - Sorry.

Ich habe also bei Adobe diesen Thread gefunden, dessen wohl wichtigster Satz der hier ist:
Zitat:
Zitat von Jeff Mott | Flash Platform Engineering
Device fonts not only reside on the local system, they are rendered by the OS and not by the player. The player does not currently have the capability to render them internally. Obviously nothing is impossible, and this capability may be added to a future player.
Systemfonts werden also in der FTE entsprechend der Betriebssystemeinstellungen geglättet. Dieses AntiAliasing hat also nichts mit den bekannten AntiAliasingModes NORMAL oder ADVANCED zu tun

Und gerade das ist in meinem Fall das Problem. Ich hätte die normale Flash-Schriftenglättung gebraucht, um eine flüssige Animation zu erzeugen.

Darum habe ich mir folgenden Workaraound ausgedacht: Ich zeichne den un- bzw. falschgeglätten Text leicht vergrößert in ein BitmapData und ersetze ihn dann durch ein entsprechend wieder herunterskaliertes Bitmap. Wie im Ergebnis zu sehen, ist das Ergebnis ist zwar nicht ideal, garantiert aber eine halbwegs ruhige Bewegung.

Hier ist der zugehörige Code, der grundsätzlich mit jedem DisplayObject funktionieren sollte, dass ruckelt, weil es sich an Pixeln ausrichtet (z.B. DropShadow-Filter):
PHP-Code:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.PixelSnapping;

static public function 
toSmoothBitmapdob:DisplayObjectreplace:Boolean falsescale:Number 1.1 ):Bitmap {
    
    var 
rect:Rectangle dob.getBounds(dob);        
    var 
bmpData:BitmapData = new BitmapData(rect.width*scalerect.height*scaletrue0);
    
bmpData.draw(dob, new Matrix(scale00scale, -rect.x, -rect.y));
    
    var 
bmp:Bitmap = new Bitmap(bmpDataPixelSnapping.NEVERtrue);

    var 
pob:DisplayObjectContainer dob.parent;    
    if (
replace && pob) {
        
pob.addChildAt(bmppob.getChildIndex(dob) );
        
bmp.dob.rect.x;
        
bmp.dob.rect.y;
        
bmp.alpha dob.alpha;
        
bmp.scaleX scale;
        
bmp.scaleY scale;                
        
pob.removeChild(dob);
    } else {
        
bmp.scaleX bmp.scaleY scale;
    }
    
    return 
bmp;

__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (20-08-2010 um 11:29 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 20-08-2010, 12:05   #8 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.496
Zitat:
Wäre schön, wenn Du das etwas erläutern könntest. Das BmpData verwendest Du ja nur um das AntiAliasing anzuzeigen?!
ja, das bitmap war nur um zu schaun ob es funktioniert. die sache mit dem y war, dass ich mich erstmal wahnsinnig gewundert hab, dass der code auf der von dir angeführten seite bei mir "gar nichts" bewirkt hat. tatsächlich liegt scheinbar die textzeile, wenn sie auf y=0 liegt, über dem bühnenrand und ich hab nur nicht gesehen, dass text erzeugt wird. also hab ich kurzerhand die ganze bühne runtergeschoben.

wenn ich dich jetzt aber so hör war das wohl weniger dein problem als meins. wär bei dir wohl auch zu einfach gewesen. da scheuer ich mir doch gleich eine
dass das antialiasing aber betriebssystemabhängig ist und so für animation nichts als rotz ist, hatte ich noch gar nicht geschnallt. wirklich schade.

deine lösung sieht aber doch ganz gut aus. gerade bei so langsamen bewegungen wirds in flash ja seltenst besser, als das was ich da seh. und das ohne einbettung. wer will da meckern

mfg

sx

edit: die großen kreise sind noch ganz leicht angeschnitten, seh ich gerade...
__________________

flintfabrik.de

Geändert von shin10 (20-08-2010 um 12:07 Uhr)
shin10 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
antialias, fte, systemschrift, text, unicode

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Systemschriften auslesen und einbetten mboesken ActionScript 2 3 06-03-2008 16:43
Alert Komponente Problem mit Systemschriften waldziu Komponenten und SmartClips 0 05-03-2005 14:02
Systemschriften nicht bei Scrollen?! KaroAS Flash 4 und Flash 5 1 28-01-2004 11:45
systemschriften - gleich hol ich die Axt floyd_st Flash 4 und Flash 5 4 18-08-2002 12:30
Systemschriften?? casio Flash 4 und Flash 5 6 19-02-2002 12:52


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele