Why do some font names begin with an at-sign?

Raymond Chen

It was a simple question.

For some reason, my font selection dialog (CFont­Dialog) shows a bunch of font names beginning with the at-sign (@). These fonts don’t work correctly if I use them. Any idea what they are? (I tried searching the Internet, but search engines don’t seem to let you search for @ so it’s hard to make much headway.)

(And that’s why I wrote “at-sign” in the subject instead of using the @ character.) Fonts which begin with an @-sign are vertically-oriented fonts. They are used in languages like Chinese, Japanese, and (less often) Korean. The idea is that if you want to generate vertical text, you start with the horizontal version of the font and compose your document, then switch to the vertical version for printing.

 x x x 
It looks like you have both the SimSun and @SimSun fonts installed, so I can run this demonstration with the real live font. Just to double-check: Those two characters should look roughly the same.

It’s an unusual example, due to the use of Arabic numerals for the year, but you’ll see later why I chose it.

Start with the following text:

微軟公司成立於1975年。

when it’s time to print, switch to the vertical version of the font.

微軟公司成立於1975年。

Hm, it looks like the Chinese characters got rotated 90° to the left, so they’re all lying on their side. The result is not really all that readable, but wait, here’s the trick: After the paper comes out of the printer, rotate the paper right 90°:

微軟公司成立於1975年。

微軟公司成立於1975年。

I wasn’t able to detect that your browser supports the @SimSun font, so I’ll give an example with fake Chinese characters. Pretend that the shapes and Latin letters are actually Chinese characters. First, you compose your document with the horizontal font:

▴❤❦Quo123▴‌̥ 

When it’s time to print, switch to the vertical version of the font.

◀❥❧℺ᴝᴑ123◀°

Hm, it looks like the Chinese characters got rotated 90° to the left, so they’re all lying on their side. The result is not really all that readable, but wait, here’s the trick: After the paper comes out of the printer, rotate the paper right 90°:

◀❥❧℺ᴝᴑ123◀°

▴❤❦℺ᴝᴑ123▴°

Notice that the vertical version of a font does not simply rotate every character 90°. Non-CJK characters typically remain in their original orientation (which means that when you turn the paper, they will come out rotated). And some CJK characters change form between horizontal and vertical variants, like the period in the example above, so it’s not a simple rule like “rotate all CJK characters and leave non-CJK characters alone.” This is basically a hack to get rudimentary vertical font support in software that doesn’t support vertical text natively. (Web browsers support vertical text natively with the proposed writing-mode property.) If you don’t want vertical fonts to show up in your font dialog, pass the CF_NO­VERT­FONTS flag. Of course, if you pass that flag, then your users won’t be able to use the vertical-font trick any more.

Supplemental reading which served as the source material for this article:

Bonus head-to-head competition: You can read how Michael Kaplan blogged this exact same subject in his own Kaplanesque way.

(function(){ if (document.namespaces) { document.namespaces.add(‘v’, ‘urn:schemas-microsoft-com:vml’, “#default#VML”); for (var i = 0; i < vmlContent.length; i++) vmlContent[i].style.display = "block"; if (vmlContent.style) vmlContent.style.display = "block"; for (var i = 0; i < svgContent.length; i++) svgContent[i].style.display = "none"; if (svgContent.style) svgContent.style.display = "none"; } var c = document.getElementById("detect20120719").children; if (c[1].offsetLeft – c[0].offsetLeft != c[2].offsetLeft – c[1].offsetLeft && c[2].offsetLeft – c[1].offsetLeft == c[3].offsetLeft – c[2].offsetLeft) { document.getElementById("y20120719").style.display = "block"; document.getElementById("n20120719").style.display = "none"; } })();

0 comments

Discussion is closed.

Feedback usabilla icon