テキストに関するスクリプト

--選択されたテキストを調べる
--カーニング0セット
--カーニングをセット
--カレントBOXの使用FONTをGET(1文字目)
--指定したBOXのFONTをGET(1文字目)
--編集ツールで選択された文字のFONTをGET
--キャラクターのベースラインを調べる。
--キャラクターのサイズを調べる。
--テキストセット(何行目の何文字目を○○にする。)
--テキストセット2(範囲指定)
--キャラクターにプロパティをセットする。


--選択されたテキストを調べる
'tell application "QuarkXPress3.3"
'tell document 1
'get text of selection
'end tell
'end tell
'Process("QuarkXPress3.3").SendAE "core,getd,'----':
'obj {form:indx, want:type(ctxt), seld:abso(ヌ616C6C20ネ), from:
'obj {form:prop, want:type(prop), seld:type(sele), from:
'obj {form:indx, want:type(docu), seld:1, from:'null'()}}}"

Dim ae as AppleEvent
Dim obj as AppleEventObjectSpecifier
dim retest as string
ae = NewAppleEvent("core", "getd", "XPRa")
obj = GetIndexedObjectDescriptor("docu",nil,1)
obj = GetPropertyObjectDescriptor(obj,"sele")
obj = GetOrdinalObjectDescriptor("ctxt",obj,"all ")
ae.ObjectSpecifierParam("----") = obj
if Not ae.send() then
retest= ""
else
retest=ae.replystring
end if
return retest


--カーニング0セット
●AppleScriptの場合
//tell application "QuarkXPress3.3"
//tell document 1
//tell page 1
//tell text box 6
//tell story 1
//set kern to 0
//end tell
//end tell
//end tell --page
//end tell --document
//end tell
●キャプチャAEの場合
//Process("QuarkXPress3.3").SendAE "core,setd,'----':
//obj {form:prop, want:type(prop), seld:type(pkrn), from:
//obj {form:indx, want:type(cflo), seld:1, from:
//obj {form:indx, want:type(TXTB), seld:6, from:
//obj {form:indx, want:type(page), seld:1, from:
//obj {form:indx, want:type(docu), seld:1, from:'null'()}}}}},
//data:0"
●REALbasicの場合
Dim ae as AppleEvent
Dim obj as AppleEventObjectSpecifier
Dim pageNum,boxNum as integer
pageNum = 1
boxNum = 6
ae = NewAppleEvent("core", "setd", "XPRa")
obj = GetIndexedObjectDescriptor("docu",nil,1)
obj = GetIndexedObjectDescriptor("page",obj,pageNum)//ページ数を指定
obj = GetIndexedObjectDescriptor("TXTB",obj,boxNum)//ボックスナンバーを指定
obj = GetIndexedObjectDescriptor("cflo",obj,1)
if gOpKernOrTrak = 1 then
obj = GetPropertyObjectDescriptor(obj,"ptrk")
else
obj = GetPropertyObjectDescriptor(obj,"pkrn")
end if
ae.ObjectSpecifierParam("----") = obj
ae.StringParam("data") ="0"
if Not ae.send() then
return false
else
return true
end if


--カーニングをセット
'tell application "QuarkXPressェ3.3"
'tell page (1 as number) of first document
'tell text box 1
'set kern of character 5 of line 3 to 0
'end tell
'end tell
'end tell
'Process("QuarkXPressェ3.3").SendAE "core,setd,'----':
'obj {form:prop, want:type(prop), seld:type(pkrn), from:
'obj {form:indx, want:type(cha ), seld:5, from:
'obj {form:indx, want:type(clin), seld:3, from:
'obj {form:indx, want:type(TXTB), seld:1, from:
'obj {form:indx, want:type(page), seld:1, from:
'obj {form:indx, want:type(docu), seld:1, from:
'null'()}}}}}}, data:0"
//P as integer,B as integer,L as integer,C as integer,K as integer
Dim ae as AppleEvent
Dim obj as AppleEventObjectSpecifier
ae = NewAppleEvent("core", "setd", "XPRa")
obj = GetIndexedObjectDescriptor("docu",nil,1)
obj = GetIndexedObjectDescriptor("page",obj,P)
obj = GetIndexedObjectDescriptor("TXTB",obj,B)
obj = GetIndexedObjectDescriptor("clin",obj,L)
obj = GetIndexedObjectDescriptor("cha ",obj,C)
obj = GetpropertyObjectDescriptor(obj,"pkrn")
ae.ObjectSpecifierParam("----") = obj
ae.integerParam("data") =K
if Not ae.send() then

