private void AttachLevelRunLinks() { LevelRun current; LevelRun next; _roller.ReplaceNext(_baseRun.FirstLink); for (current = _baseRun; (next = current.Next) != null; current = next) { current.LastLink.ReplaceNext(next.FirstLink); } current.LastLink.ReplaceNext(_roller); _lastRun = current; _level = _baseRun.Level; _sos = _baseRun.SOR; _eos = (!_baseRun.IsPartialIsolate ? current.EOR : Level.MakeExtremeType(_paragraphLevel, _level) ); }
public void Resolve() { // Attach level run links to form isolating run. AttachLevelRunLinks(); // Save last subsequent link. BidiLink subsequentLink = _lastRun.SubsequentLink; // Rules W1-W7 BidiLink finalLink = ResolveWeakTypes(); // Rule N0 ResolveBrackets(); // Rules N1, N2 ResolveNeutrals(); // Rules I1, I2 ResolveImplicitLevels(); // Re-attach original links. AttachOriginalLinks(); // Attach last subsequent link with new final link. finalLink.ReplaceNext(subsequentLink); }