Missing glyph in TeXGyreTermes font
You could construct it yourself by composing the macron accent with the glyph ü (according to Unicode, this is indeed a legal decomposition, even though the result might be slightly better had the font contained the glyph itself).
You can then use \DeclareUnicodeCharacter
to tell LaTeX what to do when it encounters U+01D6.
I think hyphenation will be disabled in words containing this character, but I don't know if one even hyphenates Pinyin. In any case, you can always insert \-
to manually allow hyphenations.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tgtermes}
\DeclareUnicodeCharacter{01D6}{\={ü}}
\begin{document}
% This should give the desired output.
ü ǖ
\end{document}
At first: such missing accented chars can always be constructed if they don't exist, after all what you want is simply an ü with a bar above it.
The main problem is how to construct them. A look in xunicode.sty shows \=
and \textdieresisoverline
. As default they are mapped to the char U+01D6, but one can undeclare them and test what happens. Actually their result don't look good with your font, so I guess you will have to stick to something like the following \mybar
\documentclass{article}
\makeatletter
\DeclareTextCommand{\mybar}{EU1}[1]
{\leavevmode\setbox\z@\hbox{#1}\dimen@\ht\z@%
\rlap{\raise1.1\dimen@\hbox{\kern0.1\wd\z@\rule{0.8\wd\z@}{0.4pt}}}#1}
\makeatother
\usepackage{fontspec}
\UndeclareUTFcomposite[\UTFencname]{x01D6}{\textdieresisoverline}{u}
\UndeclareUTFcomposite[\UTFencname]{x01D6}{\=}{\"u}
\setmainfont{TeX Gyre Termes}
\setsansfont{Times New Roman}
\setmonofont{Linux Libertine O}
\begin{document}
%Tex Gyre
\noindent
direct: ^^^^01d6\\
mybar: \mybar{ü}\\
textdieresisoverline: \textdieresisoverline{u}\\
\textbackslash=: \={ü}
%Times
\sffamily
\noindent
direct: ^^^^01d6\\
mybar: \mybar{ü}\\
textdieresisoverline: \textdieresisoverline{u}\\
\textbackslash=: \={ü}
\ttfamily %Linux
\noindent
direct: ^^^^01d6\\
mybar: \mybar{ü}\\
textdieresisoverline: \textdieresisoverline{u}\\
\textbackslash=: \={ü}
\end{document}