I forgot to mention that to prevent name texts from overlapping each other you can use a thing called quad trees. (https://en.wikipedia.org/wiki/Quadtree - but their usage for labelling like this isn't nearly as complex as that article makes it out to be.) I have a plan for it but haven't implemented it yet. I took a break from language and programming to do these rivers.