Применить noBreak AppleScript Illustrator
Моя цель - применить параметр Illustrator с AppleScript без перерывов к двум словам в текстовом фрейме.
Я могу обнаружить неразрывный пробел в строке. Затем мне нужно применить параметр без перерыва к слову после и до символа 202, так как без пробела не поддерживается Illustrator
Откройте этот Scriplet в вашем редакторе:
set ourText to "Hello my friend Jon<non-breaking-space>Doe."
set findThis to (ASCII character 202)
set MW to words of ourText
repeat with aWord in MW
if findThis is in aWord then
set myWord to aWord
exit repeat
end if
end repeat
myWord -> дисплей: Джон Доу
Затем я хотел бы найти в текстовом фрейме "Джон Доу" применить параметр без перерыва. Я попытался вручную в Illustrator, это будет работать.
1 ответ
Ваш скрипт не работает, потому что вы строите список слов. Пробелы (включая пробелы без перерывов) являются разделителями слов, поэтому их нет в вашем списке слов (MW).
Это будет работать, если мы будем использовать пробел без перерывов в качестве разделителя текстовых элементов:
use scripting additions
set theResult to {}
set ourText to "Hello my friends Jon Doe, Jane Doe and Joe Doe!" # Each name contains a no-break space
set findThis to character id 160 # Decimal notation of U+00A0 (no-break space)
set saveTID to AppleScript's text item delimiters
set AppleScript's text item delimiters to findThis # The no-break space
set countTextItems to count of text items of ourText
if countTextItems > 1 then
repeat with i from 1 to countTextItems - 1
set end of theResult to word -1 of text item i of ourText & findThis & word 1 of text item (i + 1) of ourText
end repeat
else
set theResult to "[no character id " & id of findThis & " found]"
end if
set AppleScript's text item delimiters to linefeed
display dialog theResult as text
set AppleScript's text item delimiters to saveTID
Вход (ourText
):
Здравствуйте, мои друзья Джон [noBreakSpace] Доу, Джейн [noBreakSpace] Доу и Джо [noBreakSpace] Доу!
Выход:
Обратите внимание, что это не удастся в таких случаях, как
мои друзья J.[noBreakSpace] Доу
потому что мы используем word
внутри повторного цикла.
Если у вас часто бывают подобные случаи, тогда замените word -1
а также word 1
с text -1
а также text 1
, Выходные данные будут содержать только два символа вокруг пробелов, но для целей поиска этого все еще достаточно.