InDesign всегда возвращает координаты и другие свойства, имеющие размерность, в тех единицах, которые установлены по умолчанию. При этом нетрадиционные представления величин, такие как "1р6" и им подобные, автоматически конвертируются в традиционные (в нашем случае - в 1,5). Сделано это во избежание потенциальных проблем при выполнении арифметических действий (например, при сложении "1р6" с "3"), в то же время 1,5 + 3 даст корректный результат - 4,5.
Если вам предстоит выполнение арифметических действий, можно изменить единицы измерения на нужные на период работы скрипта, а впоследствии прежние значения восстановить. Альтернативный вариаит- явное задание требуемой единицы (табл. 4.1).
Таблица 4.1. Допустимые единицы измерения в InDesign
Сокращение |
Обозначение |
Пример |
с |
Цицеро |
1.4с |
cm |
Сантиметр |
,0635cm |
i (in) |
Дюйм |
,25i |
mm |
Миллиметр |
6.35mm |
Pt |
Пика |
1р6 |
P |
Типографская точка |
18pt |
Тип размерности хранится как свойство viewPreferences объекта application.viewpreferences, который, в свою очередь, также является объектом с двумя свойствами: для горизонтального направления -
horizontalMeasurementUnits И вертикального - verticalMeasurementUnits. Возможные значения:
MeasurementUnits.agates;
MeasurementUnits.picas;
MeasurementUnits.points;
MeasurementUnits.inches;
MeasurementUnits.inchesDecimai;
MeasurementUnits.centimeters;
MeasurementUnits.ciceros;
MeasurementUnits.custom.
Объект MeasurementUnits необходимо указывать обязательно.
Изменение настроек, установленных в приложении по умолчанию, происходит так, как показано в листинге 4.10.
Листинг 4.10. Изменение настроек приложения
var myDocument = app.activeDocument; with(myDocument.viewPreferences){
horizontalMeasurementUnits = MeasurementUnits.points; verticalMeasurementUnits = MeasurementUnits.points;
I
Если необходимо изменить единицы измерения только временно, на период выполнения каких-то операций, потом потребуется восстановить значения, используемые по умолчанию (листинг 4.11).
Листинг 4.11. Изменение и восстановление настроек приложения
var myDocument = app.activeDocument with (myDocument.viewPreferences) i
// Запоминаем текущие установки
var myOldXUnits = horizontalMeasurementUnits;
var myOldYUnits = verticalMeasurementUnits;
// Устанавливаем новые
horizontalMeasurementUnits = MeasurementUnits.points; verticalMeasurementUnits = MeasurementUnits.points;
I
II Здесь выполняется основной код
II Восстанавливаем прежние значения with (myDocument.viewPreferences){
tr-{
horizontalMeasurementUnits = myOldXUnits; verticalMeasurementUnits = myOldYUnits;
)
catch (myError)
{
alert("Ошибка восстановления прежних единиц измерения");
}
}
На случай непредвиденных ситуаций в процессе отладки скрипта желательно постоянно пользоваться конструкцией try{) catch (err) {}- она не даст скрипту "зависнуть", а лишь проинформирует вас о необходимости более тщательной проверки условий работы скрипта.