怖話でjsで文字幅を知る必要があったところ、こちらで神コード発見しました。
東アジアの文字幅 (East Asian Width) の判定 - 中途
コメント欄でお伺いを立ててますが、昔の記事なのでご覧になってないかも。余りにも神だったのでnpmのパッケージにしました。
東アジアの文字幅って何?とかは長くなるので下記参照。
類似のに比べてコードがコンパクト、そしてcharCodeAtではデフォルト対応してないサロゲートペアに対応しているのが素敵です。勝手にnpmにすんな!と言われたら直ぐ消します。すみません。
komagata/eastasianwidth · GitHub
結局、consoleとは違って等幅フォントにしても全角は半角の2倍の幅というわけじゃないのでWebでの用途(怖話)には使えませんでしたが・・・。
Install
$ npm install eastasianwidth
Usage
var eastasianwidth = require('eastasianwidth');
console.log(eastasianwidth.eastAsianWidth('₩')) // 'F'
console.log(eastasianwidth.eastAsianWidth('。')) // 'H'
console.log(eastasianwidth.eastAsianWidth('뀀')) // 'W'
console.log(eastasianwidth.eastAsianWidth('a')) // 'Na'
console.log(eastasianwidth.eastAsianWidth('①')) // 'A'
console.log(eastasianwidth.eastAsianWidth('ف')) // 'N'