Last July, I discussed the issue of fonts and handwriting in connection with reading Chinese menus. To summarise, I had two main points:
- The more practice you get at reading Chinese characters in different fonts, the better you will be at it.
- Certain characters, such as 包 (bāo/package/bun) and 拌 (bàn/mixed), seem to vary between fonts in ways that to a naïve eye might make them appear to be different characters.
The first of these is fairly straighforward, but the second gave rise to some interesting discussion in the comments. Firstly, pulchritude pointed out that some of the examples I gave may only show differences when a Chinese font is compared to a non-Chinese (e.g. Japanese) font, though this doesn't get us off the hook either, since I've certainly seen such characteristics in at least one font used on Chinese menus in London.
Also, shuripentu noted that while 包 doesn't seem to mind whether its central rectangular area is closed or open, there's at least one set of three characters, with different meanings, that differ only in terms of whether the rectangular area is closed, half-closed, or open: 己, 已, and 巳.
Clearly this is a complicated issue! So I was quite pleased to recently run across the Wikipedia article on variant Chinese characters. It appears that while some of these variations are in fact down to aesthetic choices made by the designer of the font, others are considered to be true differences in the basic form of the character.
This might seem an arbitrary distinction, but when it comes to using Chinese characters in a computing context, the difference is explicit. Sets of variants which are considered sufficiently different will either be mapped to different Unicode code points[see footnote], or all mapped to the same code point but distinguished from each other by so-called language tags.
A brief digression here to explain what I mean by a code point. A code point is essentially a numeric label for a character. To simplify vastly, when you type and save a document on your computer, it doesn't store the individual pixels that make up the representation of the letters on your screen, but rather these numeric labels. When you come to view the document again, it reconstructs how it should look, using the characters' code points along with your chosen font(s) and other formatting information. It's easy to redisplay what you've written in a different font, because the underlying characters haven't changed.
I'm not aware of any common menu characters that are mapped to different code points, but there are some which are mapped to the same code point but have different representations under different language tags. Below are some examples of the same character rendered "in mainland Chinese" (zh-cn), "in Hong Kong Chinese" (zh-hk), and "in Japanese" (ja). These may or may not look different, depending on your browser setup, so I've added a screenshot of how they look to me (transcript in the alt tag).
What does this mean for the student of the Chinese menu? Perhaps not a great deal in practical terms. In general, the degree of this type of variation is much smaller than the degree of variation between traditional and simplified characters. Also, unlike the traditional/simplified case, I'm not aware of any patterns that you can use to predict how a character might vary. Finally, regardless of whether or not a character's variations are captured by different code point allocations, the most important thing is to become familiar with them to the point where you can confidently recognise them as the same character.
I still think it's interesting, though! And hopefully you do too.
Footnote:  Incidentally, this type of variation is by no means confined to Chinese script. In the Latin alphabet, for example, the lowercase letter "a" has two main basic forms of representation. The one most commonly used in handwriting (at least in the UK) takes the form of a circle with a vertical stroke down the right-hand side. The other has a hooked extension to this vertical stroke, curving back to the left over the circular part. (See diagram on Wikipedia.) In most contexts, the difference between the two is unimportant, a mere matter of the font designer's preference. However, in the International Phonetic Alphabet (IPA), they represent different vowel sounds, and so there are two relevant Unicode code points: "a" (U+0061/LATIN SMALL LETTER A) and "ɑ" (U+0251/LATIN SMALL LETTER ALPHA). Depending on the font you're using in your browser, "a" and "ɑ" may look quite similar to each other, or very different. pne has a couple more examples in comments.