孟加拉语在Kallastush字体中的联合字母在java中搞砸了

时间:2016-05-17 12:51:29

标签: java image text converter

我用Java编写了一个程序(从各种来源收集,我是初学者),它使用.txt文件编写的文本(bengali),并使用drawString函数将其转换为.bmp图像。代码是:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
import java.util.*;
import java.awt.font.*;
import java.awt.geom.*;

class TextToImageDemo
{

    public static void main(String[] args) throws IOException
    {
        String sampleText = "আমার",s="নাম";
        BufferedReader br = null;
        for (int u=1;u<=9;u++)
            {
                
                try
                    {
                        br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("E:\\Java\\bengtext\\f2-0"+u+".txt")),"UTF-8"));
                        
                        while ((sampleText = br.readLine()) != null)
                            {
                                System.out.println(sampleText);
                                s=sampleText;
                            }
                    }
                catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                finally
                    {
                        try
                            {
                                if (br != null)br.close();
                            }
                        catch (IOException ex)
                            {
                                ex.printStackTrace();
                            }
                    }
                
                
                 //Image file name
                 String fileName = "Image";
                 
                 //create a File Object
                 File newFile= new File("./" + fileName + ".jpeg");
                 
                 //create the font you wish to use
                 Font font = new Font(/*Lohit Bengali*/"Kalpurush", Font.PLAIN, 50);
                 
                 //create the FontRenderContext object which helps us to measure the text
                 FontRenderContext frc = new FontRenderContext(null, true, true);
                 
                 //create a BufferedImage object
                 BufferedImage image = new BufferedImage(2000, 200,   BufferedImage.TYPE_INT_RGB);
                 
                 //calling createGraphics() to get the Graphics2D
                 Graphics2D g = image.createGraphics();
                 System.out.println(s);
                 //set color and other parameters
                 g.setColor(Color.WHITE);
                 g.fillRect(0, 0, 2000, 200);
                 g.setColor(Color.BLACK);
                 g.setFont(font);
                 FontMetrics fm=g.getFontMetrics();
                 Rectangle r=new Rectangle(fm.getStringBounds(s, g).getBounds());
                 String d=s.substring(1,s.length());
                 g.drawString(d, image.getWidth()/2-r.width/2, image.getHeight()/2+r.height/2);     
                 //releasing resources
                 g.dispose();
                 
                 try
                     {
                         FileOutputStream fos = new FileOutputStream("E:\\Java\\bengtext\\f2-0"+u+".bmp");
                         ImageIO.write(image,"bmp",fos);
                         fos.close();
                     }
                 catch(Exception ex)
                     {
                         ex.printStackTrace();
                     }
            }  
    }
}

我的主要问题在于像

这样的文字
  

দ্বিতীয়তা,একাগ্রতা,“জ্ঞাননরনেরএকটিমাত্রউপায়

形成像

The problem with র's

如何解决这个问题?

编辑:

在检查所有可用的263种字体后,我发现其中只有6种能够正确显示bengali。但在他们每个人中,联合词的问题如上图所示。所以问题是:这里发生的确切问题是什么? JAVA无法正确读取关节词,还是无法正确绘制它们?

其次,如何让java正确绘制关节词?

0 个答案:

没有答案