应用 noBreak AppleScript Illustrator

Apply noBreak AppleScript Illustrator

我的目标是将 Illustrator with AppleScript 的不间断参数应用于文本框架中的两个单词。

我能够检测到字符串中的不间断 space。然后我需要将 no break 参数应用于字符 202 前后的单词,因为 Illustrator

不支持 no break space

在您的编辑器中打开此 Scriptlet:

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

我的Word --> 显示:Jon Doe

然后我想在文本框架中搜索 "Jon Doe" 应用不中断参数。我在 Illustrator 中手动尝试过,这可行。

您的脚本不起作用,因为您正在构建单词列表。空格(包括不间断的 spaces)是单词分隔符,因此它们不在您的单词列表 (MW) 中。

如果我们使用不间断 space 作为文本项分隔符,它将起作用:

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):

Hello my friends Jon[noBreakSpace]Doe, Jane[noBreakSpace]Doe and Joe[noBreakSpace]Doe!

输出:


请注意,在

这样的情况下这将失败

my friends J.[noBreakSpace]Doe

因为我们在重复循环中使用 word

如果您经常遇到这样的情况,请将 word -1word 1 替换为 text -1text 1。然后输出将只包含 space 周围的两个字符,但为了搜索目的,这仍然足够了。