I'd test this myself if I had a good test case, but instead of using the timer hack, you might try implementing this delegate method and doing the refresh there (perhaps in a `dispatch_async` if we still need it in the next run loop):
```- (void)attributedTextContentView:(DTAttributedTextContentView *)attributedTextContentView didDrawLayoutFrame:(DTCoreTextLayoutFrame *)layoutFrame inContext:(CGContextRef)context;```