少し詳しい技術的な話も追記します
wineだとGetTextMetricsしたときにtmAveCharWidthで横幅が取れるのですがそこが文字2個分になります。(UDフォントだけ)
軽くググったら似たような例も見つけました(UDフォント) https://github.com/vim-jp/issues/issues/1235 https://github.com/vim/vim/commit/93d77b2cbec08518ee426d0c44c50cf505732443 横幅がバグっているフォント(これもUDフォント)があるので横幅を取得できない。実際に24文字出力して割って1文字分の幅を計算するという苦肉の策で解決したようです。
やはりUDフォントはバグっているような気がします。
※proton mailだとメーリングリストに返信できないので新規スレッドになってしまいます。ごめんなさい