tdf#107487 fix font fallback for non-BMP characters.
Non-BMP characters use two sal_Unicodes. It is necessary to advnace with OUString::iterateCodePoints safely instead of nCharPos + 1. Change-Id: Iea1005f05421b1021a9b3ff611439357d4dcba9e Reviewed-on: https://gerrit.libreoffice.org/73326 Tested-by: Jenkins Reviewed-by: Khaled Hosny <khaledhosny@eglug.org>
This commit is contained in:
@@ -190,12 +190,14 @@ void GenericSalLayout::SetNeedFallback(ImplLayoutArgs& rArgs, sal_Int32 nCharPos
|
||||
//mark all glyphs as missing so the whole thing is rendered with the same
|
||||
//font
|
||||
sal_Int32 nDone;
|
||||
sal_Int32 nGraphemeStartPos =
|
||||
mxBreak->previousCharacters(rArgs.mrStr, nCharPos + 1, aLocale,
|
||||
i18n::CharacterIteratorMode::SKIPCELL, 1, nDone);
|
||||
sal_Int32 nGraphemeEndPos =
|
||||
mxBreak->nextCharacters(rArgs.mrStr, nCharPos, aLocale,
|
||||
i18n::CharacterIteratorMode::SKIPCELL, 1, nDone);
|
||||
// Safely advance nCharPos in case it is a non-BMP character.
|
||||
rArgs.mrStr.iterateCodePoints(&nCharPos);
|
||||
sal_Int32 nGraphemeStartPos =
|
||||
mxBreak->previousCharacters(rArgs.mrStr, nCharPos, aLocale,
|
||||
i18n::CharacterIteratorMode::SKIPCELL, 1, nDone);
|
||||
|
||||
rArgs.NeedFallback(nGraphemeStartPos, nGraphemeEndPos, bRightToLeft);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user