What a big Rubik’s Cube taught me about Chinese characters
I know these are questions you have been asking yourself ever since you first came into contact with Chinese, and I’m here to help you answer them!
Joking aside, last year, I embarked on a project to write 揭密中文 using Rubik’s Cubes. 揭密中文 is the Chinese title of this website; you can read more about the name here. This is also where you should go if you think I’ve used the wrong 密.
Tune in to the Hacking Chinese Podcast to listen to the related episode (#273).
Available on Apple Podcasts, Spotify, YouTube and many other platforms!
What a big Rubik’s Cube taught me about Chinese characters
So, the question is: Can we use this:
To write this:
The answer is “yes”, but the road there turned out to be more interesting than I thought from a language perspective, so in this post, I’ll share what I learnt!
Here’s an overview:
- How to write 揭密中文 using Rubik’s Cubes
- How small can a Chinese character be while still being legible?
- What’s the smallest resolution needed to display Chinese text?
- Different Chinese characters require different resolutions
- Chinese characters are not read in isolation
- It’s possible to read a Chinese character without even seeing it
- Chinese pixel fonts and LCD displays
- The smallest possible Chinese pixel font: 16×16?
- Can we display Chinese characters with fewer than 16×16 pixels?
- Chinese characters are readable at 12×12 pixels
- Chinese 8×8 pixel fonts dance on the edge of readability
- Writing 揭密中文 using Rubik’s Cubes
- Creating a Chinese pixel font is not easy
- A 10×10 Rubik’s Cube is actually not a grid with 10×10 pixels
- Heureka! Rubik’s Cubes are not black and white!
- Some notes on big Rubik’s Cubes (feel free to skip)
- Lo and behold! 揭密中文 written using Rubik’s Cubes
How to write 揭密中文 using Rubik’s Cubes
The basic challenge is to write characters using Rubik’s Cubes. Clearly, this can’t be done with normal 3×3 cubes unless you use many of them. Considering that people have used 109,000 cubes to create a giant mosaic, you can obviously write Chinese characters.
But this is cheating. I want to use one face of a cube for each character. That means we need at least two cubes, since we can use two faces on each cube for a total of four characters.
Thus, we enter the rabbit hole: How small can Chinese characters be while remaining legible? How many pixels do you need to write characters? How big Rubik’s Cubes do you need?
Naturally, I’m going to focus on the Chinese side of the challenge. Solving big Rubik’s Cubes is not on-topic for Hacking Chinese, but it’s not terribly hard if you know how to solve smaller cubes.
So, let’s dive in. First, how big a cube do we need?
How small can a Chinese character be while still being legible?
This might seem like a simple question, but it’s not.
For example, how good is your eyesight? If you see twice as well as I do, you can see a character half the size.
I can compensate for my poor eyesight, though! If I have a camera, I can zoom and read the character anyway.
This is neither surprising nor interesting, so we need to approach the question from a different angle. This is not about absolute size.
What’s the smallest resolution needed to display Chinese text?
Another way to approach the issue is to think in terms of resolution, or pixels of a fixed area, such as that of a character on a page or screen.
In short, how many pixels do you need to write Chinese text while keeping it legible?
A primitive way to figure out the minimum resolution is to simply check the most complex character and see how many horizontal and vertical pixels we need.
Different Chinese characters require different resolutions
But which characters are we writing?
We only need one pixel vertically and two horizontally to write 一 (yī), “one”, but to write 𪚥 (zhé), “verbose; talkative”, we need at least 22 pixels vertically and 16 horizontally if we want to show all strokes. In case the fonts you have installed can’t display that character, here’s an image for you:
This seems a bit unfair, though, considering that 𪚥 is not used in normal texts. This introduces subjective judgment about which characters we include and which to skip.
It should also be clear that simplified characters can be displayed in a legible manner with lower resolution than traditional characters, even if traditional characters are probably easier to read in general.
But let’s say, just for the sake of argument, that we want to write the Chinese title of this website: 揭密中文.
What’s the lowest number of pixels we need?
Chinese characters are not read in isolation
This question can’t be answered either; deeper into the rabbit hole we go!
So far, we have just looked at individual characters, but just like in all languages, reading in Chinese is not primarily about decoding individual glyphs.
The question is not if you can read a single character out of context, but if you can read it in context. And there’s almost always context.
Building meaning from the smallest parts, such as individual characters, is called bottom-up processing and is a necessary part of reading comprehension. But there’s far more to reading comprehension than that!
It’s possible to read a Chinese character without even seeing it
In most cases, top-down processing matters more than bottom-up processing. When you read a text, you also use what you already know and understand to comprehend what you’re reading.
I discussed this in detail for listening comprehension in these two articles, but the same can be applied to reading as well:
- Beyond tīng bu dǒng, part 2: From sound to meaning in Mandarin
- Beyond tīng bu dǒng, part 3: Using what you already know to aid listening comprehension in Chinese
For example, if you show this to someone who has a basic reading ability in Chinese, they will know what the third character is:
打喷�/打噴�
You don’t even need to see the character to know that it’s 嚏, because 打喷嚏/打噴嚏 (dǎ pēntì), “to sneeze”, is the only common phrase that begins like this.
In that sense, you need 0x0 pixels, or no information, to “read” that character.
This was not a cherry-picked example! The principle can be applied anywhere, to varying degrees, but it does assume that the reader is literate in Chinese. If you don’t know that there is only one common phrase that fits, you won’t be able to read the character.
Beyond tīng bu dǒng, part 3: Using what you already know to aid listening comprehension in Chinese
Chinese pixel fonts and LCD displays
This is not just a topic of interest to people like me who happen to find both Chinese characters and Rubik’s Cubes interesting. There are real, practical applications where it matters.
For example, if we’re designing an LCD display, which has pixels, on a very small device, how few pixels can that display have and still reliably be used to display Chinese text?
Well, we know the answer is somewhere between 2×2 and 22×22 pixels, because we have 一 and 𪚥 as extreme cases, but what’s the sweet spot?
Is it 18?
Or maybe 12?
Or 8?
How big does the Rubik’s Cube need to be?
If you like, take a minute to think about this and take a guess!
The smallest possible Chinese pixel font: 16×16?
As already established, there can’t be an objective answer to this question, because it depends on exactly what characters you’re going to display and how sure you want to be that people can read them.
In other words, you can always reduce the number of pixels if you’re okay with a drop in comprehension.
There are many pixel fonts available for Chinese, so let’s have a look at a few.
Let’s start with something pretty safe, like 16×16. Let’s also keep using the Chinese name of this website as an example: 揭密中文.
Here it is in 16×16 using the font Fonsung-211030:
Here it is in a longer text (the intro to Escape!):
Using this text as an example is a tradition here on Hacking Chinese. You can also see the same text written by different people here: 36 samples of Chinese handwriting from students and native speakers.
36 samples of Chinese handwriting from students and native speakers
Can we display Chinese characters with fewer than 16×16 pixels?
At least for this text, and for most texts, 16×16 is very clearly legible.
So, is that the answer, then?
No. I don’t want to stop here and just use two 16×16 Rubik’s Cubes for several reasons:
- They’re expensive! Such big cubes are actually mass-produced these days, but they still cost around $500 USD to buy. If you want to donate two 16×16 cubes to me, let me know.
- They take a ludicrous amount of time to solve! Solving big Rubik’s Cubes is not hard; it’s essentially the same as solving smaller cubes, but more tedious and takes longer. A lot longer.
- It’s intellectually unsatisfactory! We can clearly go smaller than 16×16, so let’s keep pushing. How small can we go?
Let’s try 12×12!
Chinese characters are readable at 12×12 pixels
Here is the same text, now written with the font 方正像素12:
And one of the characters we’re interested in, but bigger:
This is also legible, at least for a proficient reader.
We can go smaller, though, and I don’t want to buy or solve bigger cubes than I have to!
Chinese 8×8 pixel fonts dance on the edge of readability
At 8×8, native speakers can read the characters with context, and, as mentioned, there is always context. Here’s the text with the font QuanPixel 8px (actually 7×7 with one pixel spacing):
If you struggle to read this as a second-language learner, you can be forgiven. Some characters are easy: 一个小房间 is perfectly readable. Others are harder, such as 敲, 窗 and 跑.
Here’s 揭密中文 zoomed in:
For Chinese text in general, we really can’t go lower than this.
Writing 揭密中文 using Rubik’s Cubes
Fortunately, I’m not after text in general. I want to write four specific characters: 揭密中文.
We can clearly see that the first two characters are more complex than the remaining two.
It turns out you can write 中文 using only 5×5 pixels. You don’t need a professionally designed font for this; you can just play around a bit.
Clearly, 中文 is not going to be an issue. Since I already own a 7×7 cube and I use my 5×5, we might as well use the 7×7 to write 中文:
Great! Halfway there!
But what about 揭密?
As we’ve seen, 8×8 is readable. While a native speaker can probably guess the characters, it’s not very pretty to look at. Here are two variants:
While those might be readable for a proficient reader with context, I don’t think they’ll look very good on their own on a big Rubik’s Cube.
What about creating our own “font” specifically for the characters we need?
Creating a Chinese pixel font is not easy
You’d think that creating a pixel font is easy. Can’t you just take a character and lower the resolution to what you want?
Well, that kind of works if your goal is 16×16, but it does emphatically not work for smaller sizes. Here’s a 160×160 character scaled down to 16×16. Looks okay.
Here’s the same character scaled down to 8×8, which I think can’t be called “legible”:
Obviously, you can’t show every single stroke of a complex character using only 8×8 pixels, so you have to reinvent the character and find the best way to write something that makes people think of the right character. This is not easy!
Compare with the 7×7 font I showed above, which is even smaller, but still more readable!
In fact, there’s a whole lot of creativity invested into these small fonts, and I’m truly impressed by how the designers tweaked and moved pixels to make complex characters legible.
Just moving a few pixels turns an illegible character into one that is identifiable in context. Now imagine doing this thousands of times when designing a full font!
A 10×10 Rubik’s Cube is actually not a grid with 10×10 pixels
Now we know enough to start thinking about the actual goal: To write Chinese characters on Rubik’s Cubes.
At this point, I had already bought a 10×10 cube, because I figured that ought to be enough. Here is an early attempt to write 揭密 on a 10×10 grid.
Why the thick strokes on the edges? On big Rubik’s Cubes, the edge and corner pieces are much bigger than the other pieces, which means that even if you in theory have a 10×10 grid, the pixels on the edge are actually rectangles with an aspect ratio close to 2:1.
I relied on this pixel art website to create these.
Heureka! Rubik’s Cubes are not black and white!
Then, suddenly, it hit me: A Rubik’s Cube is not black and white!
“Really?” you say.
Yes, really! You can use three colours for each character.
This makes it possible to write components in characters next to each other, without spacing in between, which allows you to write characters that are much more legible with the same number of pixels.
Here’s my final design:
Note that I can let the 扌 touch the 曷, and that I can make 必 touch both the 宀 and the 山. This would lead to a cluttered mess using only two colours. Compare this with the earlier design using only two colours:
Some notes on big Rubik’s Cubes (feel free to skip)
I won’t go into details about how to solve a Rubik’s Cube here, let alone how to solve a 10×10 cube, but in general, solving a 10×10 cube is not much harder than solving a 4×4, just much more tedious. If you want to learn this, the progression looks something like this:
- Learn to solve a 3×3 (anyone can do this in 30 minutes with a good tutorial)
- Learn to solve a 4×4 (considerably easier than step 1)
- Learn to solve any NxN (much easier than either of the above steps)
I’ve linked to tutorials on YouTube above, but here I will focus on a few key points relevant to my project that you don’t need to know how to solve the cube to follow.
To begin with, you have to choose colours wisely. While centre pieces can be moved around more or less at will (as long as you don’t care about the other four faces, which we don’t), this is not true for edge and corner pieces.
For example, since white and yellow are opposite faces on the solved cube, there are no edge or corner pieces that are white and yellow. This means that some high-contrast versions are unavailable. It’s impossible to use white and yellow as background colours on two adjacent faces, which is why I use white and green.
Finally, it’s worth noting that it matters if the order of the cube is an even or odd number. With even numbered cubes, like 10×10, the colour of each centre is not fixed, and you don’t have a central axis for writing characters (the middle line goes between two pixels).
On a cube of uneven order, the centre pieces are fixed, which means the colours I chose above would be impossible to achieve on a 7×7 or 9×9. On the other hand, you have a central axis, so writing something like 中 is pretty easy. On an 8×8, the skewering vertical stroke would have to be either twice as thick or off-centre.
Lo and behold! 揭密中文 written using Rubik’s Cubes
Now that we have a design, the only remaining challenge is to execute it on actual Rubik’s Cubes. Hacking Chinese is not about solving big Rubik’s Cubes, so I won’t go into details here.
To put it very briefly, though, if you can solve big cubes (and if you can’t, you might want to learn that first), you already know commutators well. These can be used to manipulate the centres of a solved cube to show what you want. You can do the same thing for edges and corners, and voilà:
That’s it, Hacking Chinese, written on a 10×10 and a 7×7 Rubik’s Cube. Mission accomplished!
I’m rather happy with the result, and like I said in the introduction, this project was much more interesting from a language perspective than I could ever have imagined. I hope you found this interesting too.
If you’ve read this far, please let me know in the comments below!
Leave a Reply
You must be logged in to post a comment.