summaryrefslogtreecommitdiff
path: root/Build/source/libs/graphite-engine/src/segment/GrPass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/graphite-engine/src/segment/GrPass.cpp')
-rw-r--r--Build/source/libs/graphite-engine/src/segment/GrPass.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/Build/source/libs/graphite-engine/src/segment/GrPass.cpp b/Build/source/libs/graphite-engine/src/segment/GrPass.cpp
index 8e2048f0f6f..26eb3a3deb6 100644
--- a/Build/source/libs/graphite-engine/src/segment/GrPass.cpp
+++ b/Build/source/libs/graphite-engine/src/segment/GrPass.cpp
@@ -1804,6 +1804,12 @@ int GrBidiPass::Unwind(GrTableManager * ptman,
else {
islotIn = min(islotChanged, psstrmIn->ReadPos());
islotIn = max(islotIn - 1, 0);
+ while (islotIn > 0 && !StrongDir(psstrmIn->SlotAt(islotIn)->Directionality()))
+ {
+ psstrmIn->SlotAt(islotIn)->ZapDirLevel();
+ islotIn--;
+ }
+ Assert(islotIn == 0 || psstrmIn->SlotAt(islotIn)->DirHasBeenProcessed());
islotOut = 0;
while (islotIn > 0 && (islotOut = psstrmIn->ChunkInNext(islotIn)) == -1)
--islotIn;