vcl/source/outdev/text.cxx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
New commits: commit 24534b101c713a04c9ab12570d9124037643e644 Author: Miklos Vajna <vmik...@collabora.co.uk> AuthorDate: Mon Aug 27 17:40:22 2018 +0200 Commit: Miklos Vajna <vmik...@collabora.co.uk> CommitDate: Tue Aug 28 09:04:36 2018 +0200 tdf#119451 vcl layout cache: fix glyph fallback handling Type ":dog:" into Writer with e.g. the Liberation Serif font, glyph layout doesn't execute, a literal 0 glyph id is rendered. Fix the problem by returning the glyph items (to be inserted into a cache) after handling glyph fallback. Change-Id: I928b0087de309dbe04936c6e7732d79bec541596 Reviewed-on: https://gerrit.libreoffice.org/59665 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index 9568b3b50eb2..5112814a35ec 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -1332,14 +1332,16 @@ std::unique_ptr<SalLayout> OutputDevice::ImplLayout(const OUString& rOrigStr, if( !pSalLayout ) return nullptr; - if (flags & SalLayoutFlags::GlyphItemsOnly) - return pSalLayout; - // do glyph fallback if needed // #105768# avoid fallback for very small font sizes if (aLayoutArgs.NeedFallback() && mpFontInstance->GetFontSelectPattern().mnHeight >= 3) pSalLayout = ImplGlyphFallbackLayout(std::move(pSalLayout), aLayoutArgs); + if (flags & SalLayoutFlags::GlyphItemsOnly) + // Return glyph items only after fallback handling. Otherwise they may + // contain invalid glyph IDs. + return pSalLayout; + // position, justify, etc. the layout pSalLayout->AdjustLayout( aLayoutArgs ); pSalLayout->DrawBase() = ImplLogicToDevicePixel( rLogicalPos ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits