11/*
2- * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
2+ * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved.
33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44 *
55 * This code is free software; you can redistribute it and/or modify it
2727 * @key headful
2828 * @summary Verifies that Myanmar script is rendered correctly:
2929 * two characters combined into one glyph
30+ * @library /test/lib
31+ * @build jtreg.SkippedException
3032 * @run main MyanmarTextTest
3133 */
3234
3335import java .awt .Font ;
3436import java .awt .GraphicsEnvironment ;
3537import java .util .Arrays ;
38+ import java .util .List ;
3639import javax .swing .BorderFactory ;
3740import javax .swing .BoxLayout ;
3841import javax .swing .JFrame ;
4548import javax .swing .text .BadLocationException ;
4649import javax .swing .text .Position ;
4750
51+ import jtreg .SkippedException ;
52+
4853public class MyanmarTextTest {
4954 private static final String TEXT = "\u1000 \u103C " ;
5055
51- private static final String FONT_WINDOWS = "Myanmar Text" ;
52- private static final String FONT_LINUX = "Padauk" ;
53- private static final String FONT_MACOS = "Myanmar MN" ;
56+ private static final List <String > FONT_CANDIDATES =
57+ List .of ("Myanmar MN" ,
58+ "Padauk" ,
59+ "Myanmar Text" ,
60+ "Noto Sans Myanmar" );
5461
5562 private static final String FONT_NAME = selectFontName ();
5663
@@ -61,12 +68,8 @@ public class MyanmarTextTest {
6168
6269 public static void main (String [] args ) throws Exception {
6370 if (FONT_NAME == null ) {
64- System .err .println ("Unsupported OS: exiting" );
65- return ;
66- }
67- if (!fontExists ()) {
68- System .err .println ("Required font is not installed: " + FONT_NAME );
69- return ;
71+ throw new SkippedException ("No suitable font found out of the list: "
72+ + String .join (", " , FONT_CANDIDATES ));
7073 }
7174
7275 try {
@@ -130,22 +133,12 @@ private void checkPositions() {
130133 }
131134
132135 private static String selectFontName () {
133- String osName = System .getProperty ("os.name" ).toLowerCase ();
134- if (osName .contains ("windows" )) {
135- return FONT_WINDOWS ;
136- } else if (osName .contains ("linux" )) {
137- return FONT_LINUX ;
138- } else if (osName .contains ("mac" )) {
139- return FONT_MACOS ;
140- } else {
141- return null ;
142- }
136+ return Arrays .stream (GraphicsEnvironment
137+ .getLocalGraphicsEnvironment ()
138+ .getAvailableFontFamilyNames ())
139+ .filter (FONT_CANDIDATES ::contains )
140+ .findFirst ()
141+ .orElse (null );
143142 }
144143
145- private static boolean fontExists () {
146- String [] fontFamilyNames = GraphicsEnvironment
147- .getLocalGraphicsEnvironment ()
148- .getAvailableFontFamilyNames ();
149- return Arrays .asList (fontFamilyNames ).contains (FONT_NAME );
150- }
151144}
0 commit comments