Я бы пошел с количеством символов, умноженным на ширину буквы «м», что является классическим способом определения верхней границы. Я не могу критиковать то, что вы собираетесь делать, но я считаю, что формы, которые перемещают элементы, могут быть эффективными с точки зрения пространства, но ужасны в использовании. Пользователь видит текстовое поле здесь, затем данные загружаются, и текстовое поле внезапно перемещается. Пользователь потратил время на пересмотр формы, чтобы снова сориентироваться, заново установив ориентиры, которые все равно будут смещаться после загрузки нового фрагмента текста. Вы обменяли пространство на время и становитесь беднее в сделке. Может быть, это не относится к тому, что вы делаете, но если это так, подумайте об этом.
Есть причина, по которой нет очевидного способа сделать то, что вы хотите.
Обновление:
Из corvus: "Таким образом, пользователь может видеть весь текст ... Конечно, должен быть нижний предел, но я начну с довольно большого размера шрифта;) -"
Ах, хорошо. Некоторые мысли по этому поводу. Предположительно, ваше поле данных в любом случае имеет верхний предел с точки зрения размера. Скажи 80 символов. Фиксированное поле такого размера лучше, чем поле, которое щелкает взад-вперед, по причине, которую я привел выше. Но также знайте, что «правильная» длина строки текста составляет около 60 символов или около того. Это связано с сотнями лет опыта верстки в Гутенберге. Даже это просто среднее значение, и вы можете перейти по этой ссылке для подробной эвристики для оценки идеальной длины линии . Если текст, с которым пользователь будет взаимодействовать (либо чтение, либо ввод), длиннее 60 символов (или любой идеальной длины строки, которую вы определяете), то, возможно, вам понадобится многострочная TextArea.