On Fri, 13 May 2022 22:19:12 GMT, Phil Race <p...@openjdk.org> wrote:
> I still don't understand why they are the same for you .. I added > korean-fallback to my local fontconfig and ran in the Korean locale (changed > my windows region to Korea and rebooted) and they are different for me. > > What I do seem to be seeing is that because we now have UTF-8 as the default > encoding and that we have no UTF-8.ko that it goes the fallback route .. and > so although you get korean by fallback it prefers Chinese and Japanese fonts > which isn't right for a Korean locale > > I believe we need to add a line like the ja one > sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol > +sequence.allfonts.UTF-8.ko=alphabetic,korean,dingbats,symbol > > [See https://git.openjdk.java.net/jdk/pull/8662 for more info and we likely > need to do more of these lines and perhaps you need that PR pushed to include > in your testing .. alas I don't even have a single approver yet, so nowhere > near the two I need !] > > .. even without that I was OK perhaps so long as the fallback seqeuence had > "korean" - I'd have to re-test that > > So I don't know if that will cure them all being the same for you but it > might. I tried the same way of changing region to Korean and rebooting and tried this testcase (changed keyboard IM to Korean too) I have also added sequence.allfonts.UTF-8.ko=alphabetic,korean,dingbats,symbol public class HelloWorld { private static void createAndShowGUI() { JFrame frame = new JFrame("테스트 Swing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label = new JLabel("테스트"); frame.getContentPane().add(label); frame.setSize(400,200); frame.setVisible(true); } public static void main(String[] args) throws Exception { Locale.setDefault(Locale.KOREAN); javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); BufferedImage bi = new BufferedImage(600, 900, BufferedImage.TYPE_INT_RGB); Graphics2D g = bi.createGraphics(); g.setColor(Color.WHITE); g.fillRect(0,0,600,900); g.setColor(Color.BLACK); g.setFont(new Font("sansserif", Font.PLAIN, 20)); g.drawString("Sansserif Plain: 테스트", 100, 40); g.setFont(new Font("sansserif", Font.BOLD, 20)); g.drawString("Sansserif Bold: 테스트", 100, 80); g.setFont(new Font("sansserif", Font.ITALIC, 20)); g.drawString("Sansserif Italic: 테스트", 100, 120); g.setFont(new Font("sansserif", Font.BOLD|Font.ITALIC, 20)); g.drawString("Sansserif BoldItalic: 테스트", 100, 160); g.setFont(new Font("serif", Font.PLAIN, 20)); g.drawString("Serif Plain: 테스트", 100, 200); g.setFont(new Font("serif", Font.BOLD, 20)); g.drawString("Serif Bold: 테스트", 100, 240); g.setFont(new Font("serif", Font.ITALIC, 20)); g.drawString("Serif Italic: 테스트", 100, 280); g.setFont(new Font("serif", Font.BOLD|Font.ITALIC, 20)); g.drawString("Serif BoldItalic: 테스트", 100, 320); g.setFont(new Font("monospaced", Font.PLAIN, 20)); g.drawString("Monospaced Plain: 테스트", 100, 360); g.setFont(new Font("monospaced", Font.BOLD, 20)); g.drawString("Monospaced Bold: 테스트", 100, 400); g.setFont(new Font("monospaced", Font.ITALIC, 20)); g.drawString("Monospaced Italic: 테스트", 100, 440); g.setFont(new Font("monospaced", Font.BOLD|Font.ITALIC, 20)); g.drawString("Monospaced BoldItalic: 테스트", 100, 480); g.setFont(new Font("dialog", Font.PLAIN, 20)); g.drawString("Dialog Plain: 테스트", 100, 520); g.setFont(new Font("dialog", Font.BOLD, 20)); g.drawString("Dialog Bold: 테스트", 100, 560); g.setFont(new Font("dialog", Font.ITALIC, 20)); g.drawString("Dialog Italic: 테스트", 100, 600); g.setFont(new Font("dialog", Font.BOLD|Font.ITALIC, 20)); g.drawString("Dialog Bold Italic: 테스트", 100, 640); g.setFont(new Font("dialoginput", Font.PLAIN, 20)); g.drawString("DialogInput Plain: 테스트", 100, 680); g.setFont(new Font("dialoginput", Font.BOLD, 20)); g.drawString("DialogInput Bold: 테스트", 100, 720); g.setFont(new Font("dialoginput", Font.ITALIC, 20)); g.drawString("Dialog Input Italic: 테스트", 100, 760); g.setFont(new Font("dialoginput", Font.BOLD|Font.ITALIC, 20)); g.drawString("Dialog Input BoldItalic: 테스트", 100, 800); ImageIO.write(bi, "png", new File("image.png")); } } and I am getting this rendered fonts  ------------- PR: https://git.openjdk.java.net/jdk/pull/7643