3

在我的程序中,我正在从 UTF-8 文件中读取孟加拉语(印度语)文本并显示在 JavaFx 的文本组件中。尽管正在显示字符,但它们的位置不正确。

在这种类型的复杂脚本语言中,一些元音应该在左右两侧环绕字母,但在一些计算机中它以错误的方式显示,即先是元音,然后是字母。

例如,包含“分裂元音”ো 的单词无法正确显示。 https://bug686225.bugzilla.mozilla.org/attachment.cgi?id=559780

在系统中它得到了修复http://www.tariquemahmud.net/?p=35修复的系统中,但在 JavaFx 程序中,问题仍然存在。

显示错误 显示错误

正确的显示 正确的显示

您可以根据计算机中的上述屏幕截图检查以下可执行文件是否正确或错误

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);
    }
}
4

1 回答 1

1

最后,这种支持出现在 JDK 8 (FX 8) 中。使用相同的开发人员预览重新编译并且它工作。

于 2012-11-12T06:37:18.443 回答