code: func (t *Tabulate) getWidths(headers []string, data []*TabulateRow) []int {
  	widths := make([]int, len(headers))
  	current_max := len(t.EmptyVar)
  	for i := 0; i < len(headers); i++ {
  		current_max = runewidth.StringWidth(headers[i])
  		for _, item := range data {
  			if len(item.Elements) > i && len(widths) > i {
  				element := item.Elements[i]
  				strLength := runewidth.StringWidth(element)
  				if strLength > current_max {
  					widths[i] = strLength
  					current_max = strLength
  				} else {
  					widths[i] = current_max
  				}
  			}
  		}
  	}
  
  	return widths
  }
docs: // Calculate the max column width for each element