当前位置: 首页 > 知识库问答 >
问题:

为什么使用Arial Unicode MS无法正确呈现古吉拉特语-印度语文本?

姚棋
2023-03-14

这是关于如何将古吉拉特邦印第安语字体导出为pdf的问题的后续讨论@iText的QA工程师amedee van gasse让我向相关mcve发布一个针对iText的问题。

为什么此unicode序列未正确呈现?

应如下所示进行渲染:

હિપ્સ , 还使用unicode转换器进行了测试

但是,此代码(示例改编自iText:第11章:选择正确的字体)

public class FontTest {

    /** The resulting PDF file. */
    public static final String RESULT = "fontTest.pdf";
    /** the text to render. */
    public static final String TEST = "\u0ab9\u0abf\u0aaa\u0acd\u0ab8";

    public void createPdf(String filename) throws IOException, DocumentException {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
        document.open();
        BaseFont bf = BaseFont.createFont(
            "ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        Font font = new Font(bf, 20);
        ColumnText column = new ColumnText(writer.getDirectContent());
        column.setSimpleColumn(36, 730, 569, 36);
        column.addElement(new Paragraph(TEST, font));
        column.go();
        document.close();
        System.out.println("DONE");
    }

    public static void main(String[] args) throws IOException, DocumentException {
        new FontTest().createPdf(RESULT);
    }
}

生成此结果:

看起来不同于

હિપ્સ

我用itextpdf-5.5.4进行了测试。jar,itextpdf-5.5.9。jar和itext-2.1.7。jar(与jasper报告一起分发)

它使用的字体与MS Office ARIALUNI一起分发。TTF可以从这里下载Arial Unicode MS*下载时可能会遇到一些法律问题,请参见Mike“Pomax”Kamermans的评论

共有2个答案

郭弘方
2023-03-14

使用最新的排版jar文件构建您的应用程序,该文件将解决您在pdf中的古吉拉特语字体渲染问题。

高承望
2023-03-14

无论您选择哪种字体,iText5和iText2(顺便说一下,这是一个非常过时的版本)都不支持Indi脚本的呈现。

呈现印度语脚本与任何拉丁语脚本都不相似,因为需要采取一系列额外的操作来获得正确的结果,例如,需要根据语言规则首先对某些字符重新排序。

这是iText公司已知的问题。

iText5中有一个古吉拉特邦的存根实现,名为GujaratiLigaturizer,但实现非常差,您无法期望使用它获得正确的结果。

您可以尝试使用此连字器处理字符串,然后按以下方式输出结果字符串:

IndicLigaturizer g = new GujaratiLigaturizer();
String processed = g.process(inputString);
// proceed with the processed string
 类似资料:
  • 我想在jasper report 5.1版导出的PDF报告中显示不同的字体(古吉拉特邦印第安语)。 我尝试的内容:运行工具后,在位置下方打开步骤1: 工具- 安装了字体“Arial Unicode MS”,并创建了jar文件。JARPER报告的类路径中存在Jar文件。 链接如下:1)字体2)示例字体 第二步:irfonts。xml 默认情况下,jasper报告给出了我将其更改为的此文件中的其他字体

  • 我正在为jasper reports使用I-report 5.5.0。我需要将印地语文本导出为PDF格式,但印地语部分正在转换为 。 我已经使用了字体扩展,但没有帮助: 字体名称:“lohit Devanagari” PDF嵌入:选中 PDF编码:Identity-H 我也尝试过其他印地语字体,但到目前为止没有任何效果。。

  • 我正在尝试一个用户界面3.5,所有组件都工作正常,除了selectonemenu,它不能正确渲染。 它的文本字段在选择任何下拉字段时不显示。 我不能发布图片,因为我没有那么多的声誉 代码 屏幕拍摄 我怎样才能解决这个问题?

  • 问题内容: 我已经尝试了两个类组件: 并使用功能组件: 页面上显示的x值永远不会改变,或者似乎是随机改变的。是什么赋予了? 问题答案: 当您告诉React某些更改时,React仅知道使用其为状态管理提供的功能来重新渲染: 另外,功能组件应该是 纯 组件(没有副作用),因此要更新它们,React会给我们带来麻烦: 因此,您不能只是分配给一个变量并期望React知道:您必须使用它的更新函数,以便它知道

  • 问题内容: 我正在使用 JSF 2.1.8 实现Web应用程序,而 ui:include 标记存在问题。我有这个代码 该 navigationManagerSystem bean是JSF会话管理,在这一段代码首先呈现的,它应该是显示包括路径内容。如果我以这样的常量执行此操作,则包括这些工作,但是如果我将其放入变量中则不行,即使我已经看到变量在屏幕打印之前就保持了该值。我不知道它是否可以与包含/sy

  • 问题内容: 我正在尝试在内添加HTML代码段,但无法使用包含功能。看来的当前语法与以前的语法不同:我看到许多示例使用 但是在官方文档中,它说使用 但随后在页面下方显示为 无论如何,我尝试了 我的代码片段不是很多代码,但是有很多事情要做。这可能会引起问题,所以我只用单词代替了内容,仍然一无所获。 我还尝试过直接在页面中声明模板,如下所示: 并遍历了引用脚本的所有变体,仍然一无所获。 我的页面还有很多