public override object Create(string fontName, double size, FontStyle style, FontWeight weight, FontStretch stretch) { var t = GetStretchTrait(stretch) | GetStyleTrait(style); var names = fontName.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); NSFont f = null; foreach (var name in names) { f = NSFontManager.SharedFontManager.FontWithFamily(name.Trim(), t, weight.ToMacValue(), (float)size); if (f != null) { break; } } if (f == null) { return(null); } var fd = FontData.FromFont(NSFontManager.SharedFontManager.ConvertFont(f, t)); fd.Style = style; fd.Weight = weight; fd.Stretch = stretch; return(fd); }
public static NSFont WithWeight(this NSFont font, FontWeight weight) { int w = weight.ToMacValue(); var traits = NSFontManager.SharedFontManager.TraitsOfFont(font); traits |= weight >= FontWeight.Bold? NSFontTraitMask.Bold : NSFontTraitMask.Unbold; traits &= weight >= FontWeight.Bold? ~NSFontTraitMask.Unbold : ~NSFontTraitMask.Bold; return(NSFontManager.SharedFontManager.FontWithFamily(font.FamilyName, traits, w, font.PointSize)); }