 
      - returns: The size required to draw the text string.
     */
-    public func sizeOf(string: String, maxWidth: CGFloat, maxHeight: CGFloat, paragraphStyle: NSParagraphStyle, fractional allowFractionalSize: Bool)
+    public func size(of string: String,
+                     maxWidth: CGFloat = .greatestFiniteMagnitude,
+                     maxHeight: CGFloat = .greatestFiniteMagnitude,
+                     paragraphStyle: NSParagraphStyle,
+                     fractional allowFractionalSize: Bool = false)
         -> CGSize
     {
-        return sizeOf(string: string,
-            maxSize: CGSize(width: maxWidth, height: maxHeight),
-            paragraphStyle: paragraphStyle,
-            fractional: allowFractionalSize)
+        return size(of: string,
+                    maxSize: CGSize(width: maxWidth, height: maxHeight),
+                    paragraphStyle: paragraphStyle,
+                    fractional: allowFractionalSize)
     }
 
     /**


     - returns: The size required to draw the text string.
    */
    public func sizeOf(string: String, maxSize: CGSize, paragraphStyle: NSParagraphStyle, fractional allowFractionalSize: Bool)
        -> CGSize
    {
        let rect = string.boundingRect(with: maxSize,
            options: [.usesFontLeading, .usesLineFragmentOrigin, .truncatesLastVisibleLine],
            attributes: [NSFontAttributeName: self, NSParagraphStyleAttributeName: paragraphStyle],
            context: nil)

        let size: CGSize
        if allowFractionalSize {

extension UIFont
{
    //==========================================================================
    // MARK: Measuring text
    //--------------------------------------------------------------------------

    /**
     Calculates the size of the bounding rectangle required to draw a given
