>>> from itertools import zip_longest
>>> import unicodedata
>>> horizontal='''半角文字に半角スペース追加しても
色々狂っちゃうのねん
みんpyの作者無能すぎるだろ・・'''
>>> tmp = zip_longest(*horizontal.split('\n'), fillvalue=' ')
>>> tmp = [[j if unicodedata.east_asian_width(j) == 'W' else ' '+j for j in i] for i in tmp]
>>> vertical = '\n'.join([''.join(i[::-1]) for i in tmp])
>>> print(vertical)
み色半
ん々角
p狂文
yっ字
のちに
作ゃ半
者う角
無の ス
能ね ヘ
すん ゚
ぎ ー
る ス
だ 追
ろ 加
・ し
・ て

>>>