2010-04-29 22 views
2

我有一个java applet应用程序,我在其中使用丰富的文本区域。我把URDU写成巴基斯坦的国家语言。我设法使用uni代码。问题是,当我在文本区域中编写乌尔都语并为每行选择一种字体和颜色时,它会执行所有这些操作,但是当我使用UTF-8编码保存此文件并再次打开时,它会显示所有格式为我选择的格式最后一行。如何在读取保存文件时管理文本的格式?

我的要求是打开文件,因为它被保存。我的意思是每个文件应该具有与保存前一样的格式。

即使在赏金之后,任何人都可以帮助我,我仍然遇到这个问题!日期为07-06-2010。

+0

这与java和applets有什么关系? – aioobe 2010-04-29 10:19:21

+0

我已经在一个小程序中实现了这个编辑器 – Badr 2010-05-21 07:23:49

+0

您使用哪个类作为Rich Text Area?它可能已经有一个选项来保存格式化文本。例如,javax.swing类倾向于使用javax.swing.text.Document来表示编辑器中的数据,包括字体。请参阅DefaultStyledDocument。它可以由XMLEncoder存储。 – extraneon 2010-05-21 19:31:40

回答

1

看到,当你实际使用某种字体和颜色格式化文本时,它会生成一些RTF/HTML代码吗?您应该尝试获取文本区域的RTF/HTML,以便可以将所有格式保存到文件中。

基本上所有的文本文件,所以你需要得到它与所有代码的权利?

检查此链接的RTF格式文本保存机制。

Java JTextPane RTF Save

同时检查一个HTMLEditorKit获取更多信息。

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/html/HTMLEditorKit.html

谢谢。

+0

我能够保存文件,但其格式不是我所需要的,我不能再打开它,因为我保存它仍然存在问题。 – Badr 2010-05-27 05:21:24

0

UTF-8是代码分配给字符。为了方便起见,最终的127个代码在ASCII和UTF-8中是相同的。对于所有字符代码不同。

UTF-8字体有一个字符映射(cmap),它将unicode代码分配给它们的字形。有很少的字体覆盖unicode范围的大部分(Arial Unicode和Gentium,我知道,还有一些其他字体),为了在渲染解决方案中获得全面覆盖,必须混合字体。

为了能够显示任意Unicode文本,您因此必须创建一组字体,其中一个字体作为缺省字体的默认字体和备用字体,用于不包含默认字体的unicode字符的备用字体。返回Java和您的文本窗格:如果您为文本窗格中的给定部分文本选择一种字体,这只意味着渲染文本字形将从所选字体中使用。但是文本本身并不以任何方式与字体相关联。

所以,你有两个选择:

  1. 你不只是存储UTF-8文本, 也是信息有关 选择的字体,或
  2. 更有趣: 您存储文本简单地作为UTF-8 并在将 文本加载到文本面板后应用字体!
相关问题