/// <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); }
public void AddGlyphMapping(GlyphMapping glyphMapping) { glyphMappings.Add(glyphMapping); }
/// <summary> /// Initializes an empty GlyphMapping. /// </summary> public GlyphIndices() { glyphMapping = new GlyphMapping[0]; }