--- linebreak.aup +++ range-out.aup @@ -153,30 +153,11 @@ } on line { - let codes, cls, eff, start, nonspace, ri, at: list of number - let joined, numeric: list of bool + let out: list of i64 for p in line.points { - let i = codes.count let r = range(p.code) - let c = ranges[r].class - let mark = c == CM || c == ZWJ - let previous = if i > 0 { eff[i - 1] } else { SP } - let joins = mark && i > 0 && !end(previous) && previous != SP && previous != ZW # LB9, LB10 - let e = if joins { previous } else if mark { AL } else { c } - codes.append(p.code) - cls.append(c) - at.append(r) - joined.append(joins) - eff.append(e) - start.append(if joins { start[i - 1] } else { i }) - nonspace.append(if e != SP { start[i] } else if i > 0 { nonspace[i - 1] } else { -1 }) - numeric.append(if joins { numeric[i - 1] } else { e == NU || ((e == SY || e == IS) && i > 0 && numeric[i - 1]) }) - ri.append(if joins { ri[i - 1] } else if e == RI { (if i > 0 { ri[i - 1] } else { 0 }) + 1 } else { 0 }) + out.append(i64(r % 256)) + out.append(i64(r // 256)) } - let t = Text { codes: codes, cls: cls, eff: eff, joined: joined, start: start, nonspace: nonspace, numeric: numeric, ri: ri, - at: at } - let out: list of i64 = [0] # LB2 - for i in 1 .. codes.count { out.append(i64(decide(t, i))) } - if codes.count > 0 { out.append(2) } # LB3 breaks = bytes(out) }