6 Stimmen

Unterschiede bei der Darstellung von Flex-Schriftarten zwischen 4.1 und 4.5

Ich bin gerade dabei, eine Anwendung von Flex 4.1 auf 4.5 zu aktualisieren.

Wir haben festgestellt, dass die Schriftart Arial in den beiden Versionen unterschiedlich dargestellt wird, wenn sie in kleinen Größen verwendet wird.

Hier ist ein einfaches Beispiel für eine Anwendung:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        @namespace mx "library://ns.adobe.com/flex/mx";
        @font-face { 
            src: url("/assets/fonts/ARIAL.ttf"); 
            fontFamily: arial; 
            embedAsCFF: true; 
        }
        @font-face { 
            src: url("/assets/fonts/ARIALBD.ttf"); 
            fontFamily: arial; 
            embedAsCFF: true; 
            font-weight: bold;
        }
        global
        {
            font-family: arial;
        }
    </fx:Style>
    <s:Label text="Hello world" fontWeight="bold" x="20" y="20"  />
</s:Application>

Wenn Sie die 2 verschiedenen SDKs verwenden, sehen Sie hier ein Bild der Schriftart, die wir erhalten:

Example of font issues

Beachten Sie, dass die Schrift in 4.5 leicht gequetscht aussieht.

Was ist die Ursache dafür, und wie können wir das Problem lösen?

3voto

Jason Towne Punkte 7844

Meine beste Vermutung ist, dass es mit folgenden Dingen zusammenhängt die Änderungen, die vorgenommen wurden zur Unterstützung von Schriftarten auf Handheld-Geräten. Um das Problem zu beheben, müssen Sie möglicherweise ein wenig mit Ihren Stylesheet-Einstellungen herumspielen.

CSS-Medienabfragen
Sie können jetzt @media-Regeln in Ihren Stilvorlagen verwenden, um CSS-Regeln auf der Grundlage der Geräteklassifizierung DPI-Klassifizierung. Es gibt zwei Eigenschaften, nach denen Sie filtern können Derzeit sind das os-platform und Anwendung-dpi. Hier ist ein Beispiel für für das Filtern nach diesen Eigenschaften, um z. B. die Schriftart einer Schaltfläche festzulegen festzulegen (aus Adobes Prerelease Dokumentationen):

@media (os-platform: "Android") and (application-dpi: 240) {
s|Button {
     fontSize: 10;
}

1voto

André Felipe Punkte 344

Um dieses Problem vorübergehend zu beheben, geben Sie einfach die SWF-Version 10 in der flex-config.xml an

look for <swf-version>11</swf-version> and make that a 10

(the "target-player" tag remains as 10.2.0)

Mit dieser Konfiguration können Sie die neue API von 10.2 verwenden, aber ich vermute, dass die Hardware-Optimierungen fehlen werden (vielleicht keine StageVideo-Warnung...): Ich bin mir nicht sicher und habe es noch nicht getestet. Das Einzige, was ich getan habe, war zu überprüfen, ob die 10.2-spezifischen Methoden vorhanden sind, wie "requestSoftKeyboard")

Ich vermute, dieses Problem hat etwas mit dem neuen "Sub-Pixel Text Rendering" zu tun, das Adobe in der Version 10.2 vorgestellt hat. OR Vielleicht stellt der neue Player den Text nur anders dar.

Übrigens, diese Ausgabe ist wirklich hässlich, kleine Schriftarten werden verschwommen und mittelgroße Schriftarten werden merklich zerquetscht!

Jede real Fix, der es uns ermöglicht, SWF 11 anzusteuern, lassen Sie es uns bitte wissen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X