Well I would have saved myself a lot of time if the following would work.
Font f = new UnicodeFont("fontName.ttf",36);
It's quite possibly the most common use case. I have a font file, I have I size I want to use, and I want it to work. Ideally I don't even want to bother with boolean args for italics or bold. With most of my fonts it's a separate font file anyway.
That being said I don't want to be forced to include the ASCII glyphs if I'm localizing for Korea. If that's the case I wouldn't mind going through a bit more cognitive friction to do something more complex.
//false means don't load ASCII
UnicodeFont f = new UnicodeFont("fontName.ttf",36, false);
I don't understand why I need to load the glyphs with a separate method though. Is there a reason that can't be done in add? Probably, but I would like to know what that is.
With effects I've never use them, other than the required one. But addEffect(), and removeEffect() methods would seem much more intuitive to me.
Anyway this just represents what would have been more intuitive for me. UnicodeFont is way better than the old font classes as far as results go, but I get the feeling a lot of people are avoiding it for the simpler to use TrueTypeFont which is a shame.
I final thing to make things more complicated. Manunderground, your code works exactly as it should for me; It draws the string in black.