我一直在使用 itext (lowagie) sdk 在 java 中使用 ttf 字体。我想通过例子来解释我的问题。
我有一个表格行,我想在其中显示一些文本(孟加拉语 ttf)。文本应该占用 2 行,但它占用 3 行。问题是,第一行只显示了 5 个单词,并且在结尾处显示了巨大的空白,看起来好像可以轻松占用 8 个单词。
请注意,如果我使用英语,我不会遇到这样的问题。我认为孟加拉语 unicode 导致了问题。如果有任何关于这个问题的锻炼,那就太好了。
我通过示例重新解释了我的问题:
Output:
Line1: AAA BBBB CCCC DDDD EEEE <BLANK SPACE BLANK SPACE>ENDOFLINE
Line2: CC DD EE PP QQ RR SS EE <BLANK SPACE BLANK SPACE>ENDOFLINE
Line3: CC DD EE PP QQ RR <BLANK SPACE BLANK SPACE>ENDOFLINE
Expected:
Line1: AAA BBBB CCCC DDDD EEEE CC DD EE PP #ENDOFLINE
Line2: QQ RR SS EE CC DD EE PP QQ RR #ENDOFLINE
源模块:
fontpath="D://Bangla.ttf";
this.banglaFont = BaseFont.createFont(fontpath,BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
PdfPTable bTable = new PdfPTable(1);
bTable.getDefaultCell().setBorder(1);
bTable.setWidthPercentage(100);
bTable.addCell(backTableRow1cell(28.5f, 8.8f, CardStr.GOVTNOTE_BNG));
public static PdfPCell backTableRow1cell(float hght, float fontSize, String txt) {
PdfPCell c1 = new PdfPCell();
c1.setFixedHeight(hght);
c1.setHorizontalAlignment(Element.ALIGN_RIGHT);
ITextUtil.setCellBorder(c1, 0, 0, 1, 0);
ITextUtil.setCellPadding(c1, 0, 7, 0, 0);
c1.addElement(TextProcessing.designPar(TextProcessing.getFontStyle(VoterCard.banglaFont, fontSize, Color.BLACK, Font.NORMAL), txt, Element.ALIGN_LEFT, 8, 2));
return c1;
}
public static Paragraph designPar(Font fnt, String txt, int alignment, int leading, int afterspacing) {
Paragraph phrs = new Paragraph(txt, fnt);
phrs.setLeading(leading);
phrs.setAlignment(alignment);
return phrs;
}
public static Font getFontStyle(BaseFont baseFont, float size, Color clr, int FontStyle) {
Font fnt = new Font(baseFont, size);
fnt.setColor(clr);
fnt.setStyle(FontStyle);
return fnt;
}