Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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?

share|improve this question
    
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 '12 at 15:14
    
The document contains a mixture of Chinese and English. –  Village May 6 '12 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 '12 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 '12 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 '12 at 9:34
add comment

1 Answer

up vote 4 down vote accepted
+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?

share|improve this answer
    
With the updated version of ConTeXt, this fixes the problem. –  Village Jun 13 '12 at 0:43
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.