#24279
redakt55
参加者

仕様ということでしょうか?
率直な感想を述べると,受け入れがたいです。

まず,技術的にはその数え方は code unit を数えているのであって,文字を数えてはいません。
JavaScript の String.length も同じ動作ですが,これは文字数を表すプロパティーではなく,UTF-16 の code unit で測った長さを返す関数です。(よく「文字数を表す」と書いてありますが,それは解説のほうが間違っている)

また,内部が UTF-16 なのは実装の都合であって,ユーザーにはあずかり知らぬことです。「メモリー上でこうなってるから 𩸽 や 𡈽 や 😀 を二文字と数えさせて」といわれても,多くのユーザーにはその意味するところさえ分からないのではないでしょうか。そして,具体的にどの文字がおかしな数え方になるかも分からないでしょう。

Microsoft Word も同じとのことですが,それは Word が異常なだけで,LibreOffice Writer はちゃんと文字数を表します。