diff --git a/openhtmltopdf-pdfbox/src/main/java/com/openhtmltopdf/pdfboxout/PdfBoxTextRenderer.java b/openhtmltopdf-pdfbox/src/main/java/com/openhtmltopdf/pdfboxout/PdfBoxTextRenderer.java
index efa481d01..f0599ec75 100644
--- a/openhtmltopdf-pdfbox/src/main/java/com/openhtmltopdf/pdfboxout/PdfBoxTextRenderer.java
+++ b/openhtmltopdf-pdfbox/src/main/java/com/openhtmltopdf/pdfboxout/PdfBoxTextRenderer.java
@@ -296,14 +296,25 @@ public int getWidth(FontContext context, FSFont font, String string) {
float result = 0f;
try {
- // First try using the first given font in the list.
- result = ((PdfBoxFSFont) font).getFontDescription().get(0).getFont().getStringWidth(string) / 1000f * font.getSize2D();
+ if (((PdfBoxFSFont) font).getFontDescription() == null
+ || ((PdfBoxFSFont) font).getFontDescription().isEmpty()) {
+ XRLog.render(Level.WARNING, "Font list is empty.");
+ } else {
+ // Go through the list of font descriptions
+ for (FontDescription fd : ((PdfBoxFSFont) font).getFontDescription()) {
+ if (fd.getFont() != null) {
+ result = fd.getFont().getStringWidth(string) / 1000f * font.getSize2D();
+ break;
+ } else {
+ XRLog.render(Level.WARNING, "Font is null.");
+ }
+ }
+ }
} catch (IllegalArgumentException e2) {
// PDFont::getStringWidth throws an IllegalArgumentException if the character doesn't exist in the font.
// So we do it one character by character instead.
result = getStringWidthSlow(font, string) / 1000f * font.getSize2D();
- }
- catch (IOException e) {
+ } catch (IOException e) {
throw new PdfContentStreamAdapter.PdfException("getWidth", e);
}