Skip to content

Commit b7111bb

Browse files
author
Benoit Lagae
committed
Catch edge case: TextRenderer with POSITION & TOP
Resolve exception in `TextRenderer::updateFontAndText()` when the FONT property is a String DEVSIX-1359
1 parent 7731715 commit b7111bb

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

layout/src/main/java/com/itextpdf/layout/renderer/TextRenderer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1259,7 +1259,7 @@ private boolean isGlyphPartOfWordForHyphenation(Glyph g) {
12591259

12601260
private void updateFontAndText() {
12611261
if (strToBeConverted != null) {
1262-
font = getPropertyAsFont(Property.FONT);
1262+
font = resolveFirstPdfFont();
12631263
text = convertToGlyphLine(strToBeConverted);
12641264
otfFeaturesApplied = false;
12651265
strToBeConverted = null;

layout/src/test/java/com/itextpdf/layout/renderer/TextRendererTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,14 @@ This file is part of the iText (R) project.
4848
import com.itextpdf.kernel.pdf.PdfWriter;
4949
import com.itextpdf.layout.Document;
5050
import com.itextpdf.layout.element.Text;
51+
import com.itextpdf.layout.font.FontProvider;
5152
import com.itextpdf.layout.layout.LayoutArea;
5253
import com.itextpdf.layout.layout.LayoutContext;
5354
import com.itextpdf.layout.layout.LayoutResult;
55+
import com.itextpdf.layout.property.Property;
5456
import com.itextpdf.test.ExtendedITextTest;
5557
import com.itextpdf.test.annotations.type.UnitTest;
58+
5659
import org.junit.Assert;
5760
import org.junit.Test;
5861
import org.junit.experimental.categories.Category;
@@ -84,4 +87,16 @@ public void nextRendererTest() {
8487
Assert.assertEquals(result1.getOccupiedArea(), result2.getOccupiedArea());
8588
}
8689

90+
@Test
91+
public void setTextException() {
92+
final String val = "other text";
93+
final String fontName = "Helvetica";
94+
TextRenderer rend = (TextRenderer) new Text("basic text").getRenderer();
95+
FontProvider fp = new FontProvider();
96+
fp.addFont(fontName);
97+
rend.setProperty(Property.FONT_PROVIDER, fp);
98+
rend.setProperty(Property.FONT, fontName);
99+
rend.setText(val);
100+
Assert.assertEquals(val, rend.getText().toString());
101+
}
87102
}

0 commit comments

Comments
 (0)