         ctline line-rect :> rect
         rect origin>> CGPoint>loc :> (loc)
         rect size>> CGSize>dim :> (dim)
+
         (loc) vfloor :> loc
-        (loc) (dim) v+ vceiling :> ext
-        ext loc [ - >integer 1 max ] 2map :> dim
+        (dim) vceiling :> dim
+        dim [ >integer 1 + ] map :> ext
 
         loc line render-loc<<
         dim line render-dim<<
+        ext line render-ext<<
 
         line metrics>> loc dim line-loc line loc<<
 


    line render-loc>> :> loc
    line render-dim>> :> dim

    line dim [
        {
            [ font dim fill-background ]
            [ loc dim ctline string fill-selection-background ]

    [let [ start>> ] [ end>> ] [ string>> ] tri :> ( start end string )
     start end [ 0 swap string subseq utf16n encode length 2 /i ] bi@
    ]
    [ f CTLineGetOffsetForStringIndex ] bi-curry@ bi
    [ drop nip 0 ] [ swap - swap second ] 3bi <CGRect> ;

: CGRect-translate-x ( CGRect x -- CGRect' )
