在我的程序中,我正在从UTF-8文件中读取一个Bangla(印度语)文本并显示在JavaFx的Text组件中。虽然正在显示字符,但它们的位置不正确。
在这种类型的复杂脚本语言中,一些元音应该在左侧和右侧包围字母,但在某些计算机中它以错误的方式显示,即首先是元音,然后是字母。
e.g。包含“拆分元音”words的单词无法正确显示。 https://bug686225.bugzilla.mozilla.org/attachment.cgi?id=559780
在系统中,它使用http://www.tariquemahmud.net/?p=35修复,但在JavaFx程序中,问题仍然存在。
显示错误
纠正Deisplay
根据计算机上面的屏幕截图,您可以检查以下可执行文件是否正确或错误
http://dl.dropbox.com/u/655237/share/BanglaTest.zip
我正在使用以下代码
package banglatest;
import java.io.File;
import java.io.FileNotFoundException;
import java.net.MalformedURLException;
import java.util.Scanner;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class BanglaTest extends Application {
@Override
public void start(Stage primaryStage) throws MalformedURLException {
Text text = new Text();
File file = new File("data.txt");
StringBuffer sb = new StringBuffer();
try {
Scanner scanner = new Scanner(file,"UTF-8");
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
sb = sb.append(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
text.setText(sb.toString());
Font font = Font.loadFont(new File("bangla.ttf").toURL().toExternalForm(), 20);
text.setFont(font);
StackPane root = new StackPane();
root.getChildren().add(text);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
答案 0 :(得分:1)
最后,这种支持来自JDK 8(FX 8)。 使用相同的开发人员预览进行重新编译,并且工作正常。