--カレントBOXの使用FONTをGET(1文字目)
●キャプチャAEの場合
//Process("QuarkXPress3.3").SendAE "core,getd,'----':
//obj {form:prop, want:type(prop), seld:type(font), from:
//obj {form:indx, want:type(ctxt), seld:1, from:
//obj {form:prop, want:type(prop), seld:type(CUBX), from:
//obj {form:indx, want:type(docu), seld:1, from:'null'()}}}}"
//*********FONTをGET*********
●REALbasicの場合
ae = NewAppleEvent("core", "getd", "XPRa")
obj = GetIndexedObjectDescriptor("docu",nil,1)
obj = GetPropertyObjectDescriptor(obj,"CUBX")
obj = GetIndexedObjectDescriptor("ctxt",obj,1)
obj = GetPropertyObjectDescriptor(obj,"font")
ae.ObjectSpecifierParam("----") = obj
if Not ae.send() then
reText = "AEERROR"
else
reText = ae.ReplyString
end if

--指定したBOXのFONTをGET(1文字目)
●キャプチャAEの場合
//Process("QuarkXPress3.3").SendAE "core,getd,'----':
//obj {form:prop, want:type(prop), seld:type(font), from:
//obj {form:indx, want:type(ctxt), seld:1, from:
//obj {form:indx, want:type(TXTB), seld:6, from:
//obj {form:indx, want:type(page), seld:1, from:
//obj {form:indx, want:type(docu), seld:1, from:'null'()}}}}}"
●REALbasicの場合
ae = NewAppleEvent("core", "getd", "XPRa")
obj = GetIndexedObjectDescriptor("docu",nil,1)
obj = GetIndexedObjectDescriptor("page",obj,pageNum)//ページナンバー
obj = GetIndexedObjectDescriptor("TXTB",obj,boxNum)//ボックスナンバー
obj = GetIndexedObjectDescriptor("ctxt",obj,1)
obj = GetPropertyObjectDescriptor(obj,"font")
ae.ObjectSpecifierParam("----") = obj
if Not ae.send() then
reText = "AEERROR"
else
reText = ae.ReplyString
end if

--編集ツールで選択された文字のFONTをGET
●キャプチャAEの場合
//編集ツールの場合。選択されたFONTをGET。
//Process("QuarkXPress3.3").SendAE "core,getd,'----':
//obj {form:prop, want:type(prop), seld:type(font), from:
//obj {form:prop, want:type(prop), seld:type(sele), from:
//obj {form:indx, want:type(docu), seld:1, from:'null'()}}}"
//*********FONTをGET*********
●REALbasicの場合
ae = NewAppleEvent("core", "getd", "XPRa")
obj = GetIndexedObjectDescriptor("docu",nil,1)
obj = GetPropertyObjectDescriptor(obj,"sele")
obj = GetPropertyObjectDescriptor(obj,"font")
ae.ObjectSpecifierParam("----") = obj
if Not ae.send() then
reText = "AEERROR"
else
reText = ae.ReplyString
end if


