Copy link to clipboard
Copied
Hi all,
My understanding is, that in Flash Player 9 and below TextField object was able to display any character from East Asian Languages via device fonts "_serif", "_sans" or "_typewriter".
In new FTE that came with Flash Player 10 TextElement object seems to use device font "_serif" only for Latin1 or Cyrillic character sets.
For example, FTE is using "Simsun" device (fallback) font to display Chinese language characters and for Thai language characters, FTE is using "Angsana New" device (fallback) font.
My question is:
Why TextElement from FTE does not use "_serif" device font to display characters for Thai or Chinese language like it did it older brother TextField from Flash Player 9 and below?
The problem with "SimSun" or "Angsana New" fonts that they are not present at Windows XP OS (English) at default install configuration setup.
I would put it simply - how older TextField component from Flash Player 9 is able to display Thai characters when there is no other device font present on Windows XP with Thai glyphs besides Tahoma and Microsoft Sans Serif fonts?
TextField relies on the GDI to do the layout. GDI supports mixed fonts: fonts that use OpenType layout for some scripts and non-OpenType layout for other scripts. Tahoma and Microsoft Sans Serif are mixed font.
FTE does not support such mixed fonts, or more precisely:
...Copy link to clipboard
Copied
_serif is a bit of a red herring in the discussion: it's just a shorthand for a list of font names. So your question can be rephrased: why are there fonts which are included in the _serif list but are not used for fallback in TLF.
We cannot afford to look inside every single font available on the system every time FP starts, so we have to use only fonts for which we have a priori knowledge. We also decided to restrict ourselves to fonts that we know are installed (at least in some cases) with the OS, to maximize the likelyhood of having the same behavior accross installations of the same OS.Of course, that's limited by the fact that different installations of the same OS are slightly different and by the differences between versions of the OS.
A minimal XP installation has simply no font that contains CJK ideographs.There is obviously nothing we can do about that. (If you get CJK ideographs displayed via TextField/_serif on a minimal XP install, please let us know).
Tahoma is unfortunately problematic to use for Thai. It looks like an OpenType font (has a GSUB table) but does not use OpenType for Thai (it implements the old-style interface through the PUA). We do support the old-style interface, but because of the presence of the GSUB table, we do not use that interface. That's why we did not include it in our list of fallback fonts for Thai.
If a user wants to display Thai or CJK ideographs, it seems reasonable to expect that they have installed the related XP components. At that point, our fallback should work satisfactorily.
Copy link to clipboard
Copied
Tahoma is unfortunately problematic to use for Thai.
What about Miscosoft Sans Serif font? Font details: www.microsoft.com/typography/fonts/font.aspx?FMID=1599
Probably it can be used for Thai font fallback feature in FTE on Windows?
On Windows XP Service Pack 2 I have pre-installed 1.42 version of this font.
_serif is a bit of a red herring in the discussion: it's just a shorthand for a list of font names
It would be useful to receive this list of font names for Windows XP for "_serif" shorthand, it is not documented AFAIK. And yes, plain old TextField within Flash Player 9 is capable to display CJK ideographs on minimal Windows XP English install.
My issue is possible situation when FTE font fallback is not able to display CJK ideographs or/and Thai language.
I thought about embeddding a "uber" Unicode font blogs.adobe.com/typblography/2008/08/unicode_font.html that has glyphs for both Thai language and CJK ideographs as well, but in the real world I found only 4 fonts (Arial Unicode MS, Ascender Uni, SunExtA and Code2000) that satisfy my requirements.
Most known and most wanted choice among those fonts is Arial Unicode MS, but the licensee owner request hefty $$$$ yearly fee to allow to embed this font into document (SWF file) distributed on the web.
Copy link to clipboard
Copied
What about Miscosoft Sans Serif font?
Same problem.
And yes, plain old TextField within Flash Player 9 is capable to display CJK ideographs on minimal Windows XP English install.
According to our measurements, a minimal XP SP3 install has those fonts (size in first column):
367112 arial.ttf
352224 arialbd.ttf
226748 arialbi.ttf
207808 ariali.ttf
118832 ariblk.ttf
127596 comic.ttf
111476 comicbd.ttf
303296 cour.ttf
312920 courbd.ttf
236148 courbi.ttf
245032 couri.ttf
79744 estre.ttf
135984 framd.ttf
152844 framdit.ttf
214936 gautami.ttf
155068 georgia.ttf
141032 georgiab.ttf
157388 georgiai.ttf
159736 georgiaz.ttf
137448 impact.ttf
121452 kartika.ttf
323980 l_10646.ttf
73292 latha.ttf
58740 lsans.ttf
54320 lsansd.ttf
60664 lsansdi.ttf
59636 lsansi.ttf
115068 lucon.ttf
143864 mangal.ttf
24124 marlett.ttf
461672 micross.ttf
40500 mvboli.ttf
489884 pala.ttf
434004 palab.ttf
344288 palabi.ttf
430800 palai.ttf
57348 raavi.ttf
234280 shruti.ttf
221676 sylfaen.ttf
69464 symbol.ttf
383804 tahoma.ttf
355680 tahomabd.ttf
409280 times.ttf
398372 timesbd.ttf
239692 timesbi.ttf
248368 timesi.ttf
134108 trebuc.ttf
123096 trebucbd.ttf
131188 trebucbi.ttf
139288 trebucit.ttf
148624 tunga.ttf
171792 verdana.ttf
137616 verdanab.ttf
155076 verdanai.ttf
154800 verdanaz.ttf
252820 vrinda.ttf
118752 webdings.ttf
81000 wingding.ttf
None of them is large enough to contain a useful set of ideographs. (I did not list the bitmap fonts, which FTE does not use, but they are also too small). Do you have something else on your machine?
Eric.
Copy link to clipboard
Copied
I agree on this font list, that is all fonts that are available on minimal Windows XP English install.
Copy link to clipboard
Copied
It would be useful to receive this list of font names for Windows XP for "_serif" shorthand,
I am told the list is simply "Times New Roman"; and:
sans: Arial
monospaced: Courier New
Eric.
Copy link to clipboard
Copied
I would put it simply - how older TextField component from Flash Player 9 is able to display Thai characters when there is no other device font present on Windows XP with Thai glyphs besides Tahoma and Microsoft Sans Serif fonts?
Here is screenshot (click on picture to scale) that illustrates that: older mx:Label component is always capable to display Thai characters regardless what fontFamily value is set to, while newer s:Label component renders Thai characters only if Tahoma or Microsoft Sans Serif font is explicitly set to fontFamily property.
Tested with FTE 1.0.595 build, Flex 4.0.0.14159 SDK:
Full code listing: gist.github.com/376687
Copy link to clipboard
Copied
I would put it simply - how older TextField component from Flash Player 9 is able to display Thai characters when there is no other device font present on Windows XP with Thai glyphs besides Tahoma and Microsoft Sans Serif fonts?
TextField relies on the GDI to do the layout. GDI supports mixed fonts: fonts that use OpenType layout for some scripts and non-OpenType layout for other scripts. Tahoma and Microsoft Sans Serif are mixed font.
FTE does not support such mixed fonts, or more precisely: if there is OpenType layout for any script, then we use OpenType layout for all the scripts. Our choice means that Tahoma and Microsoft Sans Serif cannot be used by FTE for Thai. We felt that the advantages of not dealing with mixed fonts outweighted the disadvantages. In particular, if the user of a system can read Thai, it is very likely that he will have installed the other Thai fonts.
Copy link to clipboard
Copied
Right, I see.
Is that correct to state that FTE does not support "mixed" fonts such as Tahoma and Microsoft Sans Serif only for font fallback device feature?
Because, if I set any of those two fonts explicitly to the fontFamily property of Spark Label, Thai characters in the text become all visible in Spark Label.
E.g.
<s:Label id="sparkLabel" fontFamily="Tahoma" fontSize="16" text="การประมาณวันที่ออกเดินทาง"> </s:Label>