func (t *SvgTextT) widths(font string) (r *cmapt.CMapT) { if t.fontw == nil { t.fontw = make(map[string]*cmapt.CMapT) } else if r, ok := t.fontw[font]; ok { return r } // initialize like for Courier. r = cmapt.New() r.AddDef(0, 256, 600*WIDTH_DENSITY/1000) if t.fonts == nil { t.fonts = t.Pdf.PageFonts(t.Pdf.Pages()[t.Page]) if t.fonts == nil { return } } if dr, ok := t.fonts[font]; ok { d := t.Pdf.Dic(dr) fc, ok := d["/FirstChar"] if !ok { return } lc, ok := d["/LastChar"] if !ok { return } wd, ok := d["/Widths"] if !ok { return } p := strm.Int(string(fc), 1) q := strm.Int(string(lc), 1) a := t.Pdf.Arr(wd) for k := p; k < q; k++ { r.Add(k, strm.Int(string(a[k-p]), WIDTH_DENSITY/1000)) } } return }
func NewCharMapperT() *CharMapperT { r := new(CharMapperT) r.Ranges = cmapt.New() r.Uni = cmapt.New() return r }