C#でゼロ幅文字を利用する方法

ニコニコ動画や生放送では、CA(コメントアート)を利用する際に、整形のために実際には見えないけど実在する文字列を利用します。

それが、ゼロ幅文字列と呼ばれるのもなのですが、そのゼロ幅文字列をプログラム上でどのように利用するのかを紹介します。

もちろん、

string zero-weight = "(ゼロ幅文字をコピーアンドペーストで入力する)";

でもいいのかもしれませんが、

  • 見栄えが悪い
  • メンテナンスのときに混同してしまう

といった短所があります。

そこで、明示的にその文字列を利用する方法を調べてみました。

VC#では、

System.Convert.ToChar(0x200C).ToString();

を用いることで解決します。
これの0x200Cの部分を表現したい文字の文字コード(16進数)にすることでその文字に置き換えて利用できます。
ToString()の部分は、適所利用しやすい形式で利用してください。

ニコニコ動画などで一般に使われる空白文字は以下の表のようになっています。

Unicode(16進数) 使用用途
0x00A0 一番使われる空白文字です。無害で有能。幅は一般の半角スペースと同様
0x200C 基本的に化けないゼロ幅文字。ただし、big文字のときWin2000で縦棒が表示されてしまう。

この表は、
空白・特殊記号 - ニコニコ動画まとめwiki
を参考にしています。

ちなみに、私が開発しているThe菓子職人では、0x200Cを利用しています。
ただ、右寄せや左寄せのときに0x00A0などを利用しているところもあります。