public CTFontCollection(CTFontCollectionOptions options) { handle = CTFontCollectionCreateFromAvailableFonts( options == null ? IntPtr.Zero : options.Dictionary.Handle); if (handle == IntPtr.Zero) { throw ConstructorError.Unknown(this); } }
public CTFontCollection(CTFontDescriptor[] queryDescriptors, CTFontCollectionOptions options) { using (var descriptors = queryDescriptors == null ? null : CFArray.FromNativeObjects(queryDescriptors)) handle = CTFontCollectionCreateWithFontDescriptors( descriptors == null ? IntPtr.Zero : descriptors.Handle, options == null ? IntPtr.Zero : options.Dictionary.Handle); if (handle == IntPtr.Zero) { throw ConstructorError.Unknown(this); } }
public CTFontDescriptor [] GetMatchingFontDescriptors(CTFontCollectionOptions options) { var cfArrayRef = CTFontCollectionCreateMatchingFontDescriptorsWithOptions(handle, options == null ? IntPtr.Zero : options.Dictionary.Handle); if (cfArrayRef == IntPtr.Zero) { return(Array.Empty <CTFontDescriptor> ()); } var matches = NSArray.ArrayFromHandle(cfArrayRef, fd => new CTFontDescriptor(fd, false)); CFObject.CFRelease(cfArrayRef); return(matches); }
public CTFontCollection WithFontDescriptors(CTFontDescriptor[] queryDescriptors, CTFontCollectionOptions options) { IntPtr h; using (var descriptors = queryDescriptors == null ? null : CFArray.FromNativeObjects(queryDescriptors)) { h = CTFontCollectionCreateCopyWithFontDescriptors( handle, descriptors == null ? IntPtr.Zero : descriptors.Handle, options == null ? IntPtr.Zero : options.Dictionary.Handle); } if (h == IntPtr.Zero) { return(null); } return(new CTFontCollection(h, true)); }