2022-12-03

defmodule AutoRaceEx do
  def logo() do
    """

        ██     ██    ██  ████████    ████    ███████      ██       █████   ████████  ███  ███
       ████    ██    ██     ██      ██  ██   ██    ██    ████     ██   ██  ██         ██  ██
      ██  ██   ██    ██     ██     ██    ██  ██    ██   ██  ██   ██        ██         ██  ██
     ██    ██  ██    ██     ██     ██    ██  ██   ███  ██    ██  ██        ██          ████
     ██    ██  ██    ██     ██     ██    ██  ██████    ██    ██  ██        ██████       ██
     ████████  ██    ██     ██     ██    ██  ██    ██  ████████  ██        ██          ████
     ██    ██  ██    ██     ██     ██    ██  ██    ██  ██    ██  ██        ██         ██  ██
     ██    ██  ███  ███     ██      ██  ██   ██    ██  ██    ██   ██   ██  ██         ██  ██
     ██    ██   ██████      ██       ████    ██    ██  ██    ██    █████   ████████  ██    ██

    """
    |> String.split("\n")
    |> Enum.map(fn line -> "\e[38;5;24m " <> line end)
    |> Enum.join("\n")
  end
end

この作業の中で vim の set ambiwidth=double で上記の文字を表現している\u2588 表記が崩れることが分かった。 refs. Unicode ブロック要素

https://twitter.com/mattn_jp/status/1526718582264320000 にその理由が書いてあり、以下を .vimrc に書いて対応できた。

set ambiwidth=single
call minpac#add('rbtnn/vim-ambiwidth') "set ambiwidth=single でも※の後の文字表示が※とかぶるのを防ぐ