           'left': "#{@sx[i] + @x_offset[i] + @x_shift[i]}px"
           'color': "#{@text_color[i]}"
           'opacity': "#{@text_alpha[i]}"
+          'font-size': "#{@text_font_size[i]}"
+          'font-family': "#{@mget('text_font')}"
           'background-color': "#{@visuals.background_fill.color_value()}"
           'border-style': "#{@line_dash}"
           'border-width': "#{@border_line_width[i]}"
           'border-color': "#{@visuals.border_line.color_value()}"
-          'font-size': "#{@text_font_size[i]}"
-          'font-family': "#{@mget('text_font')}"
           })
         .show()
 

    return [x_shift, y_shift]

  render: () ->
    @_map_data()

    if @mget('render_mode') == 'canvas'
      @_canvas_text()
    else

    if @mget('x_units') == "data"
      vx = @xmapper.v_map_to_target(@x)
    else
      vx = @x.slice(0) # make deep copy to not mutate
    sx = @canvas.v_vx_to_sx(vx)

    if @mget('y_units') == "data"
      vy = @ymapper.v_map_to_target(@y)
    else
      vy = @y.slice(0) # make deep copy to not mutate

    sy = @canvas.v_vy_to_sy(vy)

    return [sx, sy]

  _calculate_offset: (ctx, height, width) ->
    if ctx.textAlign == 'left'
