# Support for all writing systems in a single document — more than just one or two Unicode planes simultaneously

I am working on a document that contains a growing number of representatives from different writing systems. It is mostly an English document, and I have been using the following to ensure that CJK characters, Korean Hangul, and IPA are handled with full support:

\usepackage[fallback]{xeCJK}[2011/05/01 v2.3.19]
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\setromanfont{TeX Gyre Termes}
\setsansfont[Scale=MatchLowercase]{Doulos SIL}
\setCJKmainfont{HAN NOM A}
\setCJKfallbackfamilyfont{\CJKrmdefault}{HAN NOM B} % goes with Han Nom A

\setCJKfamilyfont{korm}{Arial Unicode MS}

The principal special variants of the Roman alphabet as used in Western Europe and the Greek alphabet are available to me via normal LaTeX means. But now I have to add something in Cyrillic, and since Arial Unicode MS contains the glyphs, I've added a line

\newfontfamily\utf{Arial Unicode MS}

to the preamble and marked the Cyrillic text \utf{}, which produces satisfactory results. (I normally compile with XeLaTeX for the sake of the multiple system fonts required).

My question is not just how to deal with Cyrillic today in this environment, but the larger issue of how I can most easily add material in other Unicode planes, when the need arises. Is there, right now, a comprehensive solution that will handle all writing systems for which I possess fonts, even when special diacritic, kerning, and directional behavior is required?

-
Does polyglossia not go most of the way? – Alan Munn Dec 11 '12 at 2:42
Do you mean Unicode planes, or blocks? – Jukka K. Korpela Dec 11 '12 at 7:00
@AlanMunn: According to this answer by Leo Liu, the current maintainer, xeCJK cannot be used with polyglossia (tex.stackexchange.com/a/36896/3935). But xeCJK is now the best option for using LaTeX for Chinese, so the current (temporary, I hope) conflict between the two packages leaves me in a hard place. – brannerchinese Feb 7 '13 at 1:48
@JukkaK.Korpela: Yes, blocks, of course. (The block is the normal minimum language-specific or domain-specific group of code-points.) – brannerchinese Feb 7 '13 at 1:51
@brannerchinese I think I knew that when I wrote the comment :) so I'm not sure where my head was when I wrote it. – Alan Munn Feb 7 '13 at 1:51