# How do I combine fonts for different scripts?

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.

• 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
– user2478
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). 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... 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. Aug 22 '12 at 14:18
• Aug 23 '12 at 13:22

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
\documentclass{article}

\usepackage{xeCJK}
\setmainfont{Arial}
\setCJKmainfont{Microsoft YaHei}

\begin{document}
Arial font and 微软雅黑
\end{document}


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
\documentclass{article}

\usepackage{luatexja-fontspec}
\setmainfont{Arial}
\setmainjfont{Microsoft YaHei}

\begin{document}
Arial font and 微软雅黑
\end{document}


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.

• Seems nice. It would be much more useful with a bit of english documentation... :-) Maybe an article in TUGboat? 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. Aug 23 '12 at 13:19
• I'm still interested in a solution with luatexja. May 16 '14 at 19:22