JDK:字体大小是如何生效的

简介: JDK:字体大小是如何生效的

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。


目录
相关文章
|
Java 索引
全网首发:JDK/Java对于TTC字体文件的支持研究
全网首发:JDK/Java对于TTC字体文件的支持研究
405 0
全网首发:JDK/Java对于TTC字体文件的支持研究
|
Java
关于JDK支持TTC字体文件的问题及解决办法,已上报JAVA
关于JDK支持TTC字体文件的问题及解决办法,已上报JAVA
153 0
|
Java
JDK本身是支持浮点字体的
JDK本身是支持浮点字体的
59 0
|
Java
JDK中字体的高度信息ascent/descent/leading是怎么计算的
JDK中字体的高度信息ascent/descent/leading是怎么计算的
152 0
|
Java 索引
关于JDK/Java支持TTC字体的思路
关于JDK/Java支持TTC字体的思路
134 0
|
缓存 Java
全网首发:JDK绘制文字:七、使用字体图像进行绘制
全网首发:JDK绘制文字:七、使用字体图像进行绘制
113 0
|
Java
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
99 0
|
Java Windows
JDK windows加载字体文件的函数
JDK windows加载字体文件的函数
110 0
|
Java
OFFICE技术讲座:JDK绘制旋转斜体字体的效果
OFFICE技术讲座:JDK绘制旋转斜体字体的效果
132 0
OFFICE技术讲座:JDK绘制旋转斜体字体的效果
|
Java 程序员
OFFICE技术讲座:JDK绘制旋转字体的效果(垂直)
OFFICE技术讲座:JDK绘制旋转字体的效果(垂直)
126 0
OFFICE技术讲座:JDK绘制旋转字体的效果(垂直)