1
1
/*
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.
3
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
4
*
5
5
* This code is free software; you can redistribute it and/or modify it
27
27
* @key headful
28
28
* @summary Verifies that Myanmar script is rendered correctly:
29
29
* two characters combined into one glyph
30
+ * @library /test/lib
31
+ * @build jtreg.SkippedException
30
32
* @run main MyanmarTextTest
31
33
*/
32
34
33
35
import java .awt .Font ;
34
36
import java .awt .GraphicsEnvironment ;
35
37
import java .util .Arrays ;
38
+ import java .util .List ;
36
39
import javax .swing .BorderFactory ;
37
40
import javax .swing .BoxLayout ;
38
41
import javax .swing .JFrame ;
45
48
import javax .swing .text .BadLocationException ;
46
49
import javax .swing .text .Position ;
47
50
51
+ import jtreg .SkippedException ;
52
+
48
53
public class MyanmarTextTest {
49
54
private static final String TEXT = "\u1000 \u103C " ;
50
55
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" );
54
61
55
62
private static final String FONT_NAME = selectFontName ();
56
63
@@ -61,12 +68,8 @@ public class MyanmarTextTest {
61
68
62
69
public static void main (String [] args ) throws Exception {
63
70
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 ));
70
73
}
71
74
72
75
try {
@@ -130,22 +133,12 @@ private void checkPositions() {
130
133
}
131
134
132
135
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 );
143
142
}
144
143
145
- private static boolean fontExists () {
146
- String [] fontFamilyNames = GraphicsEnvironment
147
- .getLocalGraphicsEnvironment ()
148
- .getAvailableFontFamilyNames ();
149
- return Arrays .asList (fontFamilyNames ).contains (FONT_NAME );
150
- }
151
144
}
0 commit comments