Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
tell application "Adobe InDesign 2021"
try
--選択テキストを取得する
set curSelection to object reference of selection of document 1
if class of curSelection is in {text, character, word, line, paragraph, text style range, text column} then
set everyChar to object reference of every character of curSelection
--1文字ずつ処理をする
repeat with aChar in everyChar
--OpenType featuresを取得
set aOTF to OpenType features of aChar
--空ではなかったらフィーチャーを取得
if aOTF is not {} then
set aOTF to item 1 of item 1 of aOTF
--フィーチャーがaaltかnaltならサブルーチンのreWriteで処理をする
if (aOTF is "aalt") or (aOTF is "nalt") then
my reWrite(aChar)
end if
end if
end repeat
end if
end try
end tell
--異体字属性を消すためにcontentsを書き換えるサブルーチン
on reWrite(theChar)
tell application "Adobe InDesign 2021"
if length of theChar is 1 then
--ruby flagがtrue
if ruby flag of theChar then
--ルビが消失しないように書き換える
--ここは達人に書いてもらったところなので私にもよくわからない
set theLineRange to object reference of paragraph 1 of theChar
set flagList_1 to ruby flag of every character of theLineRange
set theRubyString to ruby string of theChar
set theContents to contents of character 1 of theChar
set insertion point 2 of theChar to theContents
delete character 1 of theChar
set flagList_2 to ruby flag of every character of theLineRange
set n to count flagList_1
set i to 1
set numList to {}
repeat n times
if item i of flagList_1 and (not item i of flagList_2) then
set end of numList to i
end if
set i to i + 1
end repeat
try
set properties of text from character (item 1 of numList) to character (item -1 of numList) of theLineRange to {ruby string:theRubyString, ruby flag:true}
end try
else
--ruby flagがfalse
--単純に書き換える
set theContents to contents of character 1 of theChar
set contents of character 1 of theChar to theContents
end if
end if
end tell
end reWrite
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.