示例#1
0
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]
}
示例#2
0
	"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) {