Thanks, I really appreciate all the thought and detailed examples, but this is a UI feature I see in games like MTG: Arena, and it is supported by TextMeshPro. Unfortunately I will probably need to stick to TMP for this particular type of text, at least until I think of another solution or work out some manual math to figure this out (perhaps using the content size fitter approach and checking the bounding box size).
My game also has dynamic rule text that can be changed by player modifications. While I do have a character limit on how big a card can get, for readability reasons, it's not really practical to assess based on the longest "printed" preset card.
Additionally, I once used the method you suggested where I just sized the text to the biggest practical size. In working on Steam Deck compatibility, I found that on handhelds, this text size was too small and required the player to hit the "view enlarged" button on every card to understand what was happening, hence how I ended up with a larger font size for cards that can fit it. What's "readable" differs greatly from device to device, unfortunately.
Also, unfortunately, the cards are in 3D world space, so a scroll rect is probably not great for me unless I create the UX for it manually by binding to mouse scroll events. And the vertical "marquee" effect I've seen in other games, and it has some disadvantages imo in terms of readability (the player might not be ready for the text to scroll, etc.).
Regardless, thank you very much for the thoughtful responses!