FULL PRODUCT VERSION :
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) Client VM (build 23.3-b01, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Windows 7 64-bit
Microsoft Windows [Version 6.1.7601]
A DESCRIPTION OF THE PROBLEM :
The syriac fonts are not properly supported in AWT and Swing text components (e.g. TextArea, JTextArea).
There's a report on the web made by someone a long time ago (2006) which details the problems (images included) with Java/Swing and Syriac writing:
http://nazianzos.fltr.ucl.ac.be/ReportSyriac.htm
Section "The problem when displaying syriac characters in java"
The problems are the same even now in Java SE 6u35 and 7u7.
The main problem that we found is that, even when the fonts work (tested with "Estrangelo Edessa" and "Estrangelo Talada"), the characters in a word are not linked together.
Interestingly enough they seem to work fine within TextField.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The characters in each word should be linked together.
Copy the Syriac text from the running application and paste it into Notepad/Wordpad. You will see how the characters should look (correctly linked).
ACTUAL -
The characters in each word are not linked together.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextArea text = new JTextArea();
Font m_Font = new Font ("Estrangelo Edessa", Font.PLAIN, 30);
text.setFont( m_Font );
text.setText( "\u0712\u072A\u071D\u072B\u071D\u072C \u0710\u071D\u072C\u0718\u0717\u071D \u0717\u0718\u0710 \u0721\u0720\u072C\u0710\n" +
"\u071f\u072c\u0712\u071d\u0722\u0722 \u072c\u0718\u0712 \u0722\u0712\u071d\u0718\u0308\u072c\u0710 \u0715\u0726\u0720\u0720\u0718\u0308\u0723\u0718\u0726\u0710 \u071a\u0722\u0308\u0726\u0710 \u0710\u071d\u071f \u0715\u0712\u0726\u0723\u071d\u0308\u0729\u072c\u0710");
frame.getContentPane().add(new JScrollPane(text));
frame.setSize(new Dimension(600, 200));
frame.setVisible(true);
}
---------- END SOURCE ----------