List <string> NativeFontFamilies() { if (nativeFontCollection == null) { var collectionOptions = new CTFontCollectionOptions(); collectionOptions.RemoveDuplicates = true; nativeFontCollection = new CTFontCollection(collectionOptions); nativeFontDescriptors = new Dictionary <string, CTFontDescriptor>(); var fontdescs = nativeFontCollection.GetMatchingFontDescriptors(); foreach (var fontdesc in fontdescs) { try { var name = fontdesc.GetAttribute(CTFontDescriptorAttributeKey.FamilyName)?.ToString(); if (name != null && !nativeFontDescriptors.ContainsKey(name)) { nativeFontDescriptors.Add(name, fontdesc); } } catch { Diagnostics.Debug.Assert(false, $"Failed getting FamilyName attribute from font descriptor '{fontdesc}'."); } } } return(new List <string>(nativeFontDescriptors.Keys)); }
List <string> NativeFontFamilies() { if (nativeFontCollection == null) { var collectionOptions = new CTFontCollectionOptions(); collectionOptions.RemoveDuplicates = true; nativeFontCollection = new CTFontCollection(collectionOptions); nativeFontDescriptors = new Dictionary <string, CTFontDescriptor> (); } var fontdescs = nativeFontCollection.GetMatchingFontDescriptors(); foreach (var fontdesc in fontdescs) { var font = new CTFont(fontdesc, 0); // Just in case RemoveDuplicates collection option is not working if (!nativeFontDescriptors.ContainsKey(font.FamilyName)) { nativeFontDescriptors.Add(font.FamilyName, fontdesc); } } var fontFamilies = new List <string> (nativeFontDescriptors.Keys); return(fontFamilies); }
List<string> NativeFontFamilies() { if (nativeFontCollection == null) { var collectionOptions = new CTFontCollectionOptions (); collectionOptions.RemoveDuplicates = true; nativeFontCollection = new CTFontCollection (collectionOptions); nativeFontDescriptors = new Dictionary<string, CTFontDescriptor> (); } var fontdescs = nativeFontCollection.GetMatchingFontDescriptors (); foreach (var fontdesc in fontdescs) { var font = new CTFont (fontdesc, 0); // Just in case RemoveDuplicates collection option is not working if (!nativeFontDescriptors.ContainsKey (font.FamilyName)) { nativeFontDescriptors.Add (font.FamilyName, fontdesc); } } var fontFamilies = new List<string> (nativeFontDescriptors.Keys); return fontFamilies; }
public void GetMatchingFontDescriptorsTest() { var collection = new CTFontCollection(null); var sortIsCalled = false; var descList = collection.GetMatchingFontDescriptors((CTFontDescriptor x, CTFontDescriptor y) => { sortIsCalled = true; return(0); }); Assert.IsTrue(sortIsCalled, "GetMatchingFontDescriptors delegate is called"); // Native crash (can't assert on it) if https://github.com/xamarin/xamarin-macios/pull/3871 fix not present. descList.First().GetAttributes(); }
public void GetMatchingFontDescriptorsCollectionOptionsTest() { TestRuntime.AssertXcodeVersion(10, 0); using (var collection = new CTFontCollection(null)) { var fd1 = collection.GetMatchingFontDescriptors(); var fd2 = collection.GetMatchingFontDescriptors(options: null); // documented to return the same thing as the parameterless if null Assert.NotNull(fd1, "fd1"); Assert.NotNull(fd2, "fd2"); Assert.AreEqual(fd1.Length, fd2.Length, "equal collections"); var fd3 = collection.GetMatchingFontDescriptors(new CTFontCollectionOptions { RemoveDuplicates = true }); Assert.NotNull(fd3, "fd3"); } }
List <string> NativeFontFamilies() { if (nativeFontCollection == null) { var collectionOptions = new CTFontCollectionOptions(); collectionOptions.RemoveDuplicates = true; nativeFontCollection = new CTFontCollection(collectionOptions); nativeFontDescriptors = new Dictionary <string, CTFontDescriptor>(); var fontdescs = nativeFontCollection.GetMatchingFontDescriptors(); foreach (var fontdesc in fontdescs) { var name = fontdesc.GetAttribute(CTFontDescriptorAttributeKey.FamilyName).ToString(); if (!nativeFontDescriptors.ContainsKey(name)) { nativeFontDescriptors.Add(name, fontdesc); } } } return(new List <string>(nativeFontDescriptors.Keys)); }
static void FontCollectionChecks () { var d = CreateFontDescriptorFromFamilyAndTraits ("Arial", CTFontSymbolicTraits.Italic, 10.0f); var defCollection = new CTFontCollection (new[]{d, d}, null); var defDescriptors = defCollection.GetMatchingFontDescriptors (); if (defDescriptors.Length != 4) throw new InvalidOperationException ("unexpected font descriptor count"); var noDups = new CTFontCollection (new[]{d, d}, new CTFontCollectionOptions () { RemoveDuplicates = true, }); var noDupDescs = noDups.GetMatchingFontDescriptors (); if (noDupDescs.Length != 2) throw new InvalidOperationException ("unexpected font descriptor count"); var withDups = new CTFontCollection (new[]{d, d}, new CTFontCollectionOptions () { RemoveDuplicates = false, }); var withDupDescs = withDups.GetMatchingFontDescriptors (); if (withDupDescs.Length != defDescriptors.Length) throw new InvalidOperationException ("unexpected font descriptor count"); }