Ejemplo n.º 1
0
        Transcribe(MSyl syl)
        {
            string start, end = "";
            INIT   i = syl.Initial;
            TONE   t = syl.Tone;
            MED    m = syl.Medial;
            RIME   r = syl.Rime;


            //initial
            if (i == INIT.Void && m != MED._)           //y w yu
            {
                return(_m0Trans[new MRt(r, t)]);
            }
            else if (syl.InitialGroup == INITGROUP.GGRP && syl.IsPalatized)           //j q x
            {
                start = _specInit[i];
                if (m == MED.IU && syl.Final != FIN.ENG)                //ü -> u but not iong
                {
                    r = (RIME)((byte)MED.U | (byte)syl.Final);          //ju qu xu
                }
            }
            else if (syl.InitialGroup == INITGROUP.TZGRP && m == MED.I && syl.Final == FIN.ZERO)            //zyi cyi syi
            {
                start = _specInit[i];
            }
            else
            {
                start = _miTrans[i];
            }

            //final
            _mfTrans.TryGetValue(new MRt(r, t), out end);

            return(start + end);
        }
Ejemplo n.º 2
0
 public MRt(RIME rime, TONE tone)
 {
     _syl = new MSyl((byte)tone, (byte)rime);
 }