【问题标题】:How to add custom font to JFreeChart with CP1250 encoding如何使用 CP1250 编码向 JFreeChart 添加自定义字体
【发布时间】:2019-08-20 10:08:50
【问题描述】:

我在设置 JFreeChart 图表标题字体的编码时遇到问题。我创建了 pdf 并向其中添加了图表。我使用 itext 库创建了自定义字体并将编码设置为 CP1250。特殊字符显示在 pdf 中,我将此字体映射到 java.awt.Font 但图表标题上没有显示相同的字母。有没有其他方法可以实现这个目标?

JFreeChart chart = ChartFactory.createBarChart3D(null,"Rok","Liczba wszystkich emisji", dataset, PlotOrientation.VERTICAL, true, true, true);
        BaseFont baseFont = BaseFont.createFont(BaseFont.HELVETICA,BaseFont.CP1250, BaseFont.CACHED);
        Font font = new Font(baseFont, 9);
        document.add(new Paragraph("śćżźółąę abcdefhgijklmnop", font));
        DefaultFontMapper defaultFontMapper = new DefaultFontMapper();
        java.awt.Font titleFont = defaultFontMapper.pdfToAwt(baseFont,20);
        StandardChartTheme chartTheme = new StandardChartTheme("theme");
        chartTheme.setRegularFont(titleFont);
        ChartFactory.setChartTheme(chartTheme);
        chart.setTitle(new TextTitle("śćżźółąę abcdefhgijklmnop"));
        chart.getTitle().setFont(titleFont);

【问题讨论】:

    标签: java itext jfreechart


    【解决方案1】:

    不确定。但也许您还需要为主题的 ExtraLarge 和 Large 变体设置字体。也许尝试这样的事情:

        JFreeChart chart = ChartFactory.createBarChart3D(null,"Rok","Liczba wszystkich emisji", dataset, PlotOrientation.VERTICAL, true, true, true);
        BaseFont baseFont = BaseFont.createFont(BaseFont.HELVETICA,BaseFont.CP1250, BaseFont.CACHED);
        Font font = new Font(baseFont, 9);
        document.add(new Paragraph("śćżźółąę abcdefhgijklmnop", font));
        DefaultFontMapper defaultFontMapper = new DefaultFontMapper();
        java.awt.Font titleFont = defaultFontMapper.pdfToAwt(baseFont,20);
        StandardChartTheme chartTheme = new StandardChartTheme("theme");
        chartTheme.setExtraLargeFont(font.deriveFont(24f));
        chartTheme.setLargeFont(font.deriveFont(16f));
        chartTheme.setRegularFont(font.deriveFont(12f));
        chartTheme.setSmallFont(font.deriveFont(10f));
        ChartFactory.setChartTheme(chartTheme);
        ChartFactory.setChartTheme(chartTheme);
        chart.setTitle(new TextTitle("śćżźółąę abcdefhgijklmnop"));
        chart.getTitle().setFont(titleFont);
    

    【讨论】:

    • 与其花很多时间,不如使用pdf字体,在CP1250编码中绘制一个字符串,并将其位置设置为图表标题位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 2012-09-01
    • 1970-01-01
    • 2019-09-05
    • 2013-08-31
    相关资源
    最近更新 更多