I’m not sure if this answers “How do I change the list of letters for every row” or not, but:
Here’s the diagram with a different outer row than the inner rows. I used a \foreach loop to “simultaneously” iterate over two variables, \romanized and \outer. (You can easily extend this to more than two variables.) The code is essentially stolen from the previous two answers.
\documentclass[varwidth,border=1em]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,decorations.text}
\begin{document}
\begin{tikzpicture}
\node at (90:5.5) {\Large 萬國音韻話圖};
\def\ct{30}
\def\halfring{ʿ}
\foreach \romanized/\outer [count=\i] in {
% No guarantees that the Chinese characters are correct
a/丫, e/額, i/衣, o/阿, u/午, ç/則, \halfring ç/測, ch/者, \halfring ch/搐,
k/格, \halfring k/克, p/克, \halfring p/魄, t/德, \halfring t/忒, j/日, v/物,
f/弗, g/額, l/勒, m/麥, n/搦, s/色, x/石, h/黑, b/〇, d/〇, r/〇, z/〇,
} {
\pgfmathsetmacro{\angle}{90-360/\ct*\i}
\draw (\angle-360/\ct/2:1.5) -- (\angle-360/\ct/2:4.5);
\node[rotate=-90+\angle] at (\angle:4.25) {\outer};
\foreach \r in {1,...,5} {
\pgfmathsetmacro{\radius}{1.25+\r*0.5}
\node[rotate=-90+\angle,text depth=0,text height=1ex] at (\angle:\radius)
{\sffamily\itshape\romanized};
}
}
\foreach \r in {1,...,8,8.1} { \draw (0,0) circle(0.5+\r*0.5); }
\foreach \inner [count=\i] in {次淸甚,次濁甚,次上甚,次去甚,次入甚} {
\pgfmathsetmacro{\angle}{90-360/5*\i-360/\ct/2}
\draw (\angle:1) -- (\angle:1.5);
\draw[decorate, decoration={reverse path, text align=center,
text along path, text={\inner}}] (\angle:1.125) arc (\angle:\angle+360/5:1.125);
};
\end{tikzpicture}
\end{document}

\begin{tikzpicture}[font=\mainfont]and the like but it doesn't work. – Mårten May 22 '14 at 07:06\usepackage{fontspec} \setmainfont{Adobe Kaiti Std} \setsansfont{Brill}. Since there were only really two fonts needed, I sort of “cheated” by (ab)using the “serif” family for the Chinese characters and the “sans-serif” family (\sffamily) for the Latin characters. – hftf May 22 '14 at 07:27