上周通知同事:更新泰山JDK8(u323-420),艺术字粗体问题不需要专门判断,新增代码可删除。这是怎么回事呢?
某日同事找吾,说艺术字的粗体出问题了,就是没效果。吾当时就愣了:泰山JDK8在修改粗体的时候,吾反复确认过几次,确保兼容原来的粗体方式,怎么现在粗体出问题了?当时大脑飞快的思考哪里出错,并进行了验证,发现是权重不同导致的。于是增加了一个参数,区别是不是艺术字。
合并OpenJDK8-u322的时候,吾仔细看了freetypeScaler.cpp的代码,发现原来的代码中存在两处粗体斜体处理。吾只修改了其中一处,艺术字时走的另外一处,所以出错了。
原因找到了,怎么解决呢?一般人都是把修改的部分再复制一遍。这是六石编程学极力反对的。正确做法是:
- 新建一个处理粗体斜体的函数,复制正确的代码
- 删除两处处理粗体斜体的代码,改为调用新增函数