JRE-928 Some controls do not support Hindi, Thai characters on Windows
this is a backport of JDK-8191522 fix from JDK 11 (adapted to our case - bundling Droid instead of Lucida)
diff --git a/src/macosx/classes/sun/awt/fontconfigs/macosx.fontconfig.properties b/src/macosx/classes/sun/awt/fontconfigs/macosx.fontconfig.properties
index 7e3c2fd..e1b8cdc 100644
--- a/src/macosx/classes/sun/awt/fontconfigs/macosx.fontconfig.properties
+++ b/src/macosx/classes/sun/awt/fontconfigs/macosx.fontconfig.properties
@@ -34,9 +34,7 @@
allfonts.chinese-hkscs=MingLiU_HKSCS
allfonts.devanagari=Mangal
allfonts.dingbats=Wingdings
-allfonts.lucida=Lucida Sans Regular
allfonts.symbol=Symbol
-allfonts.thai=Lucida Sans Regular
serif.plain.alphabetic=Times New Roman
serif.plain.chinese-ms950=MingLiU
@@ -202,10 +200,9 @@
sequence.dialog.x-windows-949=alphabetic,korean,dingbats,symbol
sequence.dialoginput.x-windows-949=alphabetic,korean,dingbats,symbol
-sequence.allfonts.x-windows-874=alphabetic,thai,dingbats,symbol
+sequence.allfonts.x-windows-874=alphabetic,dingbats,symbol
-sequence.fallback=lucida,\
- chinese-ms950,chinese-hkscs,chinese-ms936,chinese-gb18030,\
+sequence.fallback=chinese-ms950,chinese-hkscs,chinese-ms936,chinese-gb18030,\
japanese,korean
# Exclusion Ranges
@@ -256,7 +253,6 @@
filename.Batang=batang.TTC
filename.GulimChe=gulim.TTC
-filename.Lucida_Sans_Regular=LucidaSansRegular.ttf
filename.Mangal=MANGAL.TTF
filename.Symbol=SYMBOL.TTF
filename.Wingdings=WINGDING.TTF
diff --git a/src/macosx/classes/sun/font/CFontManager.java b/src/macosx/classes/sun/font/CFontManager.java
index 6280b65..5d50352 100644
--- a/src/macosx/classes/sun/font/CFontManager.java
+++ b/src/macosx/classes/sun/font/CFontManager.java
@@ -301,12 +301,12 @@
);
String defaultFont = "Lucida Grande";
- String defaultFallback = "Lucida Sans";
+ String defaultFallback = "Lucida Grande";
setupLogicalFonts("Dialog", defaultFont, defaultFallback);
- setupLogicalFonts("Serif", "Times", "Lucida Bright");
+ setupLogicalFonts("Serif", "Times", "Times");
setupLogicalFonts("SansSerif", defaultFont, defaultFallback);
- setupLogicalFonts("Monospaced", "Menlo", "Lucida Sans Typewriter");
+ setupLogicalFonts("Monospaced", "Menlo", "Courier");
setupLogicalFonts("DialogInput", defaultFont, defaultFallback);
}
}
diff --git a/src/share/classes/sun/awt/FontConfiguration.java b/src/share/classes/sun/awt/FontConfiguration.java
index 93e38e0..cc56850 100644
--- a/src/share/classes/sun/awt/FontConfiguration.java
+++ b/src/share/classes/sun/awt/FontConfiguration.java
@@ -992,8 +992,6 @@
/**
* Returns an array of composite font descriptors for all logical font
* faces.
- * If the font configuration file doesn't specify Lucida Sans Regular
- * or the given fallback font as component fonts, they are added here.
*/
public CompositeFontDescriptor[] get2DCompositeFontInfo() {
CompositeFontDescriptor[] result =
@@ -1060,7 +1058,6 @@
*/
}
- //"Lucida Sans Regular" is not in the list, we add it here
if (!sawDefaultFontFile) {
int len = 0;
if (installedFallbackFontFiles != null) {
@@ -1434,8 +1431,7 @@
for (int ii = 0; ii < table_awtfontpaths.length; ii++) {
if (table_awtfontpaths[ii] == 0) {
String script = getString(table_scriptIDs[ii]);
- if (script.contains("lucida") ||
- script.contains("dingbats") ||
+ if (script.contains("dingbats") ||
script.contains("symbol")) {
continue;
}
diff --git a/src/share/classes/sun/font/CMap.java b/src/share/classes/sun/font/CMap.java
index 73cfcc7..410280c 100644
--- a/src/share/classes/sun/font/CMap.java
+++ b/src/share/classes/sun/font/CMap.java
@@ -191,7 +191,7 @@
* The primary purpose of these mappings was to facilitate
* display of symbol chars etc in composite fonts, however
* this is not needed as all these code points are covered
- * by Lucida Sans Regular.
+ * by some other platform symbol font.
* Commenting this out reduces the role of these two files
* (assuming that they continue to be used in font.properties)
* to just one of contributing to the overall composite
diff --git a/src/share/classes/sun/font/FontManagerNativeLibrary.java b/src/share/classes/sun/font/FontManagerNativeLibrary.java
index 47cfe92..22fce24 100644
--- a/src/share/classes/sun/font/FontManagerNativeLibrary.java
+++ b/src/share/classes/sun/font/FontManagerNativeLibrary.java
@@ -34,8 +34,7 @@
public Object run() {
/* REMIND do we really have to load awt here? */
System.loadLibrary("awt");
- if (FontUtilities.isOpenJDK &&
- System.getProperty("os.name").startsWith("Windows")) {
+ if (System.getProperty("os.name").startsWith("Windows")) {
/* Ideally fontmanager library should not depend on
particular implementation of the font scaler.
However, freetype scaler is basically small wrapper on
diff --git a/src/share/classes/sun/font/FontScaler.java b/src/share/classes/sun/font/FontScaler.java
index 89179b3..61e53d3 100644
--- a/src/share/classes/sun/font/FontScaler.java
+++ b/src/share/classes/sun/font/FontScaler.java
@@ -94,11 +94,7 @@
boolean.class, int.class};
try {
- if (FontUtilities.isOpenJDK) {
- scalerClass = Class.forName("sun.font.FreetypeFontScaler");
- } else {
- scalerClass = Class.forName("sun.font.T2KFontScaler");
- }
+ scalerClass = Class.forName("sun.font.FreetypeFontScaler");
} catch (ClassNotFoundException e) {
scalerClass = NullFontScaler.class;
}
diff --git a/src/share/classes/sun/font/FontUtilities.java b/src/share/classes/sun/font/FontUtilities.java
index 78c4c1e..dd150d7 100644
--- a/src/share/classes/sun/font/FontUtilities.java
+++ b/src/share/classes/sun/font/FontUtilities.java
@@ -60,10 +60,6 @@
public static boolean isWindows;
- public static boolean isOpenJDK;
-
- static final String LUCIDA_FILE_NAME = "LucidaSansRegular.ttf";
-
static final String DROID_FILE_NAME = "DroidSans.ttf";
private static boolean debugFonts = false;
@@ -120,14 +116,6 @@
isOpenSolaris = false;
}
isWindows = osName.startsWith("Windows");
- String jreLibDirName = System.getProperty("java.home", "")
- + File.separator + "lib";
- String jreFontDirName =
- jreLibDirName + File.separator + "fonts";
- File lucidaFile = new File(jreFontDirName + File.separator
- + LUCIDA_FILE_NAME);
- isOpenJDK = !lucidaFile.exists();
-
String debugLevel =
System.getProperty("sun.java2d.debugfonts");
diff --git a/src/share/classes/sun/font/SunFontManager.java b/src/share/classes/sun/font/SunFontManager.java
index 232f44a..5ebaea0 100644
--- a/src/share/classes/sun/font/SunFontManager.java
+++ b/src/share/classes/sun/font/SunFontManager.java
@@ -192,7 +192,6 @@
String[] jreOtherFontFiles;
boolean noOtherJREFontFiles = false; // initial assumption.
- public static final String lucidaFontName = "Lucida Sans Regular";
public static final String droidFontName = "Droid Sans";
public static String jreLibDirName;
public static String jreFontDirName;
@@ -280,73 +279,27 @@
*/
jreFontMap = new HashMap<String,String>();
jreBundledFontFiles = new HashSet<String>();
- if (isOpenJDK()) {
- /* Droid Sans Mono Family */
- jreFontMap.put("droid sans0", "DroidSans.ttf");
- jreFontMap.put("droid sans1", "DroidSans-Bold.ttf");
- jreFontMap.put("droid sans bold1", "DroidSans-Bold.ttf");
+ /* Droid Sans Mono Family */
+ jreFontMap.put("droid sans0", "DroidSans.ttf");
+ jreFontMap.put("droid sans1", "DroidSans-Bold.ttf");
+ jreFontMap.put("droid sans bold1", "DroidSans-Bold.ttf");
- /* Droid Sans Mono Family */
- jreFontMap.put("droid sans mono0", "DroidSansMono.ttf");
- jreFontMap.put("droid sans mono slashed0",
- "DroidSansMonoSlashed.ttf");
- jreFontMap.put("droid sans mono dotted0",
- "DroidSansMonoDotted.ttf");
+ /* Droid Sans Mono Family */
+ jreFontMap.put("droid sans mono0", "DroidSansMono.ttf");
+ jreFontMap.put("droid sans mono slashed0",
+ "DroidSansMonoSlashed.ttf");
+ jreFontMap.put("droid sans mono dotted0",
+ "DroidSansMonoDotted.ttf");
- /* Droid Serif Family */
- jreFontMap.put("droid serif0", "DroidSerif-Regular.ttf");
- jreFontMap.put("droid serif1", "DroidSerif-Bold.ttf");
- jreFontMap.put("droid serif2", "DroidSerif-Italic.ttf");
- jreFontMap.put("droid serif3", "DroidSerif-BoldItalic.ttf");
- jreFontMap.put("droid serif bold1", "DroidSerif-Bold.ttf");
- jreFontMap.put("droid serif bold italic3", "DroidSerif-BoldItalic.ttf");
- }
- else {
- /* Lucida Sans Family */
- jreFontMap.put("lucida sans0", "LucidaSansRegular.ttf");
- jreFontMap.put("lucida sans1", "LucidaSansDemiBold.ttf");
- /* Lucida Sans full names (map Bold and DemiBold to same file) */
- jreFontMap.put("lucida sans regular0", "LucidaSansRegular.ttf");
- jreFontMap.put("lucida sans regular1", "LucidaSansDemiBold.ttf");
- jreFontMap.put("lucida sans bold1", "LucidaSansDemiBold.ttf");
- jreFontMap.put("lucida sans demibold1", "LucidaSansDemiBold.ttf");
+ /* Droid Serif Family */
+ jreFontMap.put("droid serif0", "DroidSerif-Regular.ttf");
+ jreFontMap.put("droid serif1", "DroidSerif-Bold.ttf");
+ jreFontMap.put("droid serif2", "DroidSerif-Italic.ttf");
+ jreFontMap.put("droid serif3", "DroidSerif-BoldItalic.ttf");
+ jreFontMap.put("droid serif bold1", "DroidSerif-Bold.ttf");
+ jreFontMap.put("droid serif bold italic3", "DroidSerif-BoldItalic.ttf");
- /* Lucida Sans Typewriter Family */
- jreFontMap.put("lucida sans typewriter0",
- "LucidaTypewriterRegular.ttf");
- jreFontMap.put("lucida sans typewriter1", "LucidaTypewriterBold.ttf");
- /* Typewriter full names (map Bold and DemiBold to same file) */
- jreFontMap.put("lucida sans typewriter regular0",
- "LucidaTypewriter.ttf");
- jreFontMap.put("lucida sans typewriter regular1",
- "LucidaTypewriterBold.ttf");
- jreFontMap.put("lucida sans typewriter bold1",
- "LucidaTypewriterBold.ttf");
- jreFontMap.put("lucida sans typewriter demibold1",
- "LucidaTypewriterBold.ttf");
-
- /* Lucida Bright Family */
- jreFontMap.put("lucida bright0", "LucidaBrightRegular.ttf");
- jreFontMap.put("lucida bright1", "LucidaBrightDemiBold.ttf");
- jreFontMap.put("lucida bright2", "LucidaBrightItalic.ttf");
- jreFontMap.put("lucida bright3", "LucidaBrightDemiItalic.ttf");
- /* Lucida Bright full names (map Bold and DemiBold to same file) */
- jreFontMap.put("lucida bright regular0", "LucidaBrightRegular.ttf");
- jreFontMap.put("lucida bright regular1", "LucidaBrightDemiBold.ttf");
- jreFontMap.put("lucida bright regular2", "LucidaBrightItalic.ttf");
- jreFontMap.put("lucida bright regular3", "LucidaBrightDemiItalic.ttf");
- jreFontMap.put("lucida bright bold1", "LucidaBrightDemiBold.ttf");
- jreFontMap.put("lucida bright bold3", "LucidaBrightDemiItalic.ttf");
- jreFontMap.put("lucida bright demibold1", "LucidaBrightDemiBold.ttf");
- jreFontMap.put("lucida bright demibold3", "LucidaBrightDemiItalic.ttf");
- jreFontMap.put("lucida bright italic2", "LucidaBrightItalic.ttf");
- jreFontMap.put("lucida bright italic3", "LucidaBrightDemiItalic.ttf");
- jreFontMap.put("lucida bright bold italic3",
- "LucidaBrightDemiItalic.ttf");
- jreFontMap.put("lucida bright demibold italic3",
- "LucidaBrightDemiItalic.ttf");
- }
for (String ffile : jreFontMap.values()) {
jreBundledFontFiles.add(ffile);
}
@@ -956,15 +909,6 @@
return deferredFontFiles.containsKey(fileName);
}
- /* We keep a map of the files which contain the Lucida fonts so we
- * don't need to search for them.
- * But since we know what fonts these files contain, we can also avoid
- * opening them to look for a font name we don't recognise - see
- * findDeferredFont().
- * For typical cases where the font isn't a JRE one the overhead is
- * this method call, HashMap.get() and null reference test, then
- * a boolean test of noOtherJREFontFiles.
- */
public
/*private*/ PhysicalFont findJREDeferredFont(String name, int style) {
@@ -987,10 +931,9 @@
/* Iterate over the deferred font files looking for any in the
* jre directory that we didn't recognise, open each of these.
* In almost all installations this will quickly fall through
- * because only the Lucidas will be present and jreOtherFontFiles
- * will be empty.
+ * because jreOtherFontFiles will be empty.
* noOtherJREFontFiles is used so we can skip this block as soon
- * as its determined that its not needed - almost always after the
+ * as its determined that it's not needed - almost always after the
* very first time through.
*/
if (noOtherJREFontFiles) {
@@ -1061,7 +1004,6 @@
}
private PhysicalFont findDeferredFont(String name, int style) {
-
PhysicalFont physicalFont = findJREDeferredFont(name, style);
if (physicalFont != null) {
return physicalFont;
@@ -1232,11 +1174,7 @@
* misconfiguration and this is probably a reasonable substitution.
*/
defaultPhysicalFont = (PhysicalFont)
- findFont2D("Lucida Sans Regular", Font.PLAIN, NO_FALLBACK);
- if (defaultPhysicalFont == null) {
- defaultPhysicalFont = (PhysicalFont)
- findFont2D("Arial", Font.PLAIN, NO_FALLBACK);
- }
+ findFont2D(getDefaultFontFaceName(), Font.PLAIN, NO_FALLBACK);
if (defaultPhysicalFont == null) {
/* Because of the findFont2D call above, if we reach here, we
* know all fonts have already been loaded, just accept any
@@ -2232,8 +2170,9 @@
return font;
}
- /* Don't want Windows to return a Lucida Sans font from
- * C:\Windows\Fonts
+ /* Don't want Windows to return a font from C:\Windows\Fonts
+ * if someone has installed a font with the same name
+ * in the JRE.
*/
if (deferredFontFiles.size() > 0) {
font = findJREDeferredFont(lowerCaseName, style);
@@ -3299,10 +3238,6 @@
return fontPath;
}
- public static boolean isOpenJDK() {
- return FontUtilities.isOpenJDK;
- }
-
protected void loadFonts() {
if (discoveredAllFonts) {
return;
@@ -3400,23 +3335,12 @@
}
private void initDefaultFonts() {
- if (!isOpenJDK()) {
- defaultFontName = lucidaFontName;
- if (useAbsoluteFontFileNames()) {
- defaultFontFileName =
- jreFontDirName + File.separator + FontUtilities.LUCIDA_FILE_NAME;
- } else {
- defaultFontFileName = FontUtilities.LUCIDA_FILE_NAME;
- }
- }
- else {
- defaultFontName = droidFontName;
- if (useAbsoluteFontFileNames()) {
- defaultFontFileName =
- jreFontDirName + File.separator + FontUtilities.DROID_FILE_NAME;
- } else {
- defaultFontFileName = FontUtilities.DROID_FILE_NAME;
- }
+ defaultFontName = droidFontName;
+ if (useAbsoluteFontFileNames()) {
+ defaultFontFileName =
+ jreFontDirName + File.separator + FontUtilities.DROID_FILE_NAME;
+ } else {
+ defaultFontFileName = FontUtilities.DROID_FILE_NAME;
}
}
diff --git a/src/share/demo/java2d/J2DBench/options/default.opt b/src/share/demo/java2d/J2DBench/options/default.opt
index 0be1371..5a03a1c 100644
--- a/src/share/demo/java2d/J2DBench/options/default.opt
+++ b/src/share/demo/java2d/J2DBench/options/default.opt
@@ -66,7 +66,7 @@
graphics.imaging.tests.drawimagetxform=enabled
text.opts.data.tlength=32
text.opts.data.tscript=english
-text.opts.font.fname=lucida
+text.opts.font.fname=dialog
text.opts.font.fstyle=0
text.opts.font.fsize=13.0
text.opts.font.ftx=Identity
diff --git a/src/solaris/classes/sun/awt/FcFontManager.java b/src/solaris/classes/sun/awt/FcFontManager.java
index 0b3ef6a..d813520 100644
--- a/src/solaris/classes/sun/awt/FcFontManager.java
+++ b/src/solaris/classes/sun/awt/FcFontManager.java
@@ -73,12 +73,14 @@
getFontConfigManager().initFontConfigFonts(false);
FontConfigManager.FcCompFont[] fontConfigFonts =
getFontConfigManager().getFontConfigFonts();
- for (int i=0; i<fontConfigFonts.length; i++) {
- if ("sans".equals(fontConfigFonts[i].fcFamily) &&
- 0 == fontConfigFonts[i].style) {
- info[0] = fontConfigFonts[i].firstFont.familyName;
- info[1] = fontConfigFonts[i].firstFont.fontFile;
- break;
+ if (fontConfigFonts != null) {
+ for (int i=0; i<fontConfigFonts.length; i++) {
+ if ("sans".equals(fontConfigFonts[i].fcFamily) &&
+ 0 == fontConfigFonts[i].style) {
+ info[0] = fontConfigFonts[i].firstFont.familyName;
+ info[1] = fontConfigFonts[i].firstFont.fontFile;
+ break;
+ }
}
}
/* Absolute last ditch attempt in the face of fontconfig problems.
@@ -86,7 +88,7 @@
* up so we don't NPE.
*/
if (info[0] == null) {
- if (fontConfigFonts.length > 0 &&
+ if (fontConfigFonts != null && fontConfigFonts.length > 0 &&
fontConfigFonts[0].firstFont.fontFile != null) {
info[0] = fontConfigFonts[0].firstFont.familyName;
info[1] = fontConfigFonts[0].firstFont.fontFile;
diff --git a/src/solaris/classes/sun/awt/X11FontManager.java b/src/solaris/classes/sun/awt/X11FontManager.java
index 0b001b3..d57864d 100644
--- a/src/solaris/classes/sun/awt/X11FontManager.java
+++ b/src/solaris/classes/sun/awt/X11FontManager.java
@@ -127,17 +127,6 @@
*/
private static HashSet<String> fontConfigDirs = null;
- /* These maps are used on Linux where we reference the Lucida oblique
- * fonts in fontconfig files even though they aren't in the standard
- * font directory. This explicitly remaps the XLFDs for these to the
- * correct base font. This is needed to prevent composite fonts from
- * defaulting to the Lucida Sans which is a bad substitute for the
- * monospaced Lucida Sans Typewriter. Also these maps prevent the
- * JRE from doing wasted work at start up.
- */
- HashMap<String, String> oblmap = null;
-
-
/*
* Used to eliminate redundant work. When a font directory is
* registered it added to this list. Subsequent registrations for the
@@ -233,16 +222,6 @@
if (fontID != null) {
fileName = (String)fontNameMap.get(fontID);
- /* On Linux check for the Lucida Oblique fonts */
- if (fileName == null && FontUtilities.isLinux && !isOpenJDK()) {
- if (oblmap == null) {
- initObliqueLucidaFontMap();
- }
- String oblkey = getObliqueLucidaFontID(fontID);
- if (oblkey != null) {
- fileName = oblmap.get(oblkey);
- }
- }
if (fontPath == null &&
(fileName == null || !fileName.startsWith("/"))) {
if (FontUtilities.debugFonts()) {
@@ -472,17 +451,6 @@
fontNameMap = new HashMap(1);
}
- private String getObliqueLucidaFontID(String fontID) {
- if (fontID.startsWith("-lucidasans-medium-i-normal") ||
- fontID.startsWith("-lucidasans-bold-i-normal") ||
- fontID.startsWith("-lucidatypewriter-medium-i-normal") ||
- fontID.startsWith("-lucidatypewriter-bold-i-normal")) {
- return fontID.substring(0, fontID.indexOf("-i-"));
- } else {
- return null;
- }
- }
-
private static String getX11FontName(String platName) {
String xlfd = platName.replaceAll("%d", "*");
if (NativeFont.fontExists(xlfd)) {
@@ -492,18 +460,6 @@
}
}
- private void initObliqueLucidaFontMap() {
- oblmap = new HashMap<String, String>();
- oblmap.put("-lucidasans-medium",
- jreLibDirName+"/fonts/LucidaSansRegular.ttf");
- oblmap.put("-lucidasans-bold",
- jreLibDirName+"/fonts/LucidaSansDemiBold.ttf");
- oblmap.put("-lucidatypewriter-medium",
- jreLibDirName+"/fonts/LucidaTypewriterRegular.ttf");
- oblmap.put("-lucidatypewriter-bold",
- jreLibDirName+"/fonts/LucidaTypewriterBold.ttf");
- }
-
private boolean isHeadless() {
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
@@ -755,9 +711,7 @@
* use the preconfigured file, and also that it points to
* existent fonts.
* If synthesising fails, we fall back to any preconfigured file
- * and do the best we can. For the commercial JDK this will be
- * fine as it includes the Lucida fonts. OpenJDK should not hit
- * this as the synthesis should always work on its platforms.
+ * and do the best we can.
*/
FontConfiguration mFontConfig = new MFontConfiguration(this);
if (FontUtilities.isOpenSolaris ||
diff --git a/src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.properties b/src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.properties
index e1617fa..e8a11ed 100644
--- a/src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.properties
+++ b/src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.properties
@@ -43,7 +43,6 @@
allfonts.japanese-x0212=-ricoh-heiseimin-w3-r-normal--*-%d-*-*-m-*-jisx0212.1990-0
allfonts.korean=-hanyang-kodig-medium-r-normal--*-%d-*-*-m-*-ksc5601.1987-0
allfonts.korean-johab=-hanyang-kodig-medium-r-normal--*-%d-*-*-m-*-ksc5601.1992-3
-allfonts.lucida=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
allfonts.symbol=-*-symbol-medium-r-normal--*-%d-*-*-p-*-sun-fontspecific
serif.plain.arabic=-monotype-naskh-medium-r-normal--*-%d-*-*-p-*-iso8859-6
@@ -428,8 +427,7 @@
# - japanese-x0212: same files as japanese-x0201
# - korean: same file as korean-johab
# - dingbats, symbol: included in all core sequences
-sequence.fallback=lucida,\
- chinese-big5,chinese-gb2312,chinese-gb18030-0,\
+sequence.fallback=chinese-big5,chinese-gb2312,chinese-gb18030-0,\
japanese-x0201,korean-johab
# Exclusion Ranges
@@ -440,7 +438,6 @@
# Font File Names
filename.-*-symbol-medium-r-normal--*-%d-*-*-p-*-sun-fontspecific=/usr/openwin/lib/X11/fonts/TrueType/Symbol.ttf
-filename.-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1=$JRE_LIB_FONTS/LucidaSansRegular.ttf
filename.-fangzheng-song-medium-r-normal--*-%d-*-*-m-*-gb18030.2000-0=/usr/openwin/lib/locale/zh_CN.GB18030/X11/fonts/TrueType/songti.ttf
filename.-fangzheng-song-medium-r-normal--*-%d-*-*-m-*-gb18030.2000-1=/usr/openwin/lib/locale/zh_CN.GB18030/X11/fonts/TrueType/songti.ttf
filename.-hanyang-kodig-medium-r-normal--*-%d-*-*-m-*-ksc5601.1987-0=/usr/openwin/lib/locale/ko.UTF-8/X11/fonts/TrueType/h2gtrm.ttf
diff --git a/src/solaris/classes/sun/awt/motif/java.fonts.dir b/src/solaris/classes/sun/awt/motif/java.fonts.dir
deleted file mode 100644
index 89b6e74..0000000
--- a/src/solaris/classes/sun/awt/motif/java.fonts.dir
+++ /dev/null
@@ -1,49 +0,0 @@
-48
-LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--0-0-0-0-p-0-iso8859-1
-LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--0-0-0-0-p-0-iso8859-1
-LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--0-0-0-0-p-0-iso8859-1
-LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--0-0-0-0-p-0-iso8859-1
-LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-1
-LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-0-0-0-0-p-0-iso8859-1
-LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-0-0-0-0-m-0-iso8859-1
-LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-0-0-0-0-m-0-iso8859-1
-LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--0-0-0-0-p-0-iso8859-2
-LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--0-0-0-0-p-0-iso8859-2
-LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--0-0-0-0-p-0-iso8859-2
-LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--0-0-0-0-p-0-iso8859-2
-LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-2
-LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-0-0-0-0-p-0-iso8859-2
-LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-0-0-0-0-m-0-iso8859-2
-LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-0-0-0-0-m-0-iso8859-2
-LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--0-0-0-0-p-0-iso8859-4
-LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--0-0-0-0-p-0-iso8859-4
-LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--0-0-0-0-p-0-iso8859-4
-LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--0-0-0-0-p-0-iso8859-4
-LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-4
-LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-0-0-0-0-p-0-iso8859-4
-LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-0-0-0-0-m-0-iso8859-4
-LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-0-0-0-0-m-0-iso8859-4
-LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--0-0-0-0-p-0-iso8859-5
-LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--0-0-0-0-p-0-iso8859-5
-LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--0-0-0-0-p-0-iso8859-5
-LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--0-0-0-0-p-0-iso8859-5
-LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-5
-LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-0-0-0-0-p-0-iso8859-5
-LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-0-0-0-0-m-0-iso8859-5
-LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-0-0-0-0-m-0-iso8859-5
-LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--0-0-0-0-p-0-iso8859-7
-LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--0-0-0-0-p-0-iso8859-7
-LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--0-0-0-0-p-0-iso8859-7
-LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--0-0-0-0-p-0-iso8859-7
-LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-7
-LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-0-0-0-0-p-0-iso8859-7
-LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-0-0-0-0-m-0-iso8859-7
-LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-0-0-0-0-m-0-iso8859-7
-LucidaBrightRegular.ttf -b&h-lucidabright-medium-r-normal--0-0-0-0-p-0-iso8859-9
-LucidaBrightItalic.ttf -b&h-lucidabright-medium-i-normal--0-0-0-0-p-0-iso8859-9
-LucidaBrightDemiBold.ttf -b&h-lucidabright-demibold-r-normal--0-0-0-0-p-0-iso8859-9
-LucidaBrightDemiItalic.ttf -b&h-lucidabright-demibold-i-normal--0-0-0-0-p-0-iso8859-9
-LucidaSansRegular.ttf -b&h-lucidasans-medium-r-normal-sans-0-0-0-0-p-0-iso8859-9
-LucidaSansDemiBold.ttf -b&h-lucidasans-bold-r-normal-sans-0-0-0-0-p-0-iso8859-9
-LucidaTypewriterRegular.ttf -b&h-lucidatypewriter-medium-r-normal-sans-0-0-0-0-m-0-iso8859-9
-LucidaTypewriterBold.ttf -b&h-lucidatypewriter-bold-r-normal-sans-0-0-0-0-m-0-iso8859-9
diff --git a/src/solaris/classes/sun/awt/motif/java.oblique-fonts.dir b/src/solaris/classes/sun/awt/motif/java.oblique-fonts.dir
deleted file mode 100644
index 4346c9e..0000000
--- a/src/solaris/classes/sun/awt/motif/java.oblique-fonts.dir
+++ /dev/null
@@ -1,25 +0,0 @@
-24
-LucidaSansOblique.ttf -b&h-lucidasans-medium-i-normal-sans-0-0-0-0-p-0-iso8859-1
-LucidaSansDemiOblique.ttf -b&h-lucidasans-bold-i-normal-sans-0-0-0-0-p-0-iso8859-1
-LucidaTypewriterOblique.ttf -b&h-lucidatypewriter-medium-i-normal-sans-0-0-0-0-m-0-iso8859-1
-LucidaTypewriterBoldOblique.ttf -b&h-lucidatypewriter-bold-i-normal-sans-0-0-0-0-m-0-iso8859-1
-LucidaSansOblique.ttf -b&h-lucidasans-medium-i-normal-sans-0-0-0-0-p-0-iso8859-2
-LucidaSansDemiOblique.ttf -b&h-lucidasans-bold-i-normal-sans-0-0-0-0-p-0-iso8859-2
-LucidaTypewriterOblique.ttf -b&h-lucidatypewriter-medium-i-normal-sans-0-0-0-0-m-0-iso8859-2
-LucidaTypewriterBoldOblique.ttf -b&h-lucidatypewriter-bold-i-normal-sans-0-0-0-0-m-0-iso8859-2
-LucidaSansOblique.ttf -b&h-lucidasans-medium-i-normal-sans-0-0-0-0-p-0-iso8859-4
-LucidaSansDemiOblique.ttf -b&h-lucidasans-bold-i-normal-sans-0-0-0-0-p-0-iso8859-4
-LucidaTypewriterOblique.ttf -b&h-lucidatypewriter-medium-i-normal-sans-0-0-0-0-m-0-iso8859-4
-LucidaTypewriterBoldOblique.ttf -b&h-lucidatypewriter-bold-i-normal-sans-0-0-0-0-m-0-iso8859-4
-LucidaSansOblique.ttf -b&h-lucidasans-medium-i-normal-sans-0-0-0-0-p-0-iso8859-5
-LucidaSansDemiOblique.ttf -b&h-lucidasans-bold-i-normal-sans-0-0-0-0-p-0-iso8859-5
-LucidaTypewriterOblique.ttf -b&h-lucidatypewriter-medium-i-normal-sans-0-0-0-0-m-0-iso8859-5
-LucidaTypewriterBoldOblique.ttf -b&h-lucidatypewriter-bold-i-normal-sans-0-0-0-0-m-0-iso8859-5
-LucidaSansOblique.ttf -b&h-lucidasans-medium-i-normal-sans-0-0-0-0-p-0-iso8859-7
-LucidaSansDemiOblique.ttf -b&h-lucidasans-bold-i-normal-sans-0-0-0-0-p-0-iso8859-7
-LucidaTypewriterOblique.ttf -b&h-lucidatypewriter-medium-i-normal-sans-0-0-0-0-m-0-iso8859-7
-LucidaTypewriterBoldOblique.ttf -b&h-lucidatypewriter-bold-i-normal-sans-0-0-0-0-m-0-iso8859-7
-LucidaSansOblique.ttf -b&h-lucidasans-medium-i-normal-sans-0-0-0-0-p-0-iso8859-9
-LucidaSansDemiOblique.ttf -b&h-lucidasans-bold-i-normal-sans-0-0-0-0-p-0-iso8859-9
-LucidaTypewriterOblique.ttf -b&h-lucidatypewriter-medium-i-normal-sans-0-0-0-0-m-0-iso8859-9
-LucidaTypewriterBoldOblique.ttf -b&h-lucidatypewriter-bold-i-normal-sans-0-0-0-0-m-0-iso8859-9
diff --git a/src/solaris/classes/sun/font/FontConfigManager.java b/src/solaris/classes/sun/font/FontConfigManager.java
index 725ae4e..9f10b83 100644
--- a/src/solaris/classes/sun/font/FontConfigManager.java
+++ b/src/solaris/classes/sun/font/FontConfigManager.java
@@ -283,9 +283,8 @@
}
}
- /* If the font may hide a JRE font (eg fontconfig says it is
- * Lucida Sans), we want to use the JRE version, so make it
- * point to the JRE font.
+ /* If the font may hide a JRE font, we want to use the JRE version,
+ * so make it point to the JRE font.
*/
physFont = fm.findJREDeferredFont(fcInfo.firstFont.familyName,
fcInfo.style);
diff --git a/src/windows/classes/sun/awt/windows/fontconfig.properties b/src/windows/classes/sun/awt/windows/fontconfig.properties
index 1d3c61c..35f4dc4 100644
--- a/src/windows/classes/sun/awt/windows/fontconfig.properties
+++ b/src/windows/classes/sun/awt/windows/fontconfig.properties
@@ -38,10 +38,9 @@
allfonts.chinese-ms950-extb=MingLiU-ExtB
allfonts.devanagari=Mangal
allfonts.dingbats=Wingdings
-allfonts.lucida=Lucida Sans Regular
allfonts.symbol=Symbol
allfonts.symbols=Segoe UI Symbol
-allfonts.thai=Lucida Sans Regular
+allfonts.thai=DokChampa
allfonts.georgian=Sylfaen
serif.plain.alphabetic=Times New Roman
@@ -237,7 +236,7 @@
sequence.allfonts.x-windows-874=alphabetic,thai,dingbats,symbol
-sequence.fallback=lucida,symbols,\
+sequence.fallback=symbols,\
chinese-ms950,chinese-hkscs,chinese-ms936,chinese-gb18030,\
japanese,korean,chinese-ms950-extb,chinese-ms936-extb,georgian
@@ -293,7 +292,7 @@
filename.Batang=batang.TTC
filename.GulimChe=gulim.TTC
-filename.Lucida_Sans_Regular=LucidaSansRegular.ttf
+filename.DokChampa=dokchamp.ttf
filename.Mangal=MANGAL.TTF
filename.Symbol=SYMBOL.TTF
filename.Wingdings=WINGDING.TTF
diff --git a/test/java/awt/font/StyledMetrics/BoldSpace.java b/test/java/awt/font/StyledMetrics/BoldSpace.java
index bbdff5f..df5f223 100644
--- a/test/java/awt/font/StyledMetrics/BoldSpace.java
+++ b/test/java/awt/font/StyledMetrics/BoldSpace.java
@@ -46,7 +46,6 @@
// in point.
int errorMargin = 4;
g.setFont(new Font("monospaced", Font.BOLD, 14));
- //g.setFont(new Font("Lucida Sans Regular", Font.BOLD, 14));
FontMetrics fm = g.getFontMetrics();
System.out.println("Bold: " + fm.charWidth('\u200b'));
int cwid = fm.charWidth('\u200b');
diff --git a/test/java/awt/font/TextLayout/LigatureCaretTest.java b/test/java/awt/font/TextLayout/LigatureCaretTest.java
index e59bcca..d26571f 100644
--- a/test/java/awt/font/TextLayout/LigatureCaretTest.java
+++ b/test/java/awt/font/TextLayout/LigatureCaretTest.java
@@ -35,6 +35,7 @@
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
+import java.awt.GraphicsEnvironment;
import java.awt.font.TextAttribute;
import java.awt.font.TextLayout;
import java.awt.font.TextHitInfo;
@@ -51,19 +52,27 @@
public static void main(String[] args) {
- //testBidiWithNumbers();
+ testBidiWithNumbers();
testLamAlef();
System.out.println("LigatureCaretTest PASSED");
}
- // These values are for TextLayout constructors
- private static final Hashtable map = new Hashtable();
- static {
- map.put(TextAttribute.FONT, new Font("Lucida Sans", Font.PLAIN, 24));
- }
private static final FontRenderContext frc =
new FontRenderContext(null, false, false);
+ private static Font getFontForText(String s) {
+ GraphicsEnvironment ge =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ Font[] fonts = ge.getAllFonts();
+
+ for (Font f : fonts) {
+ if (f.canDisplayUpTo(s) == -1) {
+ return f.deriveFont(Font.PLAIN, 24);
+ }
+ }
+ return null;
+ }
+
/**
* Caret through text mixed-direction text and check the results.
* If the test fails an Error is thrown.
@@ -72,6 +81,13 @@
public static void testBidiWithNumbers() {
String bidiWithNumbers = "abc\u05D0\u05D1\u05D2123abc";
+ Font font = getFontForText(bidiWithNumbers);
+ if (font == null) {
+ return;
+ }
+ Hashtable map = new Hashtable();
+ map.put(TextAttribute.FONT, font);
+
// visual order for the text:
// abc123<gimel><bet><aleph>abc
@@ -116,6 +132,13 @@
final String lamAlef = "\u0644\u0627";
final String ltrText = "abcd";
+ Font font = getFontForText(lamAlef+ltrText);
+ if (font == null) {
+ return;
+ }
+ Hashtable map = new Hashtable();
+ map.put(TextAttribute.FONT, font);
+
// Create a TextLayout with just a lam-alef sequence. There
// should only be two valid caret positions: one at
// insertion offset 0 and the other at insertion offset 2.
diff --git a/test/java/awt/font/TextLayout/TestHebrewMark.java b/test/java/awt/font/TextLayout/TestHebrewMark.java
index 5a390c3..87b907c 100644
--- a/test/java/awt/font/TextLayout/TestHebrewMark.java
+++ b/test/java/awt/font/TextLayout/TestHebrewMark.java
@@ -33,7 +33,7 @@
public static void main(String args[]) {
FontRenderContext frc = new FontRenderContext(null,false,false);
- final String fonts[] = { "Arial", "Arial Hebrew", "Arial Unicode", "Lucida Sans", "Lucida Sans Regular" };
+ final String fonts[] = { "Arial", "Arial Hebrew", "Arial Unicode" };
final char ALEF = '\u05D0'; // a letter
final char QAMATS = '\u05B8'; // a combining mark, should show up UNDER the alef (no advance)
final String string1 = "\u05DE\u05B8\u05E9\u05C1\u05B0\u05DB\u05B5\u05E0\u05B4\u05D9\u05D0\u05B7\u05D7\u05B2\u05E8\u05B6\u05D9\u05DA\u05B8\u05E0\u05BC\u05B8\u05E8\u05D5\u05BC\u05E6\u05B8\u05D4\u05D4\u05B1\u05D1\u05B4\u05D9\u05D0\u05B7\u05E0\u05B4\u05D9\u05D4\u05B7\u05DE\u05BC\u05B6\u05DC\u05B6\u05DA\u05B0\u05D7\u05B2\u05D3\u05B8\u05E8\u05B8\u05D9\u05D5\u05E0\u05B8\u05D2\u05B4\u05D9\u05DC\u05B8\u05D4\u05D5\u05B0\u05E0\u05B4\u05E9\u05C2\u05B0\u05DE\u05B0\u05D7\u05B8\u05D4\u0020\u05D1\u05BC\u05B8\u05DA\u05B0\u05E0\u05B7\u05D6\u05B0\u05DB\u05BC\u05B4\u05D9\u05E8\u05B8\u05D4\u05D3\u05B9\u05D3\u05B6\u05D9\u05DA\u05B8\u05DE\u05B4\u05D9\u05BC\u05B7\u05D9\u05B4\u05DF\u05DE\u05B5\u05D9\u05E9\u05C1\u05B8\u05E8\u05B4\u05D9\u05DD\u05D0\u05B2\u05D4\u05B5\u05D1\u05D5\u05BC\u05DA\u05B8";
diff --git a/test/java/awt/font/TextLayout/TestSinhalaChar.java b/test/java/awt/font/TextLayout/TestSinhalaChar.java
index 396ae2d..0e3fe41 100644
--- a/test/java/awt/font/TextLayout/TestSinhalaChar.java
+++ b/test/java/awt/font/TextLayout/TestSinhalaChar.java
@@ -48,7 +48,7 @@
final JLabel label = new JLabel("(empty)");
label.setSize(400, 100);
label.setBorder(new LineBorder(Color.black));
- label.setFont(new Font("Lucida Bright", Font.PLAIN, 12));
+ label.setFont(new Font(Font.DIALOG, Font.PLAIN, 12));
if(AUTOMATIC_TEST) { /* run the test automatically (else, manually) */
label.setText(Character.toString('\u0DDD'));
} else {
diff --git a/test/java/awt/print/PrinterJob/PrintTextTest.java b/test/java/awt/print/PrinterJob/PrintTextTest.java
index 3ce4c72..31c068c 100644
--- a/test/java/awt/print/PrinterJob/PrintTextTest.java
+++ b/test/java/awt/print/PrinterJob/PrintTextTest.java
@@ -81,14 +81,14 @@
book.append(ptt, portrait);
book.append(ptt, landscape);
- font = new Font("Lucida Sans", Font.PLAIN, 18);
+ font = getPhysicalFont();
name = "Page " + new Integer(page++);
ptt = new StandalonePrintTextTest(name, font, null, false);
p.add(name, ptt);
book.append(ptt, portrait);
book.append(ptt, landscape);
- font = new Font("Lucida Sans", Font.PLAIN, 18);
+ font = getPhysicalFont();
AffineTransform rotTx = AffineTransform.getRotateInstance(0.15);
rotTx.translate(60,0);
name = "Page " + new Integer(page++);
@@ -193,6 +193,36 @@
}
}
+ // The test needs a physical font that supports Latin.
+ private static Font physicalFont;
+ private static Font getPhysicalFont() {
+ if (physicalFont != null) {
+ return physicalFont;
+ }
+ GraphicsEnvironment ge =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ String[] names = ge.getAvailableFontFamilyNames();
+
+ for (String n : names) {
+ switch (n.toLowerCase()) {
+ case "dialog":
+ case "dialoginput":
+ case "serif":
+ case "sansserif":
+ case "monospaced":
+ break;
+ default:
+ Font f = new Font(n, Font.PLAIN, 18);
+ if (f.canDisplayUpTo("AZaz09") == -1) {
+ physicalFont = f;
+ return f;
+ }
+ }
+ }
+ physicalFont = new Font(Font.DIALOG, Font.PLAIN, 18);
+ return physicalFont;
+ }
+
public StandalonePrintTextTest(String page, Font font, AffineTransform gxTx,
boolean fm) {
this.page = page;