JavaScript (Node.js), 240229 bytes
-8 bytes from Arnauld
x=>[...x].map(t=>String.fromCharCode(12436+~U12440+~U(U(X[u=t.split`*`,t[0]],u[0]),u)))
X=['410',i=0];forX=['854'];for(M=83;i++<9;U=M=i=9;i;U=(x,y)=>x[~-y.length%x.length])for(Y=X[i]=[n=j=i%8Y=X[i--]=[j=i-7?5:3];j;)for(k of(Z=Y[n-jZ=Y[--]=[]j]=[])+(i%7-1?i<5i<4?M-49?1221:312213:i-65?1:123321:2112))Z[k-1]=--M1]=++M
0
is different from unicode-table so hardcoded