Hi Ian,
Further to my last post, If you want to get workaround for this issue, you can use FontSettings.setFontSubstitutes instead of FontSettings.addFontSubstitutes as shown in following code example.
String[] fontnames = new String[] { "Cambria", "Arial" };
java.util.ArrayList fontSubstitutes = new java.util.ArrayList();
String[] existingSubstitutes = FontSettings.getFontSubstitutes("Courier");
if (existingSubstitutes != null)
fontSubstitutes.addAll(Arrays.asList(existingSubstitutes));
fontSubstitutes.addAll(Arrays.asList(fontnames));
String[] fonts = new String[fontSubstitutes.size()];
fonts = fontSubstitutes.toArray(fonts);
FontSettings.setFontSubstitutes("Courier", fonts);
String[] fs = FontSettings.getFontSubstitutes("Courier");
System.out.println(fs.length);
System.out.println("Font Substitutes for Courier: " + fs[0]);