summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qfontengine_coretext.mm
diff options
context:
space:
mode:
authorJiang Jiang <jiang.jiang@nokia.com>2011-03-11 11:37:52 +0100
committerJiang Jiang <jiang.jiang@nokia.com>2011-03-11 12:02:34 +0100
commit86e7893c2c1a4c316a1db510ab6abeafa7267c3d (patch)
tree9d7af495b124edd89c0701adf67eb4685b0215c9 /src/gui/text/qfontengine_coretext.mm
parentbb8c150241ead7fe86d2c02e4a789c3ac4db81a8 (diff)
Fix combining marks handling in Core Text shaper
For fonts without combined glyph for combinations like U+0062 U+0300, Core Text will return glyph sequences like <b> <`>, the latter will have advance_x = 0, advance_y = <positive value> to keep it above the previous glyph. To get correct positioning in flipped coordinate, we need to store the negative y advance in Qt. Task-number: QTBUG-15675 Reviewed-by: Eskil
Diffstat (limited to 'src/gui/text/qfontengine_coretext.mm')
-rw-r--r--src/gui/text/qfontengine_coretext.mm3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gui/text/qfontengine_coretext.mm b/src/gui/text/qfontengine_coretext.mm
index 2ae60b15f4..0209689473 100644
--- a/src/gui/text/qfontengine_coretext.mm
+++ b/src/gui/text/qfontengine_coretext.mm
@@ -234,7 +234,8 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay
int idx = rtlOffset + rtlSign * i;
outGlyphs[idx] = tmpGlyphs[i] | fontIndex;
outAdvances_x[idx] = QFixed::fromReal(tmpPoints[i + 1].x - tmpPoints[i].x);
- outAdvances_y[idx] = QFixed::fromReal(tmpPoints[i + 1].y - tmpPoints[i].y);
+ // Use negative y advance for flipped coordinate system
+ outAdvances_y[idx] = QFixed::fromReal(tmpPoints[i].y - tmpPoints[i + 1].y);
if (fontDef.styleStrategy & QFont::ForceIntegerMetrics) {
outAdvances_x[idx] = outAdvances_x[idx].round();