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)); }
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)); }
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); }