The code that determines the font style in DefaultFontFactory cacheFont() is incorrect.
To get the English names the Local.ENGLISH argument should be on the getFamily and getName methods, not on toLowerCase.
This technique of determining the style isn't reliable, since there is no requirement for the font name to include terms like "bold" and "italic". It's also possible they could occur as substrings that don't relate to style.