Fix bug in padding unicode, #17105.

I added the custom `Show` function.

One question, when it runs `format!("{:#4}", C)` with `C` being declared, `struct C;`, is that printing an object of type C or is it printing the type C without creating an object?