 
     /// Taken from FontAwesome.io's Fixed Width Icon CSS.
     public static let fontAspectRatio: CGFloat = 1.28571429
+
+    /// Whether Font Awesome Pro fonts should be used (not included).
+    ///
+    /// To use Font Awesome Pro fonts, you should add these to your main project and
+    /// make sure they are added to the target and are included in the Info.plist file.
+    public static var useProFonts: Bool = false
 }
 
 public enum FontAwesomeStyle: String {
     case solid
+    /// WARNING: Font Awesome Free doesn't include a Light variant. Using this with Free will fallback to Regular.
+    case light
     case regular
     case brands
 
     func fontName() -> String {
         switch self {
         case .solid:
-            return "FontAwesome5Free-Solid"
+            return FontAwesomeConfig.useProFonts ? "FontAwesome5ProSolid" : "FontAwesome5Free-Solid"
+        case .light:
+            return FontAwesomeConfig.useProFonts ? "FontAwesome5ProLight" : "FontAwesome5Free-Regular"
         case .regular:
-            return "FontAwesome5Free-Regular"
+            return FontAwesomeConfig.useProFonts ? "FontAwesome5ProRegular" : "FontAwesome5Free-Regular"
         case .brands:
             return "FontAwesome5Brands-Regular"
         }

        case .brands:
            return "Font Awesome 5 Brands"
        case .regular,
             .solid:
            return "Font Awesome 5 Free"
        }
    }
}

    func fontFilename() -> String {
        switch self {
        case .solid:
            return FontAwesomeConfig.useProFonts ? "Font Awesome 5 Pro-Solid-900" : "Font Awesome 5 Free-Solid-900"
        case .light:
            return FontAwesomeConfig.useProFonts ? "Font Awesome 5 Pro-Light-300" : "Font Awesome 5 Free-Regular-400"
        case .regular:
            return FontAwesomeConfig.useProFonts ? "Font Awesome 5 Pro-Regular-400" : "Font Awesome 5 Free-Regular-400"
        case .brands:
            return "Font Awesome 5 Brands-Regular-400"
        }
