Creating is the most intense excitement one can come to know.
—Anni Albers, On Designing
I recently wrote a post — that was shared here on CSS-Tricks — where I looked at ways to use Unicode characters to create interesting (and random) patterns. Since then, I’ve continued to seek new characters to build new patterns. I even borrowed a book about Unicode from a local library.
(That’s a really thick book, by the way.)
It’s all up to your imagination to see the possible patterns a Unicode character can make. Although not all characters are good as patterns, the process is a good exercise for me.
And, aside from Unicode itself, the methods to build the patterns may not be so obvious. It usually takes a lot of inspiration and trial and error to come up with new ones.
More tiling
There are actually many ways to do tiling. Here’s one of my favorite tile patterns, which can be easily achieved using CSS grid:

.grid {
/* using `dense` to fill gaps automatically. */
grid-auto-flow: dense;
}
.cell {
/* using `span` to change cell size */
grid-column-end: span <num>;
grid-row-end: span <num>;
}
Grid Invaders by Miriam Suzanne is a good example of this technique.
Now, what I’m trying to do is put some Unicode characters into this grid. And most importantly, update the font-size value according to the span of its cell.

\2f3c through \2f9fI only tested with Chrome on Mac. Some of the examples may look awful on other browsers/platforms.
.cell {
/* ... */
--n: <random-span>;
grid-column-end: span var(--n);
grid-row-end: span var(--n);
}
.cell:after {
/* ... */
font-size: calc(var(--n) * 2vmin);
}
It’s a bit like the Tag Cloud effect, but with CSS. Lots of patterns can be made this way.

\2686 through \2689
\21b0, \21b1, \21b2 and \21b4The span of the columns and rows don’t always have to be the same value. We can make small modifications by changing how many rows each cell spans:

.cell {
/* only change the row span */
grid-row-end: span <num>;
}
Since the font-size property scales up/down in both directions (vertically and horizontally), the scaleY() in the transform property will be used instead.

\25c6 through \25c8:after {
/* ... */
transform: scaleY(calc(var(--span) * 1.4));
}
And here’s another one, made by rotating the inner container of the grid to some degree.

The triangles also can be drawn with clip-path and will be more responsive, but it’s nice to do something in a different way.
More modifications to the layout:

.column-odd {
transform: skewY(40deg);
}
.column-even {
transform: skewY(-40deg);
}
Now follow these transformations for each column.

\1690 through \1694Composition
Many Unicode pairs share some kind of shape with different angles. For example, parentheses, brackets, and arrows with different that go in different directions. We can use this concept to combine the shapes and generate repeatable patterns.
This pattern uses less-than and greater-than signs for the base:
">this CodePen collection.
Hope you like them and thanks for reading!