am 54801e12: Merge "Fix for bug 6936752 Tamil text gets truncated on right-hand side" into jb-mr1-dev

* commit '54801e120a2275037e37f065926b81d9f6e4b3d5':
  Fix for bug 6936752 Tamil text gets truncated on right-hand side
This commit is contained in:
Raph Levien
2012-09-28 11:17:34 -07:00
committed by Android Git Automerger

View File

@@ -686,23 +686,24 @@ void TextLayoutShaper::computeRunValues(const SkPaint* paint, const UChar* chars
i, HBFixedToFloat(mShaperItem.advances[i]));
}
#endif
// Get Advances and their total
jfloat currentAdvance = HBFixedToFloat(mShaperItem.advances[mShaperItem.log_clusters[0]]);
jfloat totalFontRunAdvance = currentAdvance;
outAdvances->replaceAt(currentAdvance, startScriptRun);
for (size_t i = 1; i < countScriptRun; i++) {
size_t clusterPrevious = mShaperItem.log_clusters[i - 1];
jfloat totalFontRunAdvance = 0;
size_t clusterStart = 0;
for (size_t i = 0; i < countScriptRun; i++) {
size_t cluster = mShaperItem.log_clusters[i];
if (cluster != clusterPrevious) {
currentAdvance = HBFixedToFloat(mShaperItem.advances[mShaperItem.log_clusters[i]]);
outAdvances->replaceAt(currentAdvance, startScriptRun + i);
size_t clusterNext = i == countScriptRun - 1 ? mShaperItem.num_glyphs :
mShaperItem.log_clusters[i + 1];
if (cluster != clusterNext) {
jfloat advance = 0;
// The advance for the cluster is the sum of the advances of all glyphs within
// the cluster.
for (size_t j = cluster; j < clusterNext; j++) {
advance += HBFixedToFloat(mShaperItem.advances[j]);
}
totalFontRunAdvance += advance;
outAdvances->replaceAt(advance, startScriptRun + clusterStart);
clusterStart = i + 1;
}
}
// TODO: can be removed and go back in the previous loop when Harfbuzz log clusters are fixed
for (size_t i = 1; i < mShaperItem.num_glyphs; i++) {
currentAdvance = HBFixedToFloat(mShaperItem.advances[i]);
totalFontRunAdvance += currentAdvance;
}
#if DEBUG_ADVANCES
ALOGD("Returned advances");