Rubyで濁点を分離したい


Rubyでひらがなから濁点を分離したいと考えていますがどのような実装が考えられるか教えていただけませんでしょうか？

### 例

[code]

    a = remove_dakuten('だ')
    puts a
    \# た゛
    
[/code]




Unicodeっぽく処理をするのであれば、NFD正規化で濁点を分離できます。

[code]

    "だ".unicode_normalize(:nfd) #=> 「た」+U+3099
    
[/code]

ただし、この分離された濁点文字(U+3099)は前の文字と結合するための特殊な文字なので、通常の濁点文字(U+309B)にしたい場合は次のように変換すればいいと思います。

[code]

    "だ".unicode_normalize(:nfd).tr("\u3099", "\u309b") #=> 「た」+「゛」
    
[/code]

半濁点も同様にするにはこんな感じで。

[code]

    "ぱ".unicode_normalize(:nfd).tr("\u3099\u309a", "\u309b\u309c") #=> 「は」+「゜」
    
[/code]




Unicodeっぽく処理をするのであれば、NFD正規化で濁点を分離できます。

[code]

    "だ".unicode_normalize(:nfd) #=> 「た」+U+3099
    
[/code]

ただし、この分離された濁点文字(U+3099)は前の文字と結合するための特殊な文字なので、通常の濁点文字(U+309B)にしたい場合は次のように変換すればいいと思います。

[code]

    "だ".unicode_normalize(:nfd).tr("\u3099", "\u309b") #=> 「た」+「゛」
    
[/code]

半濁点も同様にするにはこんな感じで。

[code]

    "ぱ".unicode_normalize(:nfd).tr("\u3099\u309a", "\u309b\u309c") #=> 「は」+「゜」
    
[/code]

