最終更新日 2025-07-22
HmNormToStandardChar
(文字の揺れを修正し、通常利用される文字へと正規化する)
概要
Unicode上で「ぱっと見は同一文字」に見えても、「実際には違う文字」となってしまっていることがあります。
「文字の揺れ」を妥当な形で修正し、正規化するマクロです。
あくまでも「文字の揺れ」を直すものであり、「ですます調」などの「文章の揺れ」を直すものではありません。
ダウンロード
更新日 2025/03/19
動作環境
-
秀丸
秀丸エディタ ver9.25以上
(秀丸エディタ ver8.99でも動作するマクロを添付しています) -
.NET Framework 4.8以上
Windows 11なら最初から入っています。
Windows 10でも余程敬遠していない限りは入っています。
インストール
- HmNormToStandardChar.zipをダウンロードする。
-
.zipファイルをブロック解除(or 許可する)する
(原則的にはブロック解除(or 許可する)をする必要があります) -
zipを解凍し、普段マクロを置いているようなディレクトリに、
・HmNormToStandardChar.dll
・HmNormToStandardChar.mac
・HmNormToStandardCharマクロ.mac
の3つをコピー。
使い方
文字の揺れが起きているファイルを秀丸で開いて、
- HmNormToStandardChar.mac、
もしくは
- HmNormToStandardCharマクロ.mac
を実行。
具体的な挙動
NFCやNFKCで一括変換といった単純なものではなく、以下のように調整しています。
- 1文字ずつ走査します。
ここでいう「1文字」とは、サロゲートペアなど「複数の文字で1つの文字」を形成している場合、その「複数の文字全体」を1文字として取り扱います。 - 文字がsjisの文字に収まっている場合、それをそのまま採用します。
- 文字がsjisの文字に収まっていない場合、「NFC」でUnicode正規化を試みます。
この変換の結果、「何らかの文字変換が行われた」場合、それを採用します。 - 上では文字の変化が起きなかった場合、該当文字を「NFKC」でUnicode正規化を試みます。 この変換の結果、「元の文字とバイト数が同じか、それ以下の場合のみ」それを採用します。
以上の形で「文字の揺れ」を解消しています。
Visual Studio Code で同じ機能
NormToStandardJapanChar にて、同じ作者である私が提供しています。
(但し、秀丸で提供しているものは、C#かつ並列スレッドで処理しているため、秀丸で提供してるものの方が10~200倍ほど高速です)
ライセンス
-
HmNormToStandardChar
HmNormToStandardChar は MIT ライセンスとなります。
ソースの場所
- Githubにソースがあります。
- Githubにソースがあります。