hilightファイルでUnicodeNo.02364
cho-bi さん 09/03/27 00:52
 
秀丸のhilightファイルで、Unicodeを使うことはできないでしょうか。
現在、シフトJISには無いUnicode独自の漢字などを強調するとき、
[^!-K ]という文字列を入れて強調していますが、これだとUnicode
独自の漢字がすべて強調されます。
Unicode独自漢字の一つだけや、あるいは一定の範囲だけ、というような
強調をしたいときがたまにありまして、何とかうまくできればいいなと
思っています(なにか良い方法があるのかもしれませんが)。
よろしくお願いいたします。

[ ]
RE:02364 hilightファイルでUnicodeNo.02366
秀丸担当 さん 09/03/27 09:31
 

>秀丸のhilightファイルで、Unicodeを使うことはできないでしょうか。

現状では、hilightファイルにUnicodeを使うことはできないです。

HmJre.dllの新しいバージョンでは、正規表現でUnicodeの文字コードを指定する
ことができるようになってします。
秀丸エディタには新しいHmJre.dllは入っていませんが、秀丸メールV5.16のベー
タ版には、新しいHmJre.dllが入っています。(現在 HmJre.dll V1.97 )

現状でやるためには、お手数ですが、秀丸メールのベータ版を入れていただいて、
HmJre.dllだけをコピーして秀丸エディタのフォルダに入れてやるとできるかも
しれません。

使い方は、キャラクタクラス[] で、\uXXXX という感じで書きます。
XXXXの部分にはUnicodeの文字コードを16進数で書きます。

 例:[\u3042]

範囲の指定でもできました。

秀丸エディタには、V7.xxでは添付せず、V8.00を出すときにはそちらに付ける予
定です。

[ ]
RE:02366 hilightファイルでUnicodeNo.02368
cho-bi さん 09/03/27 11:03
 
秀丸担当様、さっそくありがとうございました。いまHmJre.dllの
新しいバージョンで試してみたら、バッチリいけました。これで
ますます便利になりました。どうもありがとうございました。

[ ]
RE:02368 hilightファイルでUnicodeNo.02369
cho-bi さん 09/03/28 11:31
 
秀丸担当様、
その後、いろいろ試してみましたら、Unicodeのうち16進コード
が5桁になる文字(CJK拡張B領域の漢字など)では、[\u20005]と
いうように設定しても強調できないようです。
もし可能ならこれらも強調できれば良いのですが、なにかよい
方法がありますでしょうか。

[ ]
RE:02369 hilightファイルでUnicodeNo.02376
秀丸担当 さん 09/03/30 11:12
 

大変難しい話になってしまうのですが、16bitを超えるUnicode文字は、サロゲー
トペアという方式で2つの16bitのUnicode文字の組み合わせとして表現すること
ができます。

0x20005 の文字だとしたら 0xD840 0xDC05 という2つの文字で表すことができ
ます。
HmJreの正規表現では、[\uD840][\uDC05] と書くことでできました。

計算方法は、16進数とビットの関係をもしご理解いただけていれば簡単なのです
が、
目的の値(0x20005) から 0x10000 を引いて(=0x10005)
2進数で
1101 10xx xxxx xxxx 1101 11xx xxxx xxxx
のxの部分に0x10005を下位から埋めるように入れるとできます。


ただ、二文字に分けると、文字コードの範囲指定はややこしいことになると思い
ます。
16bitを超える文字全部を強調したいという場合は、安易にサロゲートペア1文
字目だけを判断して
[\uD800-\uDBFF].
とするといいのかもしれないのですが、ちょっと今確認した限りでは大丈夫そう
ですが、もしかしたら何か気づかないところで漏れがあるかもしれなです。

[ ]
RE:02376 hilightファイルでUnicodeNo.02383
cho-bi さん 09/03/31 10:06
 
秀丸担当様
丁寧な説明を頂き、どうもありがとうございました。
さっそく試してみたらうまくいきました。これで目的の
強調ができるようになりました。感謝いたします。

[ ]