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

字体(Myanmar3)在iText中无法正确呈现

浦出野
2023-03-14

在jasper reports一节中,pdf问题中有一个jasper report字符编码。

jasper报告中无法解决该问题,因为它似乎是一个itext问题(使用itext v.5.5.4)

示例代码:

public class FontTest {

    /** The resulting PDF file. */
    public static final String RESULT = "pdf/fontTest.pdf";
    /** the text to render. */
    public static final String TEST = "\u1005\u101B\u1004\u103A\u1038\u1021\u1004\u103A\u1038\u1019\u103B\u102C\u1038\u1011\u100A\u103A\u101E\u103D\u1004\u103A\u1038\u1001\u103C\u1004\u103A\u1038";

    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(
            "lib/mm3.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();
    }

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

可在mm3下载字体。ttf公司

将错误渲染为:

它应该呈现为(在浏览器中使用相同的ttf)

只是出于好奇发生了什么事?(看起来像是某些字符,带虚线的圆圈应该向后移动,但这不会发生)。

这是<代码>的问题吗。tff或iText不支持此类字体?

共有2个答案

程正阳
2023-03-14

请尝试以下代码

string ZawgyiOnePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ZawgyiOne.ttf");
            BaseFont ZawgyiOneBaseFont = BaseFont.CreateFont(ZawgyiOnePath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

 iTextSharp.text.Font ZawgyiOneFont = new iTextSharp.text.Font(ZawgyiOneBaseFont, 9);
柳英资
2023-03-14

将Bruno Lowagie(itext的原始开发人员)的评论转换为答案(社区wiki)

您看到的行为是由iText不支持连字这一事实引起的。(github.com 5.5.8上的当前版本)

您需要下一个未发布的iText版本。我们将于明年(2016年)发布测试版,但仅面向客户

感谢@Rad Lexus提供的一些赏金,关于在iText中直接访问openType字形的其他问题有了答案在iText中访问OpenType字形变体

 类似资料:
  • 我正在尝试获得Android ICS的卡纳达字体支持。我的Xperia Neo L手机运行Android ICS 4.0.4,并安装了卡纳达字体(Lohit Kannada.ttf)。我还将Lohit Kannada字体作为fallback\u字体中的系列集。框架中的xml。之后,我可以看到卡纳达字体在浏览器中呈现,但不支持复杂的脚本。图示符没有以正确的方式呈现,尽管它只是可读的。其他印度语如泰米

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

  • Localhost很好,但上传到服务器时不工作 %pdf-1.3 1 0 obj<>Endobj2 0 obj<>Endobj3 0 obj<>>/Mediabox[0.000 0.000 595.280 841.890]>>Endobj4 0 obj<>stream x 2 300 p@&b m-l l,br b 5 jr k drr f b k endstream endobj 8 0 obj

  • 在控制台上获取以下第一行: 35026:1978749]CoreText注意:客户端请求的名称“.SFNS-Regular”,它将获得Times-Roman而不是预期的字体。所有系统UI字体访问都应通过适当的API,如CTFontCreateUIFontForLanguage()或[NSFont systemFontOfSize:]。2021 06月09日00:00:46.808 java[350

  • 问题内容: 我正在建立一个新的WordPress主题(不知道是否相关),并且这个问题一直困扰着我。 我已经从Google Webfonts(包括CSS 部分)中加载了Roboto Slab 。在其他所有浏览器上,除了Google Chrome之外,字体都可以正常显示。当我第一次在Google Chrome浏览器中加载网站时,使用该自定义字体的文本根本不会显示(即使字体库将佐治亚州作为后备- )。当

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