summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libs/minikin/Layout.cpp2
-rw-r--r--libs/minikin/LineBreaker.cpp2
-rw-r--r--libs/minikin/Measurement.cpp3
3 files changed, 4 insertions, 3 deletions
diff --git a/libs/minikin/Layout.cpp b/libs/minikin/Layout.cpp
index 0c8c4ca..bac5fc7 100644
--- a/libs/minikin/Layout.cpp
+++ b/libs/minikin/Layout.cpp
@@ -757,7 +757,7 @@ void Layout::doLayoutRun(const uint16_t* buf, size_t start, size_t count, size_t
if (ctx->paint.hyphenEdit.hasHyphen() && srunend > srunstart) {
// TODO: check whether this is really the desired semantics. It could have the
// effect of assigning the hyphen width to a nonspacing mark
- unsigned int lastCluster = srunend - 1;
+ unsigned int lastCluster = start + srunend - 1;
hb_codepoint_t hyphenChar = 0x2010; // HYPHEN
hb_codepoint_t glyph;
diff --git a/libs/minikin/LineBreaker.cpp b/libs/minikin/LineBreaker.cpp
index 162d14b..baf2dfa 100644
--- a/libs/minikin/LineBreaker.cpp
+++ b/libs/minikin/LineBreaker.cpp
@@ -383,7 +383,7 @@ void LineBreaker::computeBreaksOptimal(bool isRectangle) {
mCandidates[i].score = best + mCandidates[i].penalty + mLinePenalty;
mCandidates[i].prev = bestPrev;
mCandidates[i].lineNumber = mCandidates[bestPrev].lineNumber + 1;
-#ifdef VERBOSE_DEBUG
+#if VERBOSE_DEBUG
ALOGD("break %d: score=%g, prev=%d", i, mCandidates[i].score, mCandidates[i].prev);
#endif
}
diff --git a/libs/minikin/Measurement.cpp b/libs/minikin/Measurement.cpp
index 0b68ac5..a7bc64b 100644
--- a/libs/minikin/Measurement.cpp
+++ b/libs/minikin/Measurement.cpp
@@ -41,7 +41,8 @@ static float getRunAdvance(Layout& layout, const uint16_t* buf, size_t layoutSta
clusterWidth = charAdvance;
}
}
- if (offset < start + count && layout.getCharAdvance(offset - layoutStart) == 0.0f) {
+ if (offset < start + count && layout.getCharAdvance(offset - layoutStart) == 0.0f &&
+ !GraphemeBreak::isGraphemeBreak(buf, start, count, offset)) {
// In the middle of a cluster, distribute width of cluster so that each grapheme cluster
// gets an equal share.
// TODO: get caret information out of font when that's available