Example #1
0
        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");
            }
        }
Example #6
0
        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");
			}