• Caolán McNamara's avatar
    fdo#54629 MultiSalLayout::GetBoundRect always uses level 0 fallback font · 98f56121
    Caolán McNamara yazdı
    ...in X11SalGraphics::GetGlyphBoundRect
    
    In MultiSalLayout::GetBoundRect we loop through each fallback font and union
    each level's GetBoundRect to get the result, which seems reasonable, except
    that for each level that means a call to SalLayout::GetBoundRect which calls
    X11SalGraphics::GetGlyphBoundRect.
    
    Those sublevel SalLayouts don't know that they are sublevels so they never set
    the level bits on their glyphs. Which results in
    X11SalGraphics::GetGlyphBoundRect always searching for that glyph in the level
    0 font, so there's a mismatch between the font the SalLayout's are created to
    use and the font that gets used.
    
    Now, SalLayout::GetBoundRect is a fairly simple thing, it just calls
    GetNextGlyphs 1 by 1 and X11SalGraphics::GetGlyphBoundRect on the result of
    that.  So I *think* that if we remove the specialized
    MultiSalLayout::GetBoundRect in favour of the default implementation, then
    because MultiSalLayout::GetNextGlyphs is specialized to do-the-right-thing and
    set up the glyph ids correctly, then we bubble the ids down
    to X11SalGraphics::GetGlyphBoundRect correctly to get it to
    use the right font and we get the correct bounding size.
    
    defb4d60a2d22fd36a0ff3f077faa6a0932b45a4
    defb4d60a2d22fd36a0ff3f077faa6a0932b45a4
    
    Change-Id: Idefb4d60a2d22fd36a0ff3f077faa6a0932b45a4
    98f56121
sallayout.hxx 13.2 KB