FontManager.getFont("方正黑体");这个方法返回值为null
- Dominant language
- Java
- Stars
- 1k
- Forks
- 377
- PR merge metrics
- No merged PRs in 30d
Description
这个我是测试给图片添加文字水印的时候测试发现的 ,空指针,原因是创建FootnoteDrawTextItem对象时没有指定字体,而源码使用的是默认字体FontManager.getFont("方正黑体"); 这个返回的是空,又去看了FontManager源码,发现cache这个没有是个空map 然后有个 静态块,感觉是这里加载的,但是没有写实现
大概看了下FontManager这块的源码,
com.alibaba.simpleimage.SimpleImageException: java.lang.NullPointerException
at com.alibaba.simpleimage.render.WriteRender.render(WriteRender.java:218)
at com.mljr.carrier.test.SimpleImageDemo.doDrawImageText(SimpleImageDemo.java:326)
at com.mljr.carrier.test.SimpleImageDemo.testFootnoteDrawTextItem(SimpleImageDemo.java:291)
at com.mljr.carrier.test.SimpleImageDemo.main(SimpleImageDemo.java:297)
Caused by: java.lang.NullPointerException
at com.alibaba.simpleimage.render.FootnoteDrawTextItem.drawText(FootnoteDrawTextItem.java:110)
at com.alibaba.simpleimage.util.ImageDrawHelper.drawText(ImageDrawHelper.java:54)
at com.alibaba.simpleimage.render.DrawTextRender.render(DrawTextRender.java:80)
at com.alibaba.simpleimage.render.WriteRender.render(WriteRender.java:213)
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with FontManager and its static initialization, then trace the default-font path from FootnoteDrawTextItem.drawText at line 110 through ImageDrawHelper and DrawTextRender. Reproduce the failure using SimpleImageDemo.testFootnoteDrawTextItem and inspect the stack trace from WriteRender.render. Done means the default font lookup no longer returns null and the text-watermark path avoids this NullPointerException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- computer-graphics
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100