webkit paint html 调用栈

本文详细介绍了WebKit浏览器中字体绘制的具体流程,从WebCore模块的Font类中的drawGlyphs方法开始,逐步展示了字体如何被逐级调用并最终呈现在界面上的过程。涉及的技术包括字体缓冲、简单文本绘制及文本绘制等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,同所有浏览器一样,webkit也是在render 完毕以后,发送paint 消息给view,由view画出所有内容
2,在WebCore::Font::drawGlyphs设置断点,调用栈如下

#0  WebCore::Font::drawGlyphs
#1  0x4115c088 in WebCore::Font::drawGlyphBuffer
#2  0x4115bea9 in WebCore::Font::drawSimpleText
#3  0x4115c10d in WebCore::Font::drawText
#4  0x4105db97 in WebCore::GraphicsContext::drawText
#5  0x410a004a in WebCore::InlineTextBox::paint
#6  0x4109ca59 in WebCore::InlineFlowBox::paint
#7  0x41142f44 in WebCore::RootInlineBox::paint
#8  0x410d624a in WebCore::RenderFlow::paintLines
#9  0x410aa685 in WebCore::RenderBlock::paintContents 
#10 0x410aad3d in WebCore::RenderBlock::paintObject
#11 0x410aa0ed in WebCore::RenderBlock::paint
#12 0x410aa8c2 in WebCore::RenderBlock::paintChildren
#13 0x410aa6a7 in WebCore::RenderBlock::paintContents
#14 0x410aad3d in WebCore::RenderBlock::paintObject
#15 0x410aa0ed in WebCore::RenderBlock::paint
#16 0x410aa8c2 in WebCore::RenderBlock::paintChildren
#17 0x410aa6a7 in WebCore::RenderBlock::paintContents  //开始递归paint
#18 0x410aad3d in WebCore::RenderBlock::paintObject
#19 0x410aa0ed in WebCore::RenderBlock::paint
#20 0x410e748c in WebCore::RenderLayer::paintLayer
#21 0x410e7687 in WebCore::RenderLayer::paintLayer
#22 0x410e6ea8 in WebCore::RenderLayer::paint
#23 0x41027307 in WebCore::Frame::paint
#24 0x411963e7 in QWebFrame::viewportPaintEvent
#25 0x40319f67 in QScrollView::eventFilter ()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值