Question

I have a dynamic textfield which uses html text loaded form an XML file:

XML:

<someText><![CDATA[I am <i>some</i> text.]]></someText>

As you can see, this uses regular and italic. I have embedded my font in all it's varieties, every single glyph, but the italic text isn't showing. My AS3:

Font var: private var regularFont:Font = new myFontRegular();

myFontRegular is embedded using the embedding dialogue, but is set to regular, not italic.

Textfield formatting: bodyFormat.font = regularFont.fontName;

To set up the textfield:

bodyField.embedFonts = true;
bodyField.defaultTextFormat = bodyFormat;
bodyField.multiline = true;
bodyField.wordWrap = true;
bodyField.antiAliasType = "advanced";
bodyField.selectable = false;

I then set the textfield to htmlText and give it content:

bodyField.htmlText = pageBody;

pageBody is a var that is fed from the XML.

OK, so that's set up but italic text doesn't show, which I guess is because the embedded font is set to regular, not italic. So how can I use italic half way through a sentence for example? I've Googled and tried various methods to embed the font directly in code, same problem.

This has worked fine for me before, I don't understand what is wrong with this. If I need to post more, please let me know.

Thanks.

Was it helpful?

Solution

it is better to use proper setup of the embedded font, you should use the familyName to give a name of the font famiy set (it will be the same for italic, bold and normal) like below:

    [Embed(source="asset/arial.ttf",
        fontFamily = "Arial",
        unicodeRange = "U+0009,    U+00A9,U+00AE,U+00B0,U+00B7,U+00A3,U+00A7,    U+0021-U+002F,    U+003A-U+0040,     U+005B-U+0060,      U+007B-U+007D,       U+00A0,      U+00B4,       U+0030-U+0039,      U+0041-U+005A,      U+0061-U+007A,     U+00B4,U+2032,U+2033,U+2019,U+2013, U+00E9,U+00C9, U+2022, U+2026",
        mimeType="application/x-font-truetype",
        embedAsCFF="false"
        )]
    private var arialImported:Class;
    [Embed(source="asset/arialbd.ttf",
        fontFamily = "Arial",
        fontWeight = "bold",
        unicodeRange = "U+0009,    U+00A9,U+00AE,U+00B0,U+00B7,U+00A3,U+00A7,    U+0021-U+002F,    U+003A-U+0040,     U+005B-U+0060,      U+007B-U+007D,       U+00A0,      U+00B4,       U+0030-U+0039,      U+0041-U+005A,      U+0061-U+007A,     U+00B4,U+2032,U+2033,U+2019,U+2013, U+00E9,U+00C9, U+2022",
        mimeType="application/x-font-truetype",
        embedAsCFF="false"
        )]
    private var arialBoldImported:Class

then it should work e.g. bodyFormat.font = "myFontFamilyName";, but I feel that also you need to have stylesheet object applied and wrap everything (content) with P tag

var m_oStylesheet = new StyleSheet();
m_oStylesheet.parseCSS("P{font-family:myFontFamilyName; }");
bodyField.styleSheet = m_oStylesheet;

You may also look at this entry about StyleSheet

best regards

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top