         return UIFont(descriptor: boldFontDesc, size: pointSize)
     }
     
+    func boldVariant() -> UIFont? {
+        return variantWithTrait(.traitBold)
+    }
+
     ///Returns variant of current font that will fit within the given height
     /// - note: This makes the assumption that font heights scale mostly linearly
     ///  with respect to point size. That may not always be the case especially

import UIKit

public extension UIFont {
    ///Find the size of a string when drawn with the current font at the supplied width/height
    func sizeOfString (_ string: String, constrainedToWidth width:CGFloat = CGFloat.greatestFiniteMagnitude, constrainedToHeight height:CGFloat = CGFloat.greatestFiniteMagnitude) -> CGSize {
        NSString(string: string).boundingRect(with: CGSize(width: width, height: height),

                                              attributes: [NSAttributedString.Key.font: self],
                                              context: nil).size
    }

    
    ///Down and dirty way to get variations on fonts
    func variantWithTrait(_ trait: UIFontDescriptor.SymbolicTraits) -> UIFont? {
        let fontDescriptor = self.fontDescriptor
        let fontDescriptorSymbolicTraits: UIFontDescriptor.SymbolicTraits = [fontDescriptor.symbolicTraits, trait]
