alibaba / alibaba/simpleimage

FontManager.getFont("方正黑体");这个方法返回值为null

Open
#15 1 comment 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.