Применить 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, Выходные данные будут содержать только два символа вокруг пробелов, но для целей поиска этого все еще достаточно.

Другие вопросы по тегам