Don’t return false for blank glyphs
CTFontCreatePathForGlyph() will return NULL for blank glyphs causing CoreTextStyle::GetGlyphOutline() to return false which propagated as error all the way to OutputDevice::GetTextOutlines() causing it to needlessly enter into fallback code. Other implementations just return true and an empty polygon here. Change-Id: Ib20ebff00f7cb3aae22f1c6b4c3a0e9d7a429987 Reviewed-on: https://gerrit.libreoffice.org/31902 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Khaled Hosny <khaledhosny@eglug.org>
This commit is contained in:
parent
385f624027
commit
04a77bfa9c
1 changed files with 13 additions and 0 deletions
|
@ -231,6 +231,19 @@ bool CoreTextStyle::GetGlyphOutline(const GlyphItem& rGlyph, basegfx::B2DPolyPol
|
|||
|
||||
CGGlyph nCGGlyph = rGlyph.maGlyphId;
|
||||
CTFontRef pCTFont = static_cast<CTFontRef>(CFDictionaryGetValue( mpStyleDict, kCTFontAttributeName ));
|
||||
|
||||
SAL_WNODEPRECATED_DECLARATIONS_PUSH
|
||||
const CTFontOrientation aFontOrientation = kCTFontDefaultOrientation;
|
||||
SAL_WNODEPRECATED_DECLARATIONS_POP
|
||||
CGRect aCGRect = CTFontGetBoundingRectsForGlyphs(pCTFont, aFontOrientation, &nCGGlyph, nullptr, 1);
|
||||
|
||||
if (!CGRectIsNull(aCGRect) && CGRectIsEmpty(aCGRect))
|
||||
{
|
||||
// CTFontCreatePathForGlyph returns NULL for blank glyphs, but we want
|
||||
// to return true for them.
|
||||
return true;
|
||||
}
|
||||
|
||||
CGPathRef xPath = CTFontCreatePathForGlyph( pCTFont, nCGGlyph, nullptr );
|
||||
if (!xPath)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue