Use valid glyph index for box font engine
Glyph index 0 is reserved for "glyph not found", which can confuse Harfbuzz. For QFontEngineBox we always return a valid glyph since it is the fallback font when no other fonts are available. Symptom of issue was that we could get to Q_UNREACHABLE for certain strings when Harfbuzz returned a glyph count of 0. [ChangeLog][QtGui] Fixed a potential crash when rendering text with an empty font database. Fixes: QTBUG-85016 Pick-to: 5.15 Change-Id: Iaf1d003cdff57320bf4327aa8e63dffd9d1da82c Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
parent
2ffbac7cb2
commit
05078459de
@ -1539,7 +1539,7 @@ QFontEngineBox::~QFontEngineBox()
|
||||
glyph_t QFontEngineBox::glyphIndex(uint ucs4) const
|
||||
{
|
||||
Q_UNUSED(ucs4);
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool QFontEngineBox::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QFontEngine::ShaperFlags flags) const
|
||||
@ -1554,7 +1554,7 @@ bool QFontEngineBox::stringToCMap(const QChar *str, int len, QGlyphLayout *glyph
|
||||
QStringIterator it(str, str + len);
|
||||
while (it.hasNext()) {
|
||||
it.advance();
|
||||
glyphs->glyphs[ucs4Length++] = 0;
|
||||
glyphs->glyphs[ucs4Length++] = 1;
|
||||
}
|
||||
|
||||
*nglyphs = ucs4Length;
|
||||
|
Loading…
Reference in New Issue
Block a user