nl_tokens: De Casteljau algorithm
pl_tokens: function ( ax , ay , bx , by , cx , cy , dx , dy ) { var tobx = bx - ax ; var toby = by - ay ; var tocx = cx - bx ; var tocy = cy - by ; var todx = dx - cx ; var tody = dy - cy ; var precision = 40 ; var d , i , px , py , qx , qy , rx , ry , tx , ty , sx , sy , x , y , minx , miny , maxx , maxy , toqx , toqy , torx , tory , totx , toty ; for ( i = 0 ; i < ( precision + 1 ) ; i ++ ) { d = i / precision ; px = ax + d * tobx ; py = ay + d * toby ; qx = bx + d * tocx ; qy = by + d * tocy ; rx = cx + d * todx ; ry = cy + d * tody ; toqx = qx - px ; toqy = qy - py ; torx = rx - qx ; tory = ry - qy ; sx = px + d * toqx ; sy = py + d * toqy ; tx = qx + d * torx ; ty = qy + d * tory ; totx = tx - sx ; toty = ty - sy ; x = sx + d * totx ; y = sy + d * toty ; if ( i == 0 ) { minx = x ; miny = y ; maxx = x ; maxy = y ; } else { minx = Math . <mask> ( minx , x ) ; miny = Math . min ( miny , y ) ; maxx = Math . max ( maxx , x ) ; maxy = Math . max ( maxy , y ) ; } } return new Rectangle ( Math . round ( minx ) , Math . round ( miny ) , Math . round ( maxx - minx ) , Math . round ( maxy - miny ) ) ; }