JDK源中出现字体渲染的位置在哪里?我试图在TextArea,JTextArea,TextComponent,JTextComponent,Font中寻找一个paint(Graphics g)......没有一个覆盖paint(Graphics g)。字体信息是否转换为GlyphVectors,它们变成了由......绘制的形状?字体信息在何处以及如何绘制到屏幕上?
答案 0 :(得分:1)
来源是sun.font。*,sun.awt.font。*和javax.swing.text。*。
首先,JTextArea,JTextComponent等不会自己绘制,它们使用UI委托。查看BasicTextUI和BasicLabelUI。
似乎UI类拥有GlyphView,这是一个“样式的文本块”。它们(通过几个级别的委托)使用TextLine绘制单行文本。 TextLine包含一个TextLineComponents数组,每个都代表(我认为)一个字符。
那些TextLineComponents是ShapeGraphicAttribute s(它是Shape的容器)或ImageGraphicAttribute(Image的容器)。他们都使用标准的图形绘制方法绘制自己。
这些类中的大多数都包含在JDK中的源代码。
这是一个严格的简化,并且层次结构中的代码和类还有其他路径。我并不认为理解得很好。