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

Статус
Закрыто для дальнейших ответов.

teatral

Участник
Топикстартер
Сообщения
350
Реакции
365
Как вычислить ширину многострочного абзаца (берем случай абзаца не разбитого на фрэймы и колонки)?
Собственно можно перебрать все строки, найти минимальный HorizontalOffset и вычесть его из максимального EndHorizontalOffset
Это работает, но не захватывает служебный символ знак переноса (также не помогает EndHorizontalOffset последнего символа строки)
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Как вычислить ширину многострочного абзаца (берем случай абзаца не разбитого на фрэймы и колонки)?
Ширина абзаца - это ширина родительского объекта TextColumn минус отступы справа и слева.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Ширина абзаца - это ширина родительского объекта TextColumn минус отступы справа и слева.
Не факт, кстати.
Вот такой вариант:
upload_2017-1-22_13-38-27.png

берем случай абзаца не разбитого на фрэймы и колонки
Сорри, не заметил
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Кто "они"?
Человек своих скриптов писать хочет '))'
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Для начала надо определиться, что есть ширина абзаца в принципе.
Не ширина текста в абзаце, а ширина собственно абзаца.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
обственно можно перебрать все строки, найти минимальный HorizontalOffset и вычесть его из максимального EndHorizontalOffset
Это работает, но не захватывает служебный символ знак переноса
Судя по вышеописанному, вангую, что топикстартер жаждет именно физическую ширину текста внутри абзаца
 
  • Спасибо
Реакции: teatral

teatral

Участник
Топикстартер
Сообщения
350
Реакции
365
Извините, что поставил нечетко вопрос. _МВК_ прав, я ищу именно физическую (визуальную) ширину текста внутри абзаца
Красным обвел визуальную границу абзаца - то, что мне нужно:
52b3db0c3e8b45dda034526e900214ad.png
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Максимальная ширина строк в абзаце определяется шириной самой длинной строки. То есть, разницей между 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

teatral

Участник
Топикстартер
Сообщения
350
Реакции
365
Максимальная ширина строк в абзаце определяется шириной самой длинной строки. То есть, разницей между horizontalOffset последнего и первого объекта типа insertionPoint.
Спасибо, но при этом не захватывается знак переноса
 

andrejK

R.I.P.
Сообщения
10 300
Реакции
5 218

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

 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Спасибо, но при этом не захватывается знак переноса
Т.е. задача сводится к отслеживанию и взятию параметров знака переноса?
А какова вообще конечная цель этого странного действия? Может, существует менее тернистый и заднепроходный способ ее реализации? 'hmmm'
 

teatral

Участник
Топикстартер
Сообщения
350
Реакции
365
Т.е. задача сводится к отслеживанию и взятию параметров знака переноса?
А какова вообще конечная цель этого странного действия? Может, существует менее тернистый и заднепроходный способ ее реализации? 'hmmm'
В данном случае необходимо начертить рамку вокруг абзаца по границам видимых символов
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Человек хочет реализовать ParagraphBorder через скриптинг ;)
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
можно сделать фрейму (или его копии) fit to text, померить ширину, затем восстановить размер обратно
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
а, ну да.
ну может просто дать небольшой зазор и не мучиться?
 
Статус
Закрыто для дальнейших ответов.