What ■ means
It keeps a solid block available when text calls for a narrow character cell.
Some older systems encoded basic Latin characters in one byte (a small unit of data) but used two-byte codes for Chinese, Japanese, and Korean characters. To preserve existing mixed-width text during conversion, Unicode keeps certain characters in narrow and wide compatibility forms. Japan’s JIS X 0201, published in 1969, is one example of the single-byte side of those systems.
A December 2024 example uses repeated ■ as filled units in a halfwidth black square progress bar, with ・ marking the remaining units.
Technical and neutral: it reads as a solid block, while its distinctive job is text width.
Don't confuse it with
1Questions people ask
1Why does halfwidth black square look different?
Because “halfwidth” names a width class, not an exact pixel ratio. Fonts and line layout determine the drawn size, so ■ may not appear exactly half as wide as ■.
How to type ■
■\FFEDCodes and encoding1 code points
A visible symbol can contain several code points. JS .length counts UTF-16 units; UTF-8 counts bytes.

