JavaScriptでNFDを結合する
String.normalize('NFKC')でNFDで濁音と半濁音が分離する現象を修正できる
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
Node.js
code:js
const nfd = '共有できるツールです'
undefined
nfd.split('')
[
'共', '有', 'て',
'゙'ÿ, 'き', 'る',
'ツ', 'ー', 'ル',
'て', '゙'ÿ, 'す'
]
nfd.normalize('NFC').split('')
[
'共', '有', 'で',
'き', 'る', 'ツ',
'ー', 'ル', 'で',
'す'
]
nfd.normalize('NFKC').split('')
[
'共', '有', 'で',
'き', 'る', 'ツ',
'ー', 'ル', 'で',
'す'
]
ブラウザでも動く
https://scrapbox.io/files/6579312cbe6fb5002419a4c2.png
変換にはNFKCを指定した方が良さそう?
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/normalize#parameters
NFC
正規化形式 C。正準等価性によって分解され、再度合成される。
NFKC
正規化形式 KC。互換等価性によって分解され、正準等価性によって再度合成される。
そうでもない。NFKCはff等の合字が分解されてしまう
code:js
'ff'.normalize('NFC').split('')
'ff'
'ff'.normalize('NFKC').split('')
'f', 'f'
'Ⓓ'.normalize('NFC').split('')
'Ⓓ'
'Ⓓ'.normalize('NFKC').split('')
'D'
String.normalizeの対応ブラウザ
https://caniuse.com/mdn-javascript_builtins_string_normalize