Пример #1
0
        /// <summary>
        /// Evaluates how complex the GlyphMapping is.
        /// </summary>
        GlyphIndicesComplexity CalcGlyphIndicesComplexity()
        {
            GlyphIndicesComplexity result = GlyphIndicesComplexity.None;
            int count = this.glyphMapping != null ? this.glyphMapping.Length : 0;

            for (int idx = 0; idx < count; idx++)
            {
                GlyphMapping gm = this.glyphMapping[idx];

                if (gm.ClusterCodeUnitCount > 1 || gm.ClusterGlyphCount > 1)
                {
                    // Max. complexity -> break
                    result = GlyphIndicesComplexity.ClusterMapping;
                    break;
                }

                if (gm.GlyphIndex != -1 && (int)result < (int)GlyphIndicesComplexity.GlyphIndicesAndDistanceOnly)
                {
                    result = GlyphIndicesComplexity.GlyphIndicesAndDistanceOnly;
                    continue;
                }
                if ((int)result < (int)GlyphIndicesComplexity.GlyphIndicesAndDistanceOnly)
                {
                    if (!DoubleUtil.IsNaN(gm.AdvanceWidth) || !DoubleUtil.IsNaN(gm.UOffset) || !DoubleUtil.IsNaN(gm.VOffset))
                    {
                        result = GlyphIndicesComplexity.DistanceOnly;
                        continue;
                    }
                }
            }
            return(result);
        }
Пример #2
0
 public void AddGlyphMapping(GlyphMapping glyphMapping)
 {
     glyphMappings.Add(glyphMapping);
 }
Пример #3
0
 /// <summary>
 /// Initializes an empty GlyphMapping.
 /// </summary>
 public GlyphIndices()
 {
     glyphMapping = new GlyphMapping[0];
 }