4

When using Chinese, heiti (黑体) fonts are the equivalent of sans serif. They generally have simple lines.

I want to use a heiti font for all of the titles and description labels in my document, however, I found when using any heiti font, the words are not appearing properly on the baseline.

This source, using STSong, STHeiti, and STKaiti, fonts available on OS X computers, demonstrates the problem:

\setscript[hanzi]
\mainlanguage[cn]
\starttypescript[serif][stsong]
    \definefontsynonym[Serif][name:stsong][features=chinese]
\stoptypescript
\starttypescript[sans][stheiti]
    \definefontsynonym[Sans][name:stheitijlight][features=chinese]
\stoptypescript
\starttypescript[mono][stkaiti]
    \definefontsynonym[Mono][name:stkaiti][features=chinese]
\stoptypescript
\definetypeface[stsong][rm][serif][stsong]
\definetypeface[stheiti][ss][sans][stheiti]
\definetypeface[stkaiti][tt][mono][stkaiti]
\setupbodyfont[stsong, 12pt]
\setuppapersize[A5]
\setuplayout[grid=yes]
\showgrid
\setupdescriptions[headstyle=\stheiti, width=2em, align=right]
\definedescription[descr]
\starttext
    \language[en]{
        {\stsong This is some text in STSong.}
        {\stheiti This is some text in STHeiti.}
        {\stkaiti This is some text in STKaiti.}
    }
    \language[cn]{
        {\stsong 这是一个句子。}
        {\stheiti 这是一个句子。}
        {\stkaiti 这是一个句子。}
    }
    \startdescr{\language[cn]{标签}}
        \language[en]{This is some text.}
    \stopdescr
\stoptext

After compiling, I find that the STHeiti text is not on the baseline on lines 2 and 7:

Example of uneven text.

  • One line 2, the STHeiti text appears a good deal above the baseline. This is more visible in the PDF.
  • Line 5 does not have any problem. Most of these characters have parts which correctly extend below the baseline.
  • On line 7, the descriptions label, in Chinese, appears much lower than the English text.

I tried substituting STHeiti with other Heiti fonts, such as Adobe Heiti Std and STXihei, but these exhibited the same problems.

Why is the text appearing at different levels? How can I ensure that the different fonts, particularly in the description environment, appear on the same baseline?

5
  • Is your text english or chinese? When I typeset english texts, the stheiti floats a fraction of a point above the baseline, but that's different from what you describe.
    – Marco
    May 4, 2012 at 15:14
  • The document contains a mixture of Chinese and English.
    – Village
    May 6, 2012 at 7:28
  • 2
    Can you include an image showing what is wrong, and add links from where the fonts can be downloaded (assuming that the fonts are free).
    – Aditya
    May 8, 2012 at 3:53
  • For a minimal example simply change the font from STHeiti to STSong on the same line. No description needed. I can see two issues here. With English text the STHeiti hovers approximately half a point over the baseline, which is clearly visible. With chinese text the lines do not obey the baselinedistance (or grid) at all, neither the STHeiti nor the STSong. Please clarify.
    – Marco
    May 8, 2012 at 10:52
  • 1
    I have updated my question to include more details. In a normal paragraph, the Chinese text appears to be placed correctly on the baseline, some characters have parts which will appear below, similar to the English letters "q", "y", "p", "g", and "j". This biggest problem I see only appears within the description environment's label.
    – Village
    May 9, 2012 at 9:34

1 Answer 1

4
+100

As far as the off-the-baseline problem is concerned, I believe this is a "problem" in the font or in the way how they try to fit both Latin and Chinese characters on the same baseline. You can try the following example in plain XeTeX and you'll get the same result:

\font\a="[STHeiti Light.ttc]"
hello \a hello  这是一个句子
\bye

You might file a feature request to adjust baseline manually for certain fonts, but then you might end up with Chinese characters being too low for the baseline.

The rest of the answer comes from Hans Hagen. You get the same problem with the following input:

\definefont[BigOne][SerifBold at 30pt]
\definedescription[descr][headstyle=\BigOne, width=2em, align=right]

\starttext
\startdescr{bla}
    \language[en]{This is some text.}
\stopdescr
\stoptext

and version 2012.05.24 15:18 is supposed to fix the problem. Can you please try it out?

1
  • With the updated version of ConTeXt, this fixes the problem.
    – Village
    Jun 13, 2012 at 0:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .