func Decode(s []byte, to *CharMapperT) (r []byte) { r = make([]byte, len(s)*6) p := 0 for k := 0; k < len(s); { l := to.Ranges.Code(int(s[k])) a := ps.StrInt(s[k : k+l]) k += l p += xchar.EncodeRune(to.Uni.Code(a), r[p:len(r)]) } return r[0:p] }
"dict": func(t *CharMapperI) { a := t.St.Pop() t.St.Push([]byte{'?'}) _ = a }, "dup": func(t *CharMapperI) { a := t.St.Pop() t.St.Push(a) t.St.Push(a) }, "end": func(t *CharMapperI) { }, "endbfchar": func(t *CharMapperI) { a := t.St.Drop(t.St.Depth() - t.Marker) for k := 0; k < len(a); k += 2 { t.Target.Uni.Add(ps.StrInt(ps.String(a[k])), ps.StrInt(ps.String(a[k+1]))) } }, "endbfrange": func(t *CharMapperI) { a := t.St.Drop(t.St.Depth() - t.Marker) for k := 0; k < len(a); k += 3 { // leaving the array expression as it is: invalidate - we do not have char names to unicode now t.Target.Uni.AddRange(ps.StrInt(ps.String(a[k])), ps.StrInt(ps.String(a[k+1])), ps.StrInt(ps.String(a[k+2]))) } }, "endcidchar": func(t *CharMapperI) { a := t.St.Drop(t.St.Depth() - t.Marker) _ = a }, "endcidrange": func(t *CharMapperI) {