SegmentDefinition ComposeModifier(SegmentDefinition baseChar, SegmentDefinition diacritic)
        {
            FeatureBundle fb = baseChar.SynthFeatures.Clone();

            fb.Apply(diacritic.SynthFeatures, true);
            fb.Apply(diacritic.AntiFeatures, false);
            return(new SegmentDefinition(baseChar.StrRep + diacritic.StrRep, fb));
        }
        SegmentDefinition ComposeAffricate(SegmentDefinition stop, SegmentDefinition tiebar, SegmentDefinition fricative)
        {
            FeatureBundle fb = stop.SynthFeatures.Clone();

            fb.Apply(fricative.SynthFeatures, true);
            fb.Apply(fricative.AntiFeatures, false);
            // the tie bar will probably set [+delayed-release], so do this last
            fb.Apply(tiebar.SynthFeatures, true);
            fb.Apply(tiebar.AntiFeatures, false);
            return(new SegmentDefinition(stop.StrRep + tiebar.StrRep + fricative.StrRep, fb));
        }
예제 #3
0
        protected override Segment UnapplyDeletionFeatures(VariableValues instantiatedVars)
        {
            // in analysis mode, we set all of the feature values
            FeatureBundle feats = new FeatureBundle(true, m_featSys);

            // then unset each anti feature
            feats.Apply(m_antiFeatureValues, false);
            m_alphaVars.ApplyCurrent(feats, m_antiVariables, instantiatedVars);
            return(new Segment(ToString(), feats));
        }
예제 #4
0
		protected override Segment UnapplyDeletionFeatures(VariableValues instantiatedVars)
		{
			// in analysis mode, we set all of the feature values
			FeatureBundle feats = new FeatureBundle(true, m_featSys);
			// then unset each anti feature
			feats.Apply(m_antiFeatureValues, false);
			m_alphaVars.ApplyCurrent(feats, m_antiVariables, instantiatedVars);
			return new Segment(ToString(), feats);
		}