In UTF32, a code point is 4 bytes, but fmt only keeps 2 bytes when parsing it into fill: https://github.com/fmtlib/fmt/blob/cc2ba8f9ede4e5ae3262f43f3e4d07a22a9acdfc/include/fmt/base.h#L800-L825 meanwhile, UTF8 can keep 4 bytes for fill. repro: https://godbolt.org/z/qfTKe6W6c