Archive for the 'UnicodeChecker' Category

2017/10/05 クリップボード内のZero Width Spaceを削除する

クリップボードから、Cocoaの機能を使うと削除も置換もできないZero Width Spaceを削除するAppleScriptです。

zerowidthspace.png
ScriptableなUnicode文字情報チェックツール「UnicodeChecker」

特定のエディタ(ASObjCExplorer)が出力するものの、Cocoaの機能を使うと削除や置換ができないために、Objective-CやSwiftだけで何も対策しないで組んであると編集自体が行えないという恐怖のキャラクターZero Width Space。

各テキストエディタのZero Width Spaceへの対応度はまちまちで、

TextWranler(=BBEdit):表示および削除が可能
tetwrangler.png

CotEditor:ちょっと前まで認識・表示しなかった。最新版(v3.2.2)では表示・削除ができるようになった
coteditor.png

mi:表示できないが、Zero Width Spaceがある場所で不自然にカーソルが進まなくなるので、存在は確認できる。マウスで前後の文字ごとまとめて範囲選択して削除することは可能

といった状況です。実際にCocoaのAPIを用いて文字置換するとぜんぜんダメなので、Pure AppleScriptの機能を用いて組んでいます。

自分がMac App Storeで販売中のPDF差分検出アプリケーション「Double PDF」でもこのZero Width Space対策を行なっており、本文テキスト同士の比較時にはあらかじめ削除するようにしています。

scrit_menu_zero.png

本Scriptは利用頻度が妙に高いので、Script Menuに入れて呼び出すような運用を行っています。クリップボードにZero Width Space駆除対象文字列を入れて(コピーして)本Scriptを実行すると、クリップボード内からZero Width Spaceが駆除されます。

AppleScript名:クリップボード内のZero Width Spaceを削除する
– Created 2017-10-05 by Takaaki Naganoya
– 2017 Piyomaru Software
–http://piyocast.com/as/archives/4881
set aText to the clipboard
set bText to aText as string
set cText to repChar(bText, string id 8203, “”) of me
set the clipboard to (cText as string)

–文字置換
on repChar(origText as string, targChar as string, repChar as string)
  set curDelim to AppleScript’s text item delimiters
  
set AppleScript’s text item delimiters to targChar
  
set tmpList to text items of origText
  
set AppleScript’s text item delimiters to repChar
  
set retText to tmpList as string
  
set AppleScript’s text item delimiters to curDelim
  
return retText
end repChar

★Click Here to Open This Script 

AppleScript名:Zero Width Spaceのプロパティを取得
–http://piyocast.com/as/archives/4881
tell application “UnicodeChecker”
  properties of code point (8203 + 1)
end tell
–> {bidi mirrored:false, containing plane:plane id 0 of application “UnicodeChecker”, id:8203, line break:”ZW”, assigned:true, canonical combining class description:”Not_Reordered”, unicode name:”ZERO WIDTH SPACE”, assigned to abstract character:true, code point type:Format, class:code point, bidi class description:”Boundary_Neutral”, script name:”Common”, general category description:”Format”, bidi class:”BN”, containing block:block “General Punctuation” of application “UnicodeChecker”, general category:”Cf”, name:”", canonical combining class:0}

★Click Here to Open This Script 

2010/01/11 UnicodeCheckerで指定文字のプロパティを取得

UnicodeCheckerで指定文字のプロパティを取得するAppleScriptです。

文字種別を取得できる機能は、なにげにものすごく便利です。

ucheck1.jpg

スクリプト名:UnicodeCheckerで指定文字のプロパティを取得
set a to "" –はしご高 ( Kanji Character )
set b to "A" –alphabet A
set c to "あ" –ひらがな

tell application "UnicodeChecker"
  set aCP to code point a
  
properties of aCP
  
–> {assigned:true, canonical combining class:0, canonical combining class description:"Not_Reordered", id:39641, general category:"Lo", unicode name:"<CJK Ideograph>", class:code point, general category description:"Other_Letter", assigned to abstract character:true, bidi class description:"Left_To_Right", bidi class:"L", name:"", containing plane:plane id 0 of application "UnicodeChecker", bidi mirrored:false, script name:"Han", containing block:block "CJK Unified Ideographs" of application "UnicodeChecker"}
  
  
set bCP to code point b
  
properties of bCP
  
–> {assigned:true, canonical combining class:0, canonical combining class description:"Not_Reordered", id:65, general category:"Lu", unicode name:"LATIN CAPITAL LETTER A", class:code point, general category description:"Uppercase_Letter", assigned to abstract character:true, bidi class description:"Left_To_Right", bidi class:"L", name:"A", containing plane:plane id 0 of application "UnicodeChecker", bidi mirrored:false, script name:"Latin", containing block:block "Basic Latin" of application "UnicodeChecker"}
  
  
set cCP to code point c
  
properties of cCP
  
–> {assigned:true, canonical combining class:0, canonical combining class description:"Not_Reordered", id:12354, general category:"Lo", unicode name:"HIRAGANA LETTER A", class:code point, general category description:"Other_Letter", assigned to abstract character:true, bidi class description:"Left_To_Right", bidi class:"L", name:"あ", containing plane:plane id 0 of application "UnicodeChecker", bidi mirrored:false, script name:"Hiragana", containing block:block "Hiragana" of application "UnicodeChecker"}
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2009/07/05 UnicodeCheckerでUTF-8の文字コードを得る

Unicodeの文字情報を調べるアプリケーション、UnicodeCheckerがScriptableになっており、AppleScript内部ネイティブのUTF-16のコードをUTF-8のコードに変換できるようです。

GUI側からちょこっといじくって「それほど使えない」と判断していたのですが、AppleScriptの命令を眺めていると、かなり使える印象を受けます。AppleScriptから呼び出すのが正しい使い方なのではないかと思えてしまうほどです。

uni1.jpg

ことえりの文字パレットを表示。UTF-16、UTF-8など異なる文字コードの情報を調べられる。

uni2.jpg

UnicodeCheckerによる表示。さらに詳細な情報を調べられる。

スクリプト名:UnicodeCheckerでUTF-8の文字コードを得る
tell application UnicodeChecker
  get escaped representation of (deXHTMLized representation of “)
  
> “%E3%81%82″
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に