public void DrawGlyphRun( Vector2 position, CanvasFontFace fontFace, float fontSize, CanvasGlyph[] glyphs, bool isSideways, uint bidiLevel, object brush, CanvasTextMeasuringMode measuringMode, string locale, string textString, int[] clusterMapIndices, uint textPosition, CanvasGlyphOrientation glyphOrientation) { var script = GetScript(textPosition); CanvasTypographyFeatureName[] features = fontFace.GetSupportedTypographicFeatureNames(script); foreach (var featureName in features) { TypographyFeatureInfo featureInfo = new TypographyFeatureInfo(featureName); if (!TypographyOptions.Contains(featureInfo)) { TypographyOptions.Add(featureInfo); } } }
public static List <TypographyFeatureInfo> GetSupportedTypographyFeatures(FontVariant variant) { Dictionary <string, TypographyFeatureInfo> features = new Dictionary <string, TypographyFeatureInfo>(); var analyzer = new CanvasTextAnalyzer(variant.GetCharString(), CanvasTextDirection.LeftToRightThenTopToBottom); { foreach (var script in analyzer.GetScript()) { foreach (var feature in variant.FontFace.GetSupportedTypographicFeatureNames(script.Value)) { var info = new TypographyFeatureInfo(feature); if (!features.ContainsKey(info.DisplayName)) { features.Add(info.DisplayName, info); } } } } return(features.Values.OrderBy(f => f.DisplayName).ToList()); }