Пример #1
0
        public void XmlToMeiTest()
        {
            XElement testelement = new XElement("ligature", new XElement("note", "bla"));

            MeiElement compare = new Ligature();

            MeiElement test = MeiImport.XmlToMei(testelement);

            Assert.IsInstanceOfType(test, compare.GetType());
        }
Пример #2
0
        void AddLoop(Edge edgeRoot)
        {
            Edge tmp = (Edge)m_edges[m_random.Next(m_edges.Count)];

            while (tmp.PostVertex.SuccessorEdges.Count == 0)
            {
                tmp = (Edge)m_edges[m_random.Next(m_edges.Count)];
            }
            Vertex to = tmp.PreVertex;

            foreach (Edge e in m_edges)
            {
                Vertex from = e.PostVertex;
                if (IsV1PredecessorOfV2(to, from))
                {
                    Ligature loopback = new Ligature(from, to, "Loopback");
                }
            }
        }
Пример #3
0
                public Ligature GetLigatureTable(uint i)
                {
                    Ligature l = null;

                    if (i < LigatureCount)
                    {
                        l = new Ligature(m_offsetLigatureSet + GetLigatureOffset(i), m_bufTable);
                    }

                    return l;
                }
        /// <summary>
        /// Converts the ligature to path.
        /// </summary>
        /// <param name="leadingGlyphId">The leading glyph id.</param>
        /// <param name="ligature">The ligature.</param>
        /// <param name="lookupFlags">The lookup flags.</param>
        /// <returns>
        /// A path.
        /// </returns>
        private IEnumerable <ITransition> ConvertLigatureToPath(ushort leadingGlyphId, Ligature ligature, LookupFlags lookupFlags)
        {
            yield return(new SimpleTransition {
                GlyphId = leadingGlyphId,
                HeadShift = 1,
                LookupFlags = lookupFlags
            });

            var componentGlyphIdList = ligature.ComponentGlyphIds.ToList();

            // Some fonts contain "ligatures" 1 glyph long (those have leading glyph only).
            if (componentGlyphIdList.Any())
            {
                // Transitions to recognize the ligature.
                foreach (var componentGlyphId in componentGlyphIdList)
                {
                    yield return(new SimpleTransition {
                        GlyphId = componentGlyphId,
                        HeadShift = 1,
                        LookupFlags = lookupFlags
                    });
                }
            }

            yield return(new AlwaysTransition
            {
                HeadShift = 0,
                LookupFlags = lookupFlags,
                Action = new SubstitutionAction
                {
                    ReplacedGlyphCount = (uint)componentGlyphIdList.Count + 1,
                    SkippedGlyphCount = 1,
                    ReplacementGlyphIds = new[] { ligature.LigatureGlyphId }
                }
            });
        }