JavaScript で文字列を文字ごとに分解後、半角=1、全角=2として情報を得るにはどうしたらよいでしょうか?
解決したいこと
表題の通りですが、
特定の処理をする VSCode のExtension を作りたいと思っています。その場面で、文字列処理をするときに、文字列を1文字に分解する方法はわかってきたのですが、その1文字が半角で描画されるのか、全角で描画されるのかを知りたいです。
厳密には、フォントによって、半角と全角の中間の幅の文字などがあるような気もして明確に分けられないのかもしれません。基本的にはいわゆる英数字のアスキー文字を半角としてサイズ1として、日本語の文字は全角としてサイズ2として求める方法がしりたいです。
とはいえ、アルファベットの結合文字などもあり、それは半角に入るのだろうと思うのですが、そのあたり経験がないのでよくわからないのでご存知のかたおられましたら、教えていただきたいです。
発生している問題・エラー
以前、こちらの記事を書いたことがあります。
JavaScript 文字列を反転させたい。結合文字とサロゲートペア対応。 - Qiita
https://qiita.com/standard-software/items/24a8cc99171f988e4523
そこで記載している通りで、サロゲートペアや結合文字に対応した文字列の1文字ずつの配列分解についてはわかってきました。
ただ、その1文字が半角なのか全角なのか、の判断をするときに何を判断すればよいのかがわからないです。
下記記事が大変役にたっています。
文字とは何か?IchigoJam絵文字対応とUnicodeの旅、結合文字対応の文字分割ライブラリJavaScript対応版公開! #js #IchigoJam / 福野泰介の一日一創 / Create every day by Taisuke Fukuno
https://fukuno.jig.jp/2831
JavaScript における文字コードと「文字数」の数え方 | blog.jxck.io
https://blog.jxck.io/entries/2017-03-02/unicode-in-javascript.html
だいぶ知らない事も多いため、あいまいな質問になっているかもしれませんが、アドバイスいただけたら助かります。
よろしくお願いします。