title: CTRunGetImageBounds returning inaccurate results
body: <p>I am using Core Text to draw some text. I would like to get the various run bounds, but when I call <code>CTRunGetImageBounds</code>, the rect that is returned is the correct size, but in the wrong location. Specifically, the line origin is at the end of the text as a whole.</p>
  
  <pre><code>- (void)drawRect:(CGRect)rect
  {
      CGContextRef context = UIGraphicsGetCurrentContext();
      self.transform = CGAffineTransformMakeScale(1.0, -1.0);
      CGContextSetTextMatrix(context, CGAffineTransformIdentity);
  
      [[UIColor whiteColor] set];
      CGContextFillRect(context, self.bounds);
  
      NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:@"Blue should be underlined."];
      NSRange blueRange = NSMakeRange(0, 4);
      [attrString beginEditing];
      //make all text size 20.0
      [attrString addAttribute:(NSString *)kCTFontAttributeName value:(id)CTFontCreateWithName((CFStringRef)@"Helvetica", 20.0, NULL) range:NSMakeRange(0, [attrString length])];
      //make the text appear in blue
      [attrString addAttribute:(NSString *)kCTForegroundColorAttributeName value:(id)[[UIColor blueColor] CGColor] range:blueRange];
      //next make the text appear with an underline
      [attrString addAttribute:(NSString *)kCTUnderlineStyleAttributeName value:[NSNumber numberWithInt:1] range:blueRange];
      [attrString endEditing];
  
      CGMutablePathRef path = CGPathCreateMutable();
      CGRect bounds = CGRectMake(10.0, 10.0, 200.0, 200.0);
      [[UIColor redColor] set];
      CGContextFillRect(context, bounds);
      CGPathAddRect(path, NULL, bounds);
  
      CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attrString);
      CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);
      CTFrameDraw(frame, context);
  
      for (id lineObj in (NSArray *)CTFrameGetLines(frame)) {
          CTLineRef line = (CTLineRef)lineObj;
          for (id runObj in (NSArray *)CTLineGetGlyphRuns(line)) {
              CTRunRef run = (CTRunRef)runObj;
              CGRect runBounds = CTRunGetImageBounds(run, context, CFRangeMake(0, 0));
              NSLog(@"bounds: %@", NSStringFromCGRect(runBounds));
  
              [[UIColor greenColor] set];
              CGContextFillRect(context, runBounds);
          }
      }
  
      CFRelease(framesetter);
      CFRelease(frame);
      [attrString release];
  }
  </code></pre>
  
  <p>Produces:</p>
  
  <p><img src="https://i.stack.imgur.com/YLsWr.png" alt="results"></p>