A fun little script. You don't need to decrease the text leading if you set it to "Auto". Save the following as "smaller-text.jsx" in your local User Script folder, select any text frame and run it.
The script runs on all text linked to that text frame, so it will continue across frames if they are linked, and it is not bothered by overset text.
//DESCRIPTION: Decrease the text size incrementally of a selected text frame
// A Jongware script 23-Oct-2020
if (app.selection.length == 1 && app.selection[0] instanceof TextFrame)
{
// set the start and end values in points
startSize = 16;
endSize = 4;
// get a handle to the text frame contents
textContents = app.selection[0].parentStory.characters;
// grab the contents and get its length in characters
textLength = textContents.length;
// calculate the difference needed per character
stepSize = (startSize-endSize)/textLength;
// apply the new sizes to the text frame contents
for (i=0; i<textLength; i++)
{
textContents[i].pointSize = startSize - stepSize*i;
}
// and we're done!
} else
{
alert ("Please make sure to select a text frame first!")
}
.. with the following result, for initial and end sizes of 16 and 4 points:
