tdf#123547: do the same as in lcl_DrawBullet from cui/numpages.cxx

See bt https://bugs.documentfoundation.org/attachment.cgi?id=149389
It seems the method from cui/numpages.cxx takes more things into account

At least, it doesn't crash for the attachment of this tracker

Change-Id: I05ca0b019ac483890bea4acdbb695d73b660e638
Reviewed-on: https://gerrit.libreoffice.org/68033
Tested-by: Jenkins
(cherry picked from commit 684fcf2fce915f3e3e553c67fb57bdbfc8f159d5)
Reviewed-on: https://gerrit.libreoffice.org/68843
Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
(cherry picked from commit 7f2322afea3b25bc45f438b8ae9d4977ac378c1c)
Reviewed-on: https://gerrit.libreoffice.org/69172
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
diff --git a/sw/source/ui/misc/outline.cxx b/sw/source/ui/misc/outline.cxx
index c237948..23bb9c66 100644
--- a/sw/source/ui/misc/outline.cxx
+++ b/sw/source/ui/misc/outline.cxx
@@ -822,13 +822,30 @@
{
    vcl::Font aTmpFont(pVDev->GetFont());

    vcl::Font aFont(*rFormat.GetBulletFont());
    aFont.SetFontSize(rSize);
    // via Uno it's possible that no font has been set!
    vcl::Font aFont(rFormat.GetBulletFont() ? *rFormat.GetBulletFont() : aTmpFont);
    Size aTmpSize(rSize);
    aTmpSize.setWidth( aTmpSize.Width() * ( rFormat.GetBulletRelSize()) );
    aTmpSize.setWidth( aTmpSize.Width() / 100 ) ;
    aTmpSize.setHeight( aTmpSize.Height() * ( rFormat.GetBulletRelSize()) );
    aTmpSize.setHeight( aTmpSize.Height() / 100 ) ;
    // in case of a height of zero it is drawn in original height
    if(!aTmpSize.Height())
        aTmpSize.setHeight( 1 );
    aFont.SetFontSize(aTmpSize);
    aFont.SetTransparent(true);
    pVDev->SetFont(aFont);
    Color aBulletColor = rFormat.GetBulletColor();
    if(aBulletColor == COL_AUTO)
        aBulletColor = pVDev->GetFillColor().IsDark() ? COL_WHITE : COL_BLACK;
    else if(aBulletColor == pVDev->GetFillColor())
        aBulletColor.Invert();
    aFont.SetColor(aBulletColor);
    pVDev->SetFont( aFont );
    OUString aText(rFormat.GetBulletChar());
    pVDev->DrawText(Point(nXStart, nYStart), aText);
    const long nRet = pVDev->GetTextWidth(aText);
    long nY = nYStart;
    nY -= ((aTmpSize.Height() - rSize.Height())/ 2);
    pVDev->DrawText( Point(nXStart, nY), aText );
    long nRet = pVDev->GetTextWidth(aText);

    pVDev->SetFont(aTmpFont);
    return nRet;