Font()
传递字号,保存在size字段中。
Font.deriveFont()
调用一个私有浮点构造器。从这里可以看到,JDK是支持浮点字体的。
泰山JDK为此专门修改,开放并扩充了构造函数,允许传递浮点。
pointSize的命名,疑似不准确。这里应该是像素?或者是FreeType的磅?
Font.getSize2D()
获得浮点字号。
SunGraphics2D.checkFontInfo() AffineTransform devAt, textAt=null; if (font.isTransformed()) { textAt = font.getTransform(); textAt.scale(ptSize, ptSize);
也就是构造了一个变形器。
Font2D(TrueTypeFont).getStrike()
FontStrikeDesc()
FileFontStrike()
double[] matrix = new double[4];
AffineTransform at = desc.glyphTx;
at.getMatrix(matrix);
字号信息保存在matrix中
createScalerContextXY() Java_sun_font_FreetypeFontScaler_createScalerContextNative freetypeScaler.c
从传递的参数matrix中获取数组。
ptsz = euclidianDistance(dmat[2], dmat[3]);
context->ptsz = (int)(ptsz * 64);
setupFTContext
FT_Set_Char_Size(scalerInfo->face, 0, context->ptsz, 72, 72);
这个函数需要的字号有6位定点小数,所以前面乘64。