I'm not sure if it is easy (and nessasary) to implement in fontspec
. The wrong baseline position seems caused by current poor-designed (but almost all) Chinese fonts. However, I still want to know how other programs (like Microsoft Word) typeset Chinese vertical text properly. (But XeTeX cannot.)
Using xeCJK
package (which should always used when typesetting Chinese through XeLaTeX), it is not difficult to fix the baseline of CJK symbols.
% coding:utf-8
\documentclass{article}
\usepackage{xeCJK}
\newfontlanguage{Chinese}{CHN}
\setCJKfamilyfont{songvert}% It is important to set these features
[Script=CJK,Language=Chinese,Vertical=RotatedGlyphs]{SimSun}
\def\CJKmovesymbol#1{\raise.35em\hbox{#1}}
\def\CJKmove{\let\CJKsymbol\CJKmovesymbol
\let\CJKpunctsymbol\CJKmovesymbol}
\begin{document}
\begin{tabular}{|ll|}
\hline
Original baseline:&
{\Huge\CJKfamily{songvert}文字 text 文字 text}\\
\hline
Fixed baseline:&
{\Huge\CJKmove\CJKfamily{songvert}文字 text 文字 text}\\
\hline
\end{tabular}
\end{document}