Can't draw text bold AND italic


#1

Hello Jules !

I'm trying on Windows XP with the last version of JUCE to write some text which is both bold and italic, but I have not found any way to make it work. I get plain text instead each time. Nevertheless, when I choose only the Font::bold, or the Font::italic attribute, they are considered and I get the expected result. I have tried several things like that :

// Everything here is working fine
void paint(Graphics &g)
{
    g.setFont (Font("Arial", 12, Font::bold));
    g.drawSingleLineText ("Sample Text", 0, 0);

    g.setFont (Font("Arial", 12, Font::italic)); 
    g.drawSingleLineText ("Sample Text", 0, 0);

    g.setFont (Font("Arial", 12, Font::plain).withTypefaceStyle("Bold"));
    g.drawSingleLineText ("Sample Text", 0, 0);

    g.setFont (Font("Arial", 12, Font::plain).withTypefaceStyle("Italic"));
    g.drawSingleLineText ("Sample Text", 0, 0);

}

// Everything here is not working as expected and rendered plain
void paint(Graphics &g)
{

    g.setFont (Font("Arial", 12, Font::bold + Font::italic)); 
    g.drawSingleLineText ("Sample Text", 0, 0); 
    
    g.setFont (Font("Arial", 12, Font::plain).withTypefaceStyle("Bold Italic")); 
    g.drawSingleLineText ("Sample Text", 0, 0);

}


Any idea ? Am I doing something wrong, of is there something wrong with Juce ?

Thanks in advance ;)


#2

So, am I the only one who can't draw text bold and italic ?


#3

Does Arial actually have the style "Bold Italic"? You can easily check in the juce demo fonts page.


#4

Hi Jules !

I have just seen in the Juce Demo that the style "Bold Italic" exists for Arial and that the bug is there too. I can display Arial Bold, Arial Italic, but I can't display Arial Bold Italic.

And... I have the same problem with all the other fonts I have on my computer :(


#5

Works ok for me (on OSX)..


#6

I have compiled the last version of Juce Demo, and I can't display any font with bold + italic styles on Windows XP. There is a serious issue here...


#7

If you'd pointed out that this only happens on XP, that would have saved some time..

It was just a mistake in the XP legacy font handling stuff. Should be ok now.


#8

I didn't try on Mac OS X, but I told you from the beginning I'm working on Windows XP wink

Everything is working now, thanks !


#9

Juce does not create a bold or italic font for many fonts in Windows 8.

Just try it on all the fonts that come with Windows 8 in the demo.

This is not a problem in all other programs.

Was this fixed in an update recently that I missed?


#10

Shouldn't you OR the styles together, anyway?

Font("Arial", 12, Font::Bold | Font::Italic)

In this case it probably works anyway, because Font::Bold (1) + Font::Italic (2) == 3, which is the same result if you had to OR (1 | 2 == 3) them.. but any other constant it wouldn't necessarily work.


#11

It doesn't matter. Juce does not create a bold or italic or bold + italic font for a lot of the fonts in Windows 8.

 


#12

Same problem on Window 7 & Windows 8. On MacOs it’s working.

Any hint how it can works on windows?


#13

All that those “bold” and “italic” flags do is make it look for fonts whose style contains the word “bold” or “italic”. Unless you have a font that contains both those keywords, then it won’t find it.

Fonts should be referred to by the name of their style instead - that’s much more reliable, as typefaces have all kinds of style names.