I think the size of TextRun can be huge. Since the local stack has limited size, I thought placing TextRun in global heap is more appropriate.