TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to combine Helvetica World (for roman, cyrillic, greek and arabic) and Hei Std (for simplified chinese) in one document with LuaLaTeX. Hei Std probably hasn't all the glyphs from Helvetica World and Helvetica World certainly hasn't all characters from Hei Std.

Can I get LuaLaTeX to automatically choose the right font based on the input, i.e. can I combine fonts into one "virtual font"? I don't want to switch the fonts manually.

Out of curiosity I'm also interested in a solution for XeLaTeX, but I need one for LuaLaTeX.

share|improve this question
the package unicode-math can handle different fonts for a defined range of characters. For a text font it maybe possible in the same way – Herbert Jul 11 '12 at 11:00
For XeLaTeX the best is probably to use xeCJK (see e.g. tex.stackexchange.com/questions/21046). This uses \XeTeXinterchartoks. For luatex there has been some discussion to implement something similar (tex.stackexchange.com/questions/21625) but the code suggested there by Taco has some problems (see the comment of Manual). I don't know if someone created something better (or is working on it). – Ulrike Fischer Jul 11 '12 at 12:21
@Herbert: this works for unicode-math because in math each symbol specify its font, in text mode it is entirely a different matter. ConTeXt support script and range-based font fallbacks without even using virtual fonts, so it is certainly possible... – Khaled Hosny Jul 11 '12 at 13:45
It seems both xeCJK and luatexja are not widely heared by people out of China/Japan, although they are quite useful and somewhat stable now. I myself didn't notice luatexja until early this year. – Leo Liu Aug 22 '12 at 14:18
up vote 4 down vote accepted

Yes, for XeLaTeX, you should use our xeCJK package. For Chinese typesetting in xeCJK, see my previous answers tagged cjk.

A simple example:

% UTF-8 encoding, compile with XeLaTeX

\setCJKmainfont{Microsoft YaHei}

Arial font and 微软雅黑

And for LuaLaTeX, you can use luatexja-fontspec package from luatexja bundle. luatexja is originally designed for Japanese, but also useful for Chinese (due to Ma Qiyuan's work).

A simple example, very similar to xeCJK:

% UTF-8 encoding, compile with LuaLaTeX

\setmainjfont{Microsoft YaHei}

Arial font and 微软雅黑

The English document of luatexja: http://mirror.ctan.org/macros/luatex/generic/luatexja/doc/luatexja-en.pdf

In ctex bundle, we shall also support luatexja as one of the background package. The new version has not been released.

share|improve this answer
Seems nice. It would be much more useful with a bit of english documentation... :-) Maybe an article in TUGboat? – Martin Schröder Aug 22 '12 at 17:34
@Martin: luatexja does have English document (and also in Japanese and Chinese). xeCJK 2.x used to have a document both in Chinese and English, but I'm sorry we updated the new version (3.x) and the English document is not ready yet. Sorry. – Leo Liu Aug 23 '12 at 13:19
I'm still interested in a solution with luatexja. – Martin Schröder May 16 '14 at 19:22

Your Answer


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.