Kaydet (Commit) f76ecc3e authored tarafından Caolán McNamara's avatar Caolán McNamara

Resolves: tdf#89231 if no font has 0x202F fallback to a normal space

Change-Id: I2325c0b09ccf66ee15597251ad027b295de5502f
üst 85fae98f
...@@ -488,6 +488,12 @@ bool HbLayoutEngine::Layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs) ...@@ -488,6 +488,12 @@ bool HbLayoutEngine::Layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
int32_t nGlyphIndex = pHbGlyphInfos[i].codepoint; int32_t nGlyphIndex = pHbGlyphInfos[i].codepoint;
int32_t nCharPos = pHbGlyphInfos[i].cluster; int32_t nCharPos = pHbGlyphInfos[i].cluster;
// tdf#89231 if it's just a missing non-breaking space, then use a normal space
if (!nGlyphIndex && (SalLayoutFlags::ForFallback & rArgs.mnFlags) && nCharPos >= 0 && rArgs.mpStr[nCharPos] == 0x202F)
{
nGlyphIndex = rFont.GetGlyphIndex(' ');
}
// if needed request glyph fallback by updating LayoutArgs // if needed request glyph fallback by updating LayoutArgs
if (!nGlyphIndex) if (!nGlyphIndex)
{ {
......
...@@ -2104,7 +2104,10 @@ SalLayout* OutputDevice::ImplGlyphFallbackLayout( SalLayout* pSalLayout, ImplLay ...@@ -2104,7 +2104,10 @@ SalLayout* OutputDevice::ImplGlyphFallbackLayout( SalLayout* pSalLayout, ImplLay
if( nFallbackLevel < MAX_FALLBACK-1) if( nFallbackLevel < MAX_FALLBACK-1)
{ {
// ignore fallback font if it is the same as the original font // ignore fallback font if it is the same as the original font
if( mpFontEntry->maFontSelData.mpFontData == aFontSelData.mpFontData ) // unless we are looking for a substituion for 0x202F, in which
// case we'll just use a normal space
if( mpFontEntry->maFontSelData.mpFontData == aFontSelData.mpFontData &&
aMissingCodes.indexOf(0x202F) == -1 )
{ {
mpFontCache->Release( pFallbackFont ); mpFontCache->Release( pFallbackFont );
continue; continue;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment