But after clicking "Reset Character," the text immediately shrinks.
Edit: This would level out differently sized letters, but still …


// 2025, use it at your own risk;
changeText ("Hxxxxx12");
////// stuff //////
function changeText (theText) {
try {
var ref = new ActionReference();
ref.putProperty(stringIDToTypeID("property"), stringIDToTypeID('textKey'));
ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
var layerDesc = executeActionGet(ref);
var textDesc = layerDesc.getObjectValue(stringIDToTypeID('textKey'));
var textStyleRange = textDesc.getList(stringIDToTypeID('textStyleRange'));
////////////////////////////////////
var textStyleRangeX = new ActionList();
for (var o = 0; o < textStyleRange.count; o++) {
var thisListItem = textStyleRange.getObjectValue(o);
if (thisListItem.getObjectValue(thisListItem.getKey(2)).hasKey(stringIDToTypeID("size")) == false && thisListItem.getObjectValue(thisListItem.getKey(2)).hasKey(stringIDToTypeID("baseParentStyle")) == true) {
if (thisListItem.getObjectValue(thisListItem.getKey(2)).getObjectValue(stringIDToTypeID("baseParentStyle")).hasKey(stringIDToTypeID("impliedFontSize"))) {
var theSize = thisListItem.getObjectValue(thisListItem.getKey(2)).getObjectValue(stringIDToTypeID("baseParentStyle")).getUnitDoubleValue(stringIDToTypeID("impliedFontSize"));
} else {}
} else {};
textStyleRangeX.putObject(stringIDToTypeID( "textStyleRange" ), thisListItem);
};
////////////////////////////////////
var desc179 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putEnumerated( stringIDToTypeID( "textLayer" ), stringIDToTypeID( "ordinal" ), stringIDToTypeID( "targetEnum" ) );
desc179.putReference( stringIDToTypeID( "null" ), ref1 );
////////////////////////////////////
var desc180 = new ActionDescriptor();
desc180.putList( stringIDToTypeID( "textStyleRange" ), textStyleRangeX );
desc179.putObject( stringIDToTypeID( "to" ), stringIDToTypeID( "textLayer" ), desc180 );
////////////////////////////////////
textDesc.putString( stringIDToTypeID( "textKey" ), theText );
desc179.putObject( stringIDToTypeID( "to" ), stringIDToTypeID( "textKey" ), textDesc );
executeAction( stringIDToTypeID( "set" ), desc179, DialogModes.NO );
if (theSize) {activeDocument.activeLayer.textItem.size = theSize};
} catch (e) {alert (e)}
};