Skip to main content
Participant
December 11, 2013
Question

Less and less fonts displayed correctly on Android

  • December 11, 2013
  • 3 replies
  • 2159 views

I did some comprehensive testing on various Android Versions regarding Asian/Arabic Fonts.

It seems that less and less fonts are displayed correctly towards the newer Android Versions. I made tests for spark label, textarea and button. You can see the results here:


I marked with green and red, correct and wrong display of the text. The problem with Arabic is the text direction.

Below is the code used. Compiled with Flex 4.11 and Air 3.9. I played around with a few other SDK versions but basically with same result.

I think this needs urgent attention, especially as more and more updates for Android 4.3 and 4.4 will come out soon.

I will post the same at the Apache Flex forums as I am not sure who is responsible for fixing this.

<?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" applicationDPI="160" xmlns:local="*">

        <s:VGroup width="100%" height="100%" paddingTop="20" paddingRight="20" paddingLeft="20">

                <s:Scroller height="100%" width="100%">

                        <s:VGroup width="100%" height="100%">

                                <s:Label width="100%" text="KOREAN" />

                                <s:TextArea  text="1 남자와 소년 남자와 소년" skinClass="spark.skins.mobile.TextAreaSkin" />

                                <s:Label text="2 남자와 소년 남자와 소년" />

                                <s:Button label="3 남자와 소년 남자와 소년" />

                               

                                <s:Label width="100%" text="JAPANESE" />

                                <s:TextArea  text="1 がアップデート後、文字が" skinClass="spark.skins.mobile.TextAreaSkin" />

                                <s:Label text="2 がアップデート後、文字が" />

                                <s:Button label="3 がアップデート後、文字が" />

                               

                                <s:Label width="100%" text="CHINESE" />

                                <s:TextArea  text="1 轉換為繁體字后會變成錯" skinClass="spark.skins.mobile.TextAreaSkin" />

                                <s:Label text="2 轉換為繁體字后會變成錯" />

                                <s:Button label="3 轉換為繁體字后會變成錯" />

                               

                                <s:Label width="100%" text="ARABIC" />

                                <s:TextArea  text="مرأة" skinClass="spark.skins.mobile.TextAreaSkin" />

                                <s:Label text="مرأة" />

                                <s:Button label="مرأة" />

                               

                        </s:VGroup>

                </s:Scroller>

        </s:VGroup>

</s:Application>


This topic has been closed for replies.

3 replies

Inspiring
December 12, 2013

I've also seen something similar, I don't know if it's related, but on a recent project an embedded font displayed correctly on all devices except for Samsung Galaxy S4, where it was showing a normal font instead. Didn't seem to be related to Android version tho, and since I don't have a device to test it myself, I don't rule out a problem on my side or that a workaround is possible, even if having the app to display correctly on all the other devices would indicate a problem from Adobe.

dsienko
Participating Frequently
January 22, 2014

I've seen the same problem in Android 4.3.    I use a custom webfont, but any word with certain glyphs, don't use the font and glyphs don't appear.   In some instances the the preceeding character is also missing.    Works perfectly in 4.2.  

Left 4.2           Right 4.3

Notice for the skirt word, ᶻ or  U+1dbb is missing and the font isn't displayed on the right (4.3).  Also Get dressed the first character is missing on the right  ƛ  or  U+019B.

Participant
December 12, 2013
Legend
December 11, 2013

The missing characters look a lot like missing glyphs, not sure about the mistaken glyphs in the first one. Safest is to embed the font you want for the different languages for the character ranges you want to display. The difference between TextArea and Button could be embedAsCFF - I think mobile ButtonSkin uses embedAsCFF = false where TextArea, Label etc. use embedAsCFF = true. So start by checking your font embed statements. It is irritating, I know, but I think you need to embed interface fonts twice - with embedAsCFF at both settings - or else create custom ButtonSkin that uses embedAsCFF = true for text display.

A caveat to that is that there must have been a reason why Adobe made the distinction in the first place, and I suspect the reason may well have been performance...

G