[ID CC-CC2022] Как вычислить ширину многострочного абзаца?

  • Автор темы Автор темы teatral
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

teatral

Участник
Топикстартер
Сообщения
350
Реакции
365
Как вычислить ширину многострочного абзаца (берем случай абзаца не разбитого на фрэймы и колонки)?
Собственно можно перебрать все строки, найти минимальный HorizontalOffset и вычесть его из максимального EndHorizontalOffset
Это работает, но не захватывает служебный символ знак переноса (также не помогает EndHorizontalOffset последнего символа строки)
 
Как вычислить ширину многострочного абзаца (берем случай абзаца не разбитого на фрэймы и колонки)?
Ширина абзаца - это ширина родительского объекта TextColumn минус отступы справа и слева.
 
Ширина абзаца - это ширина родительского объекта TextColumn минус отступы справа и слева.
Не факт, кстати.
Вот такой вариант:
upload_2017-1-22_13-38-27.png

берем случай абзаца не разбитого на фрэймы и колонки
Сорри, не заметил
 
Кто "они"?
Человек своих скриптов писать хочет '))'
 
Для начала надо определиться, что есть ширина абзаца в принципе.
Не ширина текста в абзаце, а ширина собственно абзаца.
 
обственно можно перебрать все строки, найти минимальный HorizontalOffset и вычесть его из максимального EndHorizontalOffset
Это работает, но не захватывает служебный символ знак переноса
Судя по вышеописанному, вангую, что топикстартер жаждет именно физическую ширину текста внутри абзаца
 
  • Спасибо
Реакции: teatral
Извините, что поставил нечетко вопрос. _МВК_ прав, я ищу именно физическую (визуальную) ширину текста внутри абзаца
Красным обвел визуальную границу абзаца - то, что мне нужно:
52b3db0c3e8b45dda034526e900214ad.png
 
Максимальная ширина строк в абзаце определяется шириной самой длинной строки. То есть, разницей между horizontalOffset последнего и первого объекта типа insertionPoint.
Код:
var para = app.selection[0].paragraphs[0];
var width = 0;
for (var i = 0; i < para.lines.length; i++) {
    var line = para.lines[i];
    var lw = line.insertionPoints[line.insertionPoints.length - 1].horizontalOffset - line.insertionPoints[0].horizontalOffset;
    if (lw > width) {
        width = lw;
    }
}
alert('Ширина абзаца: ' + width);
 
  • Спасибо
Реакции: Linxy и teatral
Максимальная ширина строк в абзаце определяется шириной самой длинной строки. То есть, разницей между horizontalOffset последнего и первого объекта типа insertionPoint.
Спасибо, но при этом не захватывается знак переноса
 

Не по теме:
ибо перенос - это как тот суслик.
его нет, но он есть!

 
Спасибо, но при этом не захватывается знак переноса
Т.е. задача сводится к отслеживанию и взятию параметров знака переноса?
А какова вообще конечная цель этого странного действия? Может, существует менее тернистый и заднепроходный способ ее реализации? 'hmmm'
 
Т.е. задача сводится к отслеживанию и взятию параметров знака переноса?
А какова вообще конечная цель этого странного действия? Может, существует менее тернистый и заднепроходный способ ее реализации? 'hmmm'
В данном случае необходимо начертить рамку вокруг абзаца по границам видимых символов
 
Человек хочет реализовать ParagraphBorder через скриптинг ;)
 
можно сделать фрейму (или его копии) fit to text, померить ширину, затем восстановить размер обратно
 
а, ну да.
ну может просто дать небольшой зазор и не мучиться?
 
Статус
Закрыто для дальнейших ответов.