8208179: Devanagari not shown with logical fonts on Windows after removal of Lucida Sans from JDK
Reviewed-by: jdv, naoto
--- a/make/data/fontconfig/windows.fontconfig.properties Thu Apr 25 15:18:59 2019 -0700
+++ b/make/data/fontconfig/windows.fontconfig.properties Fri Apr 26 12:31:37 2019 -0700
@@ -37,7 +37,17 @@
allfonts.chinese-hkscs=MingLiU_HKSCS
allfonts.chinese-ms950-extb=MingLiU-ExtB
allfonts.devanagari=Mangal
+allfonts.bengali=Vrinda
+allfonts.gujarati=Shruti
+allfonts.gurmukhi=Raavi
allfonts.kannada=Tunga
+allfonts.malayalam=Kartika
+allfonts.oriya=Kalinga
+allfonts.sinhala=Iskoola Pota
+allfonts.tamil=Latha
+allfonts.telugu=Gautami
+allfonts.khmer=Khmer UI
+allfonts.mongolian=Mongolian Baiti
allfonts.dingbats=Wingdings
allfonts.symbol=Symbol
allfonts.symbols=Segoe UI Symbol
@@ -219,7 +229,7 @@
sequence.dialoginput.x-MS950-HKSCS-XP=alphabetic,chinese-ms950,chinese-hkscs,dingbats,symbol,chinese-ms950-extb
sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol
-sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol
+sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol
sequence.allfonts.windows-1255=hebrew,alphabetic/1252,dingbats,symbol
@@ -239,7 +249,9 @@
sequence.fallback=symbols,\
chinese-ms950,chinese-hkscs,chinese-ms936,chinese-gb18030,\
- japanese,korean,chinese-ms950-extb,chinese-ms936-extb,georgian,kannada
+ japanese,korean,chinese-ms950-extb,chinese-ms936-extb,\
+ georgian,devanagari,bengali,gujarati,gurmukhi,kannada,\
+ malayalam,oriya,sinhala,tamil,telugu,thai,khmer,mongolian
# Exclusion Ranges
@@ -293,9 +305,19 @@
filename.Batang=batang.TTC
filename.GulimChe=gulim.TTC
-filename.DokChampa=dokchamp.ttf
+filename.Gautami=gautami.ttf
+filename.Iskoola_Pota=iskpota.ttf
+filename.Kalinga=kalinga.ttf
+filename.Kartika=kartika.ttf
+filename.Latha=latha.ttf
filename.Mangal=MANGAL.TTF
+filename.Raavi=raavi.ttf
+filename.Shruti=shruti.ttf
filename.Tunga=TUNGA.TTF
+filename.Vrinda=vrinda.ttf
+filename.DokChampa=dokchamp.ttf
+filename.Khmer_UI=KhmerUI.ttf
+filename.Mongolian_Baiti=monbaiti.ttf
filename.Symbol=SYMBOL.TTF
filename.Wingdings=WINGDING.TTF
--- a/src/java.desktop/share/classes/sun/font/SunFontManager.java Thu Apr 25 15:18:59 2019 -0700
+++ b/src/java.desktop/share/classes/sun/font/SunFontManager.java Fri Apr 26 12:31:37 2019 -0700
@@ -1981,6 +1981,9 @@
font = findDeferredFont(name, style);
}
if (font == null) {
+ font = findFontFromPlatform(lowerCaseName, style);
+ }
+ if (font == null) {
font = family.getFont(style);
}
if (font == null) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/awt/font/WindowsIndicFonts.java Fri Apr 26 12:31:37 2019 -0700
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+/*
+ * @test
+ * @bug 8208179
+ * @summary Verifies logical fonts support Indic + other Asian code points
+ * @requires (os.family == "windows")
+ */
+
+/*
+ * This isn't just testing Indic fonts, a few other Asian scripts are
+ * also being verified.
+ * Oracle JDK for Windows had supported Devanagari and Thai in the logical
+ * fonts using a proprietary font, since Windows did not have such fonts.
+ * Since that was first added Microsoft added into Windows 7 a
+ * number of fonts to support Indic + other Asian scripts.
+ * By referencing these in the fontconfig.properties files we can enure that
+ * these scripts are supported by the logical fonts when using OpenJDK for
+ * Windows.
+ * The test here just verifies that at least one required code point from each
+ * of these scripts is available to make sure we don't regress, or to catch
+ * and understand cases where those fonts may not be installed.
+ */
+import java.awt.Font;
+
+public class WindowsIndicFonts {
+
+ static boolean failed = false;
+ static Font dialog = new Font(Font.DIALOG, Font.PLAIN, 12);
+
+ public static void main(String args[]) {
+
+ if (!System.getProperty("os.name").toLowerCase().contains("windows")) {
+ return;
+ }
+
+ test("\u0905", "Devanagari"); // from Mangal font
+ test("\u0985", "Bengali"); // from Vrinda font
+ test("\u0a05", "Gurmukhi"); // from Raavi font
+ test("\u0a85", "Gujurati"); // from Shruti font
+ test("\u0b05", "Oriya"); // from Kalinga font
+ test("\u0b85", "Tamil"); // from Latha font
+ test("\u0c05", "Telugu"); // from Gautami font
+ test("\u0c85", "Kannada"); // from Tunga font
+ test("\u0d05", "Malayalam"); // from Kartika font
+ test("\u0c05", "Sinhala"); // from Iskoola Pota font
+ test("\u0e05", "Thai"); // from DokChampa font
+ test("\u0e87", "Lao"); // from DokChampa font
+ test("\u0e05", "Khmer"); // from Khmer UI font
+ test("\u1820", "Mongolian"); // from Mongolian Baiti font
+
+ if (failed) {
+ throw new RuntimeException("Missing support for a script");
+ }
+ }
+
+ static void test(String text, String script) {
+ if (dialog.canDisplayUpTo(text) != -1) {
+ failed = true;
+ System.out.println("No codepoint for " + script);
+ }
+ }
+
+}