fontwrap package for XeLaTex ---------------------------- Michiel Kamermans, june 2008 Available under GPL What is it? -------------- fontwrap is a package for XeLaTeX to automatically wrap multilingual utf8 encoded text in approriate font tags, issuing fontspec commands whenever text switches from one unicode block to another. As most of us use TeX in order to separate visual styling from the actual document as much as possible, this package removes the need to add fonttags all over the place when writing multilingual documents. ... Example? -------------- Say you have a mixed text of English and Japanese, going something like this: "English and nihongo can both be written in utf8" with the word "nihongo" written in Japanes. the fontwrap package can automatically change this to the following: "\fontspec{SomeFont}English and \fontspec{OtherFont} nihongo\fontspec{SomeFont}\ can both be written in utf8" where 'SomeFont' is a font you picked for English - or rather, Latin - text, and 'OtherFont' is a font you picked for Japanese text. How do I use it? -------------- simply use the fontwrap package like any other, and wrap whichever text you want automatically font tagged with the following command: \fontwrap{...your text here...} Both the fontwrap.tex and fontwrap_example.tex files contain examples of this. Of course, fontwrap needs to know which fonts you want to use for which blocks, for which there are a few basic commands: \setfontwrapdefaultfont{Font Name} where 'Font Name' is the name of the font as you'd use it in a word processor (and capitalisation counts!). To then override the default, you can set fonts either for single unicode blocks, or for entire informal unicode groups: \setunicodeblockfont{BLock Name}{Font Name} \setunicodegroupfont{BLock Name}{Font Name} There are a small number of groups to pick from (namely Arabic, Chinese, CJK (which combines all Chinese, Japanese and Korean blocks), Cyrillic, Diacritics, Greek (including some Coptic), Korean, Japanese, Latin, Mathematics, Phonetics, Punctuation, Symbols, Yi and 'Other'). There are few more blocks (158 of them), so I won't list all of there here - please see the more detailed pdf documentation for which specific blocks you can set fonts for. In addition to these fonts, you also need to instruct fontwrap which macros and environments it is allowed to process the content of, because by default it will skip over any macros or environments it is wrapping. \setfontwrapallowedmacros{macro list} \setfontwrapallowedenvironments{env. list} For both these commands, the lists are comma delimited, so that if you want fontwrap to process the content of emph, ruby and section macros, you would pass it the list "emph,ruby,section". Special notes -------------- This package requires you use perltex, which is just a wrapper for xelatex. if you use Tex Live or MikTeX then you should either already have it installed, or it should grab perltex automatically for you. The command is also rather simple: perltex --latex=xelatex inputfile.tex Running this when using fontwrap may result in a number of warnings/errors: 1) free to wrong pool perltex can, in some cases, perform mem cleanup on the wrong thread. This will not affect your document in any way. it's just annoying. 2) no unicode mapping available a font you picked for some block of text does not contain the characters of that text. this is common when using foreign language in a verbatim block.