I'd go directly to unicode-math:
\documentclass[a4paper]{article}
\usepackage{mathtools} % loads amsmath that should go before unicode-math
\usepackage{unicode-math}
\setmainfont[Numbers=OldStyle]{Palatino Linotype}
\setsansfont{Optima}
\setmonofont{Consolas}
\setmathfont{Asana Math}
Asana Math is based on the MathPaZo fonts.
If you really need brackets and parentheses from the MathPaZo fonts, it's doable:
\DeclareSymbolFont{brackets} {OT1}{zplm}{m}{n}
\SetSymbolFont{brackets}{bold} {OT1}{zplm}{b}{n}
\DeclareSymbolFont{largebrackets} {OMX}{zplm}{m}{n}
\SetSymbolFont{largebrackets}{bold}{OMX}{zplm}{m}{n}
\DeclareMathDelimiter{(}{\mathopen} {brackets}{"28}{largebrackets}{"00}
\DeclareMathDelimiter{)}{\mathclose}{brackets}{"29}{largebrackets}{"01}
\DeclareMathDelimiter{[}{\mathopen} {brackets}{"5B}{largebrackets}{"02}
\DeclareMathDelimiter{]}{\mathclose}{brackets}{"5D}{largebrackets}{"03}
For the Knuth calligraphic font, add
\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{XITS Math}
For a "better" \vDash
symbol, add
\setmathfont[range=\vDash]{XITS Math}
The "not belonging to" symbol should always be specified with \notin
rather than with \not\in
.
Finally, for the AMS blackboard bold:
\DeclareSymbolFont{AMSb}{U}{msb}{m}{n}
\protected\def\mathbb#1{{\mathchar\numexpr256*\symAMSb+`#1\relax}}
As Andrey points out, the key is the concept of "interchar tokens". Suppose you have some CJK characters that doesn't appear in the normal font and you want to use another for them; say that the characters are U+4E01 and U+4E02.
Then the following will do:
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{<a font>}
\newfontfamily{\JapSubstFont}{<another font with the missing chars>}
\XeTeXinterchartokenstate=1
\newXeTeXintercharclass\JapSubst
\XeTeXcharclass"4E01=\JapSubst
\XeTeXcharclass"4E02=\JapSubst
\XeTeXinterchartoks 0 \JapSubst = {\begingroup\JapSubstFont}
\XeTeXinterchartoks 255 \JapSubst = {\begingroup\JapSubstFont}
\XeTeXinterchartoks \JapSubst 0 = {\endgroup}
\XeTeXinterchartoks \JapSubst 255 = {\endgroup}
Each time that a character in the \JapSubst
charclass will be at the start or end of a "word" or be preceded or followed by a "normal" character, it will be typeset in the \JapSubstFont
.
One can also specify a range:
\count255="4E01
\loop\ifnum\count255<"5000
\XeTeXcharclass\count255=\JapSubst
\advance\count255 by 1
\repeat
Best Answer
\setmainfont[Mapping=tex-text,AutoFakeSlant=0.4]{Tahoma}
The number determines the severity of the slant. I don't have Tahoma installed so I don't know what looks good with it.
Search the fontspec manual for "FakeSlant" to see more options.