--キャラクターのベースラインを調べる。
'tell document 1 of application "QuarkXPress"
'tell page 1
'tell text box 1
'tell line 1
'tell character 1
'get baseline
'end tell
'end tell
'end tell
'end tell
'end tell
'Process("QuarkXPress").SendAE "core,getd,'----':
'obj {form:prop, want:type(prop), seld:type(bsln), from:
'obj {form:indx, want:type(cha ), seld:1, from:
'obj {form:indx, want:type(clin), seld:1, from:
'obj {form:indx, want:type(TXTB), seld:1, from:
'obj {form:indx, want:type(page), seld:1, from:
'obj {form:indx, want:type(docu), seld:1, from:'null'()}}}}}}"
Dim ae as AppleEvent
dim reText as string
dim reDou as double
Dim obj as AppleEventObjectSpecifier
ae = NewAppleEvent("core", "getd", "XPRa")
obj = GetIndexedObjectDescriptor("docu",nil,1)
obj = GetIndexedObjectDescriptor("page",obj,pageNum)
obj = GetIndexedObjectDescriptor("TXTB",obj,boxNum)
obj = GetIndexedObjectDescriptor("clin",obj,lineNum)
obj = GetIndexedObjectDescriptor("cha ",obj,chaNum)
obj = GetPropertyObjectDescriptor(obj,"bsln")
ae.ObjectSpecifierParam("----") = obj
if Not ae.send() then
reDou = 0
else
reText = ae.replystring
reDou = val(nthField(reText," ",1))
end if
return reDou

--キャラクターのサイズを調べる。
'tell document 1 of application "QuarkXPress"
'tell page 1
'tell text box 1
'tell line 1
'tell character 1
'get size
'end tell
'end tell
'end tell
'end tell
'end tell
'Process("QuarkXPress").SendAE "core,getd,'----':
'obj {form:prop, want:type(prop), seld:type(ptsz), from:
'obj {form:indx, want:type(cha ), seld:1, from:
'obj {form:indx, want:type(clin), seld:1, from:
'obj {form:indx, want:type(TXTB), seld:1, from:
'obj {form:indx, want:type(page), seld:1, from:
'obj {form:indx, want:type(docu), seld:1, from:'null'()}}}}}}"
Dim ae as AppleEvent
dim reText as string
dim reDou as double
Dim obj as AppleEventObjectSpecifier
ae = NewAppleEvent("core", "getd", "XPRa")
obj = GetIndexedObjectDescriptor("docu",nil,1)
obj = GetIndexedObjectDescriptor("page",obj,pageNum)
obj = GetIndexedObjectDescriptor("TXTB",obj,boxNum)
obj = GetIndexedObjectDescriptor("clin",obj,lineNum)
obj = GetIndexedObjectDescriptor("cha ",obj,chaNum)
obj = GetPropertyObjectDescriptor(obj,"ptsz")
ae.ObjectSpecifierParam("----") = obj
if Not ae.send() then
reDou = 0
else
reText = ae.replystring
reDou = val(nthField(reText," ",1))
end if
return reDou

else

end if

--テキストセット(何行目の何文字目を○○にする。)
'tell application "QuarkXPressェ3.3"
'set import styles to true
'tell page (1 as number) of first document
'tell text box 1
'set character 5 of line 3 to "123"
'end tell
'end tell
'end tell
'Process("QuarkXPressェ3.3").SendAE "core,setd,'----':
'obj {form:indx, want:type(cha ), seld:5, from:
'obj {form:indx, want:type(clin), seld:3, from:
'obj {form:indx, want:type(TXTB), seld:1, from:
'obj {form:indx, want:type(page), seld:1, from:
'obj {form:indx, want:type(docu), seld:1, from:
'null'()}}}}}, data:メ123モ"
//pageNum as integer,boxNum as integer,lineNum as integer,chaNum as integer
Dim ae as AppleEvent
Dim obj as AppleEventObjectSpecifier
ae = NewAppleEvent("core", "setd", "XPRa")
obj = GetIndexedObjectDescriptor("docu",nil,1)
obj = GetIndexedObjectDescriptor("page",obj,pageNum)
obj = GetIndexedObjectDescriptor("TXTB",obj,boxNum)
obj = GetIndexedObjectDescriptor("clin",obj,lineNum)
obj = GetIndexedObjectDescriptor("cha ",obj,chaNum)
ae.ObjectSpecifierParam("----") = obj
ae.StringParam("data") =TXT
if Not ae.send() then

else

end if


--テキストセット2(範囲指定)
ただしキャラクター4から5を"あいう"にしようと思っても
"あいうあいう"になる。
tell application "QuarkXPress3.3"
  set import styles to true
  tell page (1 as number) of first document
    tell text box 1
      set characters 2 thru 5 of line 3 to ""
    end tell
  end tell
end tell
'Process("QuarkXPressェ3.3").SendAE "core,setd,'----':
'obj {form:rang, want:type(cha ),
//seld:rang
//{star:obj {form:indx, want:type(cha ), seld:2, from:'ccnt'()},
//stop:obj {form:indx, want:type(cha ), seld:5, from:'ccnt'()}}, from:
'obj {form:indx, want:type(clin), seld:3, from:
'obj {form:indx, want:type(TXTB), seld:1, from:
'obj {form:indx, want:type(page), seld:1, from:
'obj {form:indx, want:type(docu), seld:1, from:
'null'()}}}}}, data:'TEXT'()"
Dim ae as AppleEvent
Dim obj,obj1,obj2 as AppleEventObjectSpecifier
ae = NewAppleEvent("core", "setd", "XPRa")
obj = GetIndexedObjectDescriptor("docu",nil,1)
obj = GetIndexedObjectDescriptor("page",obj,pageNum)
obj = GetIndexedObjectDescriptor("TXTB",obj,boxNum)
obj = GetIndexedObjectDescriptor("clin",obj,lineNum)
obj1 = GetIndexedObjectDescriptor("cha ",obj,chaNum1)
obj2 = GetIndexedObjectDescriptor("cha ",obj,chaNum2)
obj = GetRangeObjectDescriptor("cha ",obj,obj2,obj1)
ae.ObjectSpecifierParam("----") = obj
ae.StringParam("data") =TXT
if Not ae.send() then
//reText = "AEERROR"
beep
else

end if


--キャラクターにプロパティをセットする。
'Process("QuarkXPressェ3.3").SendAE "core,setd,'----':
'obj {form:prop, want:type(prop), seld:type(qpro), from:
'obj {form:indx, want:type(cha ), seld:28, from:
'obj {form:indx, want:type(clin), seld:2, from:
'obj {form:indx, want:type(TXTB), seld:1, from:
'obj {form:indx, want:type(page), seld:1, from:
'obj {form:indx, want:type(docu), seld:1, from:
'null'()}}}}}},
'data:{ptsz:メ24Qモ, font:メB 太ミン A101モ, ptrk:-40, pkrn:0}"
Dim ae as AppleEvent
Dim obj as AppleEventObjectSpecifier
Dim sendReco as AppleEventrecord
sendReco = New AppleEventRecord
ae = NewAppleEvent("core", "setd", "XPRa")
obj = GetIndexedObjectDescriptor("docu",nil,1)
obj = GetIndexedObjectDescriptor("page",obj,P)
obj = GetIndexedObjectDescriptor("TXTB",obj,B)
obj = GetIndexedObjectDescriptor("clin",obj,L)
obj = GetIndexedObjectDescriptor("cha ",obj,C)
obj = GetpropertyObjectDescriptor(obj,"qpro")
ae.ObjectSpecifierParam("----") = obj
sendReco.stringParam("ptsz") = Qsuu
sendReco.stringParam("font") = "B 太ミン A101"
sendReco.integerparam("ptrk") = -40
sendReco.integerparam("pkrn") = 0


ae.RecordParam("data") = sendReco//

if Not ae.send() then
//reText = "AEERROR"
else

end if