RJ:
DanPaul:
Or you can create an union of its components boundaries (use GetSubElements and Range3dUnion) ...
Could you further explain this one?
TextNode element is nothing more than TextElement container, so you can iterate its text elements one by one and make an union of all boundaries, which results in same Range3d as what you described (smallest low and largest high).