X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/73c04bcfe1096173b00431f0cdc742894b15eef0..ef6cf650f4a75c3f97de06b51fa104f2069b9ea2:/icuSources/layout/GlyphPositionAdjustments.cpp?ds=sidebyside diff --git a/icuSources/layout/GlyphPositionAdjustments.cpp b/icuSources/layout/GlyphPositionAdjustments.cpp index c7e57ef1..900e1aee 100644 --- a/icuSources/layout/GlyphPositionAdjustments.cpp +++ b/icuSources/layout/GlyphPositionAdjustments.cpp @@ -1,6 +1,6 @@ /* * - * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved + * (C) Copyright IBM Corp. 1998-2008 - All Rights Reserved * */ @@ -46,6 +46,20 @@ const LEPoint *GlyphPositionAdjustments::getExitPoint(le_int32 index, LEPoint &e return fEntryExitPoints[index].getExitPoint(exitPoint); } +void GlyphPositionAdjustments::clearEntryPoint(le_int32 index) +{ + CHECK_ALLOCATE_ARRAY(fEntryExitPoints, EntryExitPoint, fGlyphCount); + + fEntryExitPoints[index].clearEntryPoint(); +} + +void GlyphPositionAdjustments::clearExitPoint(le_int32 index) +{ + CHECK_ALLOCATE_ARRAY(fEntryExitPoints, EntryExitPoint, fGlyphCount); + + fEntryExitPoints[index].clearExitPoint(); +} + void GlyphPositionAdjustments::setEntryPoint(le_int32 index, LEPoint &newEntryPoint, le_bool baselineIsLogicalEnd) { CHECK_ALLOCATE_ARRAY(fEntryExitPoints, EntryExitPoint, fGlyphCount); @@ -127,7 +141,12 @@ void GlyphPositionAdjustments::applyCursiveAdjustments(LEGlyphStorage &glyphStor lastExitGlyphID = glyphID; } else { if (baselineIsLogicalEnd(i) && firstExitPoint >= 0 && lastExitPoint >= 0) { - le_int32 limit = lastExitPoint + dir; + le_int32 limit = lastExitPoint /*+ dir*/; + LEPoint dummyAnchor; + + if (getEntryPoint(i, dummyAnchor) != NULL) { + limit += dir; + } for (le_int32 j = firstExitPoint; j != limit; j += dir) { if (isCursiveGlyph(j)) {