1
使用iText 7(7.0.2),如何找到包含需要不同字体的字符的字符串的宽度?In Itext 7找到需要多种字体的字符串的宽度
例如,在下面的代码中,有英文和俄文两种字符。我想根据由FontProvider分配给每个字符的字体来查找该字符串的宽度。
String s = "Hello world! Здравствуй мир! Hello world! Здравствуй мир!";
FontProvider sel = new FontProvider();
sel.addFont(fontsFolder + "NotoSans-Regular.ttf");
sel.addFont(fontsFolder + "Puritan2.otf");
如果字符串只有可以用一个字体渲染的人物,我可以这样做:
PdfFont font = PdfFontFactory.createFont(fontsFolder + "Puritan2.otf", PdfEncodings.IDENTITY_H, true);
font.getWidth(s, 12f);
由于没有对FontProvider本身的getWidth方法,我需要遍历字符串的各部分,并根据所使用的字体累加每个字符串的长度。寻找一个如何做到这一点的例子。
谢谢!比我想象的要简单。欣赏基于1000的宽度和字体大小的解释。 –
如何知道首选字体? –
@JoeEltgroth,如果你不知道首选字体,你可以传递任何字符串,甚至是空字符串。首选字体就像在HTML中指定font-family一样。另一种字体将用于“首选”字体无法呈现所需字形的情况。但是,如果你在你的字体提供者中有“Arial”和“Times New Roman”,并且你将“Arial”设置为首选字体,那么Arial将具有更高的优先级, –