Пример #1
0
func (t *SvgTextT) TShow(a []byte) {
	tx := t.Pdf.ForcedArray(a) // FIXME: Should be "ForcedSimpleArray()"
	for k := range tx {
		if tx[k][0] == '(' || tx[k][0] == '<' {
			part := space_split(ps.String(tx[k]))
			for y := range part {
				tmp, adv := t.Utf8Advance(part[y])
				res := strm.Add(t.x, adv)
				p := 0
				for len(tmp) > p && tmp[p] == 32 {
					p++
				}
				if p > 0 {
					_, ta := t.Utf8Advance(tmp[0:p])
					t.x = strm.Add(t.x, ta)
					tmp = tmp[p:]
				}
				t.Drw.Write.Out(
					"<g transform=\"matrix(%s,%s,%s,%s,%s,%s)\">\n"+
						"<text x=\"%s\" y=\"%s\""+
						" font-size=\"%s\""+
						" style=\"stroke:none;%v\""+
						" fill=\"%s\">%s</text>\n"+
						"</g>\n",
					t.matrix[0], t.matrix[1],
					strm.Neg(t.matrix[2]), strm.Neg(t.matrix[3]),
					t.matrix[4], t.matrix[5],
					t.x, t.y,
					t.Drw.TConfD.FontSize,
					t.Style(t.Drw.TConfD.Font),
					t.Drw.ConfigD.FillColor,
					util.ToXML(tmp))
				t.x = res
			}
		} else {
			t.x = strm.Sub(t.x, strm.Mul(string(tx[k]), "0.01"))
		}
	}
}
Пример #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) {