0

Mein Ziel ist es, den No-Break-Parameter von Illustrator mit AppleScript auf zwei Wörter in einem Textrahmen anzuwenden.Apply noBreak AppleScript Illustrator

Ich bin in der Lage, das schussfreie Leerzeichen in einer Zeichenfolge zu erkennen. Dann muss ich die keinen Bruch Parameter auf das Wort nach und vor dem Zeichen 202 anzuwenden, da keine Pause Raum nicht durch Illustrator

öffnen Scriplet in Ihrem Editor unterstützt:

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 - > Anzeige: Jon Doe

Dann würde ich gerne im Textrahmen nach "Jon Doe" suchen den no break Parameter anwenden. Ich habe es manuell in Illustrator versucht, das würde funktionieren.

+0

Es sieht nicht hoffnungsvoll https://forums.adobe.com/thread/2273633 – matt

+0

Alternativ, wenn Sie wissen, wie Sie die Farbe des Wortes "JonØDoe" in einem Textrahmen ändern, wäre das wirklich hilfreich! – martinjack

+0

http://macscripter.net/viewtopic.php?id=14695 – matt

Antwort

0

Ihr Skript funktioniert nicht, weil Sie eine Liste von Wörtern erstellen. Leerzeichen (einschließlich Leerzeichen) sind Worttrennzeichen, daher sind sie nicht in Ihrer Wortliste (MW) enthalten.

Es wird funktionieren, wenn wir den nicht-break Raum als Textelement-Trennzeichen verwenden:

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 

Eingang (ourText):

Hallo Jon meine Freunde [noBreakSpace] Doe, Jane [noBreakSpace ] Doe und Joe [noBreakSpace] Doe!

Ausgang:

Output


Bitte beachten Sie, dass dies in Fällen wie

meine Freunde J. [noBreakSpace] Doe

scheitern, weil w e benutzen word innerhalb der Wiederholungsschleife. Wenn Sie häufig solche Fälle haben, ersetzen Sie word -1 und word 1 durch text -1 und text 1. Die Ausgabe enthält dann nur die zwei Zeichen um die Leerzeichen herum, aber für die Suche reicht dies noch aus.