I figured it out! I'll write what the problem was and leave the previous post below here for posterity.
My system used a lot of invisible text objects at first, then pulled data from those. This works out for a lot of things, but for some strange reason if an object has an invisible property it hides the TextHeight from the engine. So even if you have 30 lines of 12 point text in there, if you try to draw out the TextHeight you'll end up with a funky value based on the object's Line Height.
Not sure if this is an actual feature of the engine or not, but if anyone has trouble finding TextHeight, try making the object visible!
(Another problem is that if the object is off-screen it might not work. This is creating more problems for me than I had hoped...)
Thanks for all the help, you guys.
Turn the negative into a positive with the expression abs, abs(x) Absolute value of x e.g. abs(-5) = 5, might work
Thanks for the suggestion.
The absolute value would be a good way to craft the final equation, but the issue isn't what number is being pulled out so much as that it doesn't correlate to the amount of text shown within the object. If I have nothing written in the text object, or if I have 500 characters, I still retrieve the same value when I call TextHeight. A static value won't help me dynamically alter the size of the box.
This is extremely weird because as I keep trying to troubleshoot the problem it looks like I'm having it only within my own project. When I try to retrieve the TextHeight value in the example Korbaach gave, the return is exactly what I'd expect. Yet in my own project, the return is definitely based on the Line Height of the object rather than the content within the rectangle.
Searching around the forum hasn't lead me to any answers so far. If anyone recalls a thread dealing with this issue I'd love to check it out.