├── .swift-version ├── Cartfile ├── fixed-font-sizes.jpg ├── dynamic-font-sizes.jpg ├── Example ├── Example for RSFontSizes │ ├── Fonts │ │ ├── Raleway-Black.ttf │ │ ├── Raleway-Bold.ttf │ │ ├── Raleway-Light.ttf │ │ ├── Raleway-Thin.ttf │ │ ├── Raleway-Italic.ttf │ │ ├── Raleway-Medium.ttf │ │ ├── Raleway-Regular.ttf │ │ ├── Raleway-SemiBold.ttf │ │ ├── Raleway-BoldItalic.ttf │ │ ├── Raleway-ExtraBold.ttf │ │ ├── Raleway-ExtraLight.ttf │ │ ├── Raleway-ThinItalic.ttf │ │ ├── Raleway-BlackItalic.ttf │ │ ├── Raleway-LightItalic.ttf │ │ ├── Raleway-MediumItalic.ttf │ │ ├── Raleway-ExtraBoldItalic.ttf │ │ ├── Raleway-SemiBoldItalic.ttf │ │ └── Raleway-ExtraLightItalic.ttf │ ├── AppDelegate.swift │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── ViewController.swift │ ├── Supporting Files │ │ └── Info.plist │ └── Base.lproj │ │ ├── LaunchScreen.xib │ │ └── Main.storyboard ├── Cartfile ├── RSFontSizesExample.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── RSFontSizesExample.xcscheme │ └── project.pbxproj ├── Podfile └── Tests │ ├── Supporting Files │ └── Info.plist │ ├── UIFontExtensionTest.swift │ └── Tests.swift ├── .swiftpm └── xcode │ └── package.xcworkspace │ └── contents.xcworkspacedata ├── RSFontSizes.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings ├── xcshareddata │ └── xcschemes │ │ └── RSFontSizes.xcscheme └── project.pbxproj ├── Package.resolved ├── Tests └── RSFontSizesTests │ └── RSFontSizesTests.swift ├── Sources ├── Classes │ ├── StringExtension.swift │ ├── PointSize.swift │ ├── SizeExtension.swift │ ├── RSFontSizes.swift │ └── UIFontExtensions.swift └── Info.plist ├── Package.swift ├── .travis.yml ├── .gitignore ├── LICENSE ├── RSFontSizes.podspec └── README.md /.swift-version: -------------------------------------------------------------------------------- 1 | 5.0 2 | -------------------------------------------------------------------------------- /Cartfile: -------------------------------------------------------------------------------- 1 | github "Ekhoo/Device" ~> 3.4.0 2 | -------------------------------------------------------------------------------- /fixed-font-sizes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/fixed-font-sizes.jpg -------------------------------------------------------------------------------- /dynamic-font-sizes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/dynamic-font-sizes.jpg -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-Black.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-Bold.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-Light.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-Thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-Thin.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-Italic.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-Medium.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-Regular.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-SemiBold.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-BoldItalic.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-ExtraBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-ExtraBold.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-ExtraLight.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-ThinItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-ThinItalic.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-BlackItalic.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-LightItalic.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-MediumItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-MediumItalic.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-ExtraBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-ExtraBoldItalic.ttf -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /Example/Cartfile: -------------------------------------------------------------------------------- 1 | # Development - Change to your local path and branch 2 | git "file:///path/to/RSFontSizes" "branch_name" 3 | 4 | # Release 5 | github "rootstrap/RSFontSizes" ~> 1.3.3 6 | 7 | -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Fonts/Raleway-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rootstrap/RSFontSizes/HEAD/Example/Example for RSFontSizes/Fonts/Raleway-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RSFontSizes.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/RSFontSizesExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'RSFontSizes_Example' do 4 | platform :ios, '12.0' 5 | pod 'RSFontSizes', :path => '../' 6 | 7 | target 'RSFontSizes_Tests' do 8 | inherit! :search_paths 9 | 10 | pod 'Quick', '~> 2.0.0' 11 | pod 'Nimble', '~> 8.0.1' 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /RSFontSizes.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /RSFontSizes.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/RSFontSizesExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "pins" : [ 3 | { 4 | "identity" : "device", 5 | "kind" : "remoteSourceControl", 6 | "location" : "https://github.com/Ekhoo/Device.git", 7 | "state" : { 8 | "revision" : "50054824ed26a6a0deb58c47480903eaaa4ec5dd", 9 | "version" : "3.5.0" 10 | } 11 | } 12 | ], 13 | "version" : 2 14 | } 15 | -------------------------------------------------------------------------------- /Tests/RSFontSizesTests/RSFontSizesTests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | @testable import RSFontSizes 3 | 4 | final class RSFontSizesTests: XCTestCase { 5 | func testExample() throws { 6 | // XCTest Documenation 7 | // https://developer.apple.com/documentation/xctest 8 | 9 | // Defining Test Cases and Test Methods 10 | // https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | 2 | import UIKit 3 | 4 | @UIApplicationMain 5 | class AppDelegate: UIResponder, UIApplicationDelegate { 6 | 7 | var window: UIWindow? 8 | 9 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { 10 | // Override point for customization after application launch. 11 | return true 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /Sources/Classes/StringExtension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StringExtension.swift 3 | // RSFontSizes 4 | // 5 | // Created by Rootstrap on 3/28/19. 6 | // 7 | 8 | import Foundation 9 | import UIKit 10 | 11 | extension String { 12 | public func font(withWeight weight: UIFont.Weight = .regular, 13 | size: PointSize = .normal) -> UIFont? { 14 | guard !isEmpty else { return nil } 15 | return UIFont(familyName: self, weight: weight, size: size) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version: 5.7.1 2 | 3 | import PackageDescription 4 | 5 | let package = Package( 6 | name: "RSFontSizes", 7 | platforms: [.iOS(.v12)], 8 | products: [ 9 | .library( 10 | name: "RSFontSizes", 11 | targets: ["RSFontSizes"] 12 | ) 13 | ], 14 | dependencies: [ 15 | .package(url: "https://github.com/Ekhoo/Device.git", from: "3.5.0") 16 | ], 17 | targets: [ 18 | .target( 19 | name: "RSFontSizes", 20 | dependencies: ["Device"], 21 | path: "Sources"), 22 | .testTarget( 23 | name: "RSFontSizesTests", 24 | dependencies: ["RSFontSizes"]), 25 | ] 26 | ) 27 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: swift 2 | xcode_workspace: Example/RSFontSizes.xcworkspace 3 | xcode_scheme: RSFontSizes-Example 4 | osx_image: xcode10.3 5 | xcode_sdk: iphonesimulator12.4 6 | install: true 7 | branches: 8 | only: 9 | - master 10 | cache: 11 | directories: 12 | - $HOME/.cocoapods/ 13 | podfile: Example/Podfile 14 | before_install: 15 | - gem install cocoapods-acknowledgements 16 | - gem install cocoapods 17 | - pod update --project-directory=Example 18 | script: 19 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/RSFontSizes.xcworkspace -scheme RSFontSizes-Example -sdk iphonesimulator12.4 -destination 'platform=iOS Simulator,name=iPhone XS Max,OS=12.4' ONLY_ACTIVE_ARCH=NO | xcpretty 20 | - pod lib lint --allow-warnings 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | .build 7 | *.pbxuser 8 | !default.pbxuser 9 | *.mode1v3 10 | !default.mode1v3 11 | *.mode2v3 12 | !default.mode2v3 13 | *.perspectivev3 14 | !default.perspectivev3 15 | xcuserdata/ 16 | *.xccheckout 17 | profile 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | 23 | # Bundler 24 | .bundle 25 | 26 | Carthage 27 | Example/Carthage 28 | # We recommend against adding the Pods directory to your .gitignore. However 29 | # you should judge for yourself, the pros and cons are mentioned at: 30 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 31 | # 32 | # Note: if you ignore the Pods directory, make sure to uncomment 33 | # `pod install` in .travis.yml 34 | # 35 | 36 | Pods/ 37 | Podfile.lock 38 | -------------------------------------------------------------------------------- /Sources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | $(MARKETING_VERSION) 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/Tests/Supporting Files/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "size" : "1024x1024", 46 | "scale" : "1x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Rootstrap Inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | 23 | 24 | -------------------------------------------------------------------------------- /RSFontSizes.podspec: -------------------------------------------------------------------------------- 1 | 2 | Pod::Spec.new do |s| 3 | s.name = 'RSFontSizes' 4 | s.version = '1.3.3' 5 | s.summary = 'Easily manage your font styles and sizes for every screen size.' 6 | 7 | # This description is used to generate tags and improve search results. 8 | # * Think: What does it do? Why did you write it? What is the focus? 9 | # * Try to keep it short, snappy and to the point. 10 | # * Write the description between the DESC delimiters below. 11 | # * Finally, don't worry about the indent, CocoaPods strips it! 12 | 13 | s.description = <<-DESC 14 | RSFontSize allows you to manage different font sizes for every device screen size in a flexible manner. 15 | - No more family name and styles typing/guessing every time you use a font. 16 | - Flexible size configurations(Fixed, Proportional to screen size and user specific). 17 | - Smart size estimation for vague specifications. 18 | - Save your font configurations for different UIFontTextStyle(.body, .title, etc). 19 | 20 | DESC 21 | 22 | s.homepage = 'https://github.com/rootstrap/RSFontSizes' 23 | s.screenshots = 'https://github.com/rootstrap/RSFontSizes/blob/master/dynamic-font-sizes.jpg?raw=true' 24 | s.license = { :type => 'MIT', :file => 'LICENSE' } 25 | s.author = { 'German Lopez' => 'german@rootstrap.com' } 26 | s.source = { :git => 'https://github.com/rootstrap/RSFontSizes.git', :tag => s.version.to_s } 27 | s.social_media_url = 'https://www.facebook.com/rootstrap' 28 | 29 | s.swift_version = '5.0' 30 | s.ios.deployment_target = '12' 31 | 32 | s.source_files = 'Sources/Classes/**/*' 33 | 34 | # s.public_header_files = 'Pod/Classes/**/*.h' 35 | # s.frameworks = 'UIKit', 'MapKit' 36 | s.dependency 'Device', '~> 3.5.0' 37 | end 38 | -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // FontSizes 4 | // 5 | // Created by German on 07/31/2017. 6 | // Copyright (c) 2017 German Lopez. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import RSFontSizes 11 | import Device 12 | 13 | class ViewController: UIViewController { 14 | 15 | @IBOutlet weak var model: UILabel! 16 | @IBOutlet weak var previewFixed: UILabel! 17 | @IBOutlet weak var previewSpecifics: UILabel! 18 | @IBOutlet weak var previewProportional: UILabel! 19 | 20 | override func viewDidLoad() { 21 | super.viewDidLoad() 22 | model.text = String(format: "Screen size: %.1f\"", Device.size().inches) 23 | 24 | // Customize any UIFont object 25 | previewFixed.font = Font.raleway.mediumSize.bold 26 | previewProportional.font = Font.raleway.thin.proportional(to: (.screen3_5Inch, 10)) 27 | // Create fonts from a String indicating the family name 28 | let font = "Raleway".font(withWeight: .regular, 29 | size: .specific(with: [.screen4Inch: 12, 30 | .screen4_7Inch:13.5, 31 | .screen5_5Inch: 16, 32 | .screen9_7Inch: 20.2])) 33 | 34 | // Save UIFont preferences for different UIFont.TextStyle(.body, .headline, .etc) 35 | Font.save(font: font, forClass: .body) 36 | previewSpecifics.font = Font.with(class: .body) 37 | 38 | //Dynamic Type 39 | if #available(iOS 11.0, *) { 40 | // Size is adjusted when the user preferences change in Settings. 41 | previewFixed.adjustsFontForContentSizeCategory = true 42 | previewFixed.font = Font.raleway.headline 43 | } 44 | } 45 | } 46 | 47 | extension Font { 48 | //Custom font families 49 | static let raleway = "Raleway".font()! 50 | } 51 | 52 | -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Supporting Files/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | RSFontSizesExample 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSRequiresIPhoneOS 26 | 27 | UIAppFonts 28 | 29 | Raleway-Bold.ttf 30 | Raleway-Black.ttf 31 | Raleway-BlackItalic.ttf 32 | Raleway-Thin.ttf 33 | Raleway-Regular.ttf 34 | Raleway-ExtraLight.ttf 35 | Raleway-ExtraBoldItalic.ttf 36 | Raleway-Medium.ttf 37 | Raleway-MediumItalic.ttf 38 | Raleway-SemiBold.ttf 39 | Raleway-SemiBoldItalic.ttf 40 | Raleway-ThinItalic.ttf 41 | Raleway-ExtraLightItalic.ttf 42 | 43 | UILaunchStoryboardName 44 | LaunchScreen 45 | UIMainStoryboardFile 46 | Main 47 | UIRequiredDeviceCapabilities 48 | 49 | armv7 50 | 51 | UISupportedInterfaceOrientations 52 | 53 | UIInterfaceOrientationPortrait 54 | UIInterfaceOrientationLandscapeLeft 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /Sources/Classes/PointSize.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PointSize.swift 3 | // RSFontSizes 4 | // 5 | // Created by Rootstrap on 3/28/19. 6 | // 7 | 8 | import Device 9 | import UIKit 10 | 11 | public enum PointSize { 12 | //Predefined sizes 13 | case tiny 14 | case small 15 | case normal 16 | case medium 17 | case big 18 | case huge 19 | case enormous 20 | case fixed(points: CGFloat) 21 | 22 | //Screen size adaptive 23 | case specific(with: SizeSpecification) 24 | case proportional(to: BaseSize) 25 | 26 | public var value: CGFloat { 27 | switch self { 28 | case .tiny: return 8 29 | case .small: return 12 30 | case .normal: return 16 31 | case .medium: return 20 32 | case .big: return 24 33 | case .huge: return 32 34 | case .enormous: return 40 35 | case .fixed(let value): return value 36 | 37 | //Calculates proportional font sizes from a base size in the given screen size 38 | case .proportional(let baseSize): 39 | return baseSize.1 * Size.current.proportion(to: baseSize.0) 40 | 41 | //Returns the correct font size from the consumer specifics 42 | //If no specification found for the current screen size the estimated font size is: 43 | //The consumer specification for the closer screen size 44 | //Or the proportional size calculated with one of the provided specifications 45 | case .specific(let specifics): 46 | guard !specifics.isEmpty else { 47 | return Font.defaultSize * Size.current.proportion(to: .screen3_5Inch) 48 | } 49 | if let value = specifics[Size.current] ?? specifics[Size.current.closer] { 50 | return value 51 | } 52 | let base = specifics.first! 53 | return base.value * Size.current.proportion(to: base.key) 54 | } 55 | } 56 | 57 | //TODO: calculate most accurate style for fixed, proportional and specific 58 | // point sizes. 59 | var fontStyle: UIFont.TextStyle { 60 | switch self { 61 | case .tiny: return .footnote 62 | case .small: return .caption1 63 | case .normal, .fixed: return .body 64 | case .medium: return .subheadline 65 | case .big: return .headline 66 | case .huge, .enormous: 67 | if #available(iOS 11.0, *) { 68 | return .largeTitle 69 | } else { 70 | return .title1 71 | } 72 | default: return .body 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /Sources/Classes/SizeExtension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Size.swift 3 | // RSFontSizes 4 | // 5 | // Created by Rootstrap on 3/28/19. 6 | // 7 | 8 | import Foundation 9 | import UIKit 10 | import Device 11 | 12 | extension Size { 13 | static let current: Size = Device.size() 14 | public static let all: [Size] = [.screen3_5Inch, .screen4Inch, .screen4_7Inch, 15 | .screen5_5Inch, .screen5_8Inch, .screen6_1Inch, 16 | .screen6_5Inch, .screen7_9Inch, .screen9_7Inch, 17 | .screen10_2Inch, .screen10_5Inch, .screen11Inch, 18 | .screen12_9Inch] 19 | 20 | func proportion(to base: Size) -> CGFloat { 21 | guard base.inches > 0 else { return 1 } 22 | 23 | return inches/base.inches 24 | } 25 | 26 | public var inches: CGFloat { 27 | switch self { 28 | case .screen3_5Inch: return 3.5 29 | case .screen4Inch: return 4 30 | case .screen4_7Inch: return 4.7 31 | case .screen5_4Inch: return 5.2 32 | case .screen5_5Inch: return 5.5 33 | case .screen5_8Inch: return 5.8 34 | case .screen6_1Inch, .screen6_1Inch_2: return 6.1 35 | case .screen6_5Inch, .screen6_7Inch, .screen6_7Inch_2: return 6.5 36 | case .screen7_9Inch: return 7.9 37 | case .screen9_7Inch: return 9.7 38 | case .screen10_2Inch: return 10.2 39 | case .screen10_5Inch: return 10.5 40 | case .screen10_9Inch, .screen11Inch: return 11 41 | case .screen12_9Inch: return 12.9 42 | case .unknownSize: return 0 43 | } 44 | } 45 | 46 | public var closer: Size { 47 | switch self { 48 | case .screen3_5Inch: return .screen4Inch 49 | case .screen4Inch: return .screen3_5Inch 50 | case .screen4_7Inch: return .screen5_5Inch 51 | case .screen5_5Inch: return .screen4_7Inch 52 | case .screen5_8Inch: return .screen5_5Inch 53 | case .screen6_1Inch, .screen6_1Inch_2: return .screen5_8Inch 54 | case .screen6_5Inch: return .screen6_1Inch 55 | case .screen6_7Inch, .screen6_7Inch_2: return .screen6_5Inch 56 | case .screen7_9Inch: return .screen9_7Inch 57 | case .screen9_7Inch: return .screen7_9Inch 58 | case .screen10_2Inch: return .screen9_7Inch 59 | case .screen10_5Inch: return .screen10_2Inch 60 | case .screen10_9Inch: return .screen11Inch 61 | case .screen11Inch: return .screen10_9Inch 62 | case .screen12_9Inch: return .screen11Inch 63 | default: return self 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Example/Tests/UIFontExtensionTest.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIFontExtensionTest.swift 3 | // RSFontSizes_Tests 4 | // 5 | // Created by German on 3/29/19. 6 | // Copyright © 2019 CocoaPods. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | 12 | import Quick 13 | import Nimble 14 | import RSFontSizes 15 | 16 | class FontWeightsSpecs: QuickSpec { 17 | 18 | let testFont = "Raleway".font()! 19 | 20 | override func spec() { 21 | describe("UIFont.Weight extension") { 22 | context("faceName enum method") { 23 | it("returns the correct name for every style") { 24 | expect(UIFont.Weight.ultraLight.faceName) == "UltraLight" 25 | expect(UIFont.Weight.extraLight.faceName) == "ExtraLight" 26 | expect(UIFont.Weight.thin.faceName) == "Thin" 27 | expect(UIFont.Weight.book.faceName) == "Book" 28 | expect(UIFont.Weight.demi.faceName) == "Demi" 29 | expect(UIFont.Weight.normal.faceName) == "Normal" 30 | expect(UIFont.Weight.light.faceName) == "Light" 31 | expect(UIFont.Weight.medium.faceName) == "Medium" 32 | expect(UIFont.Weight.demibold.faceName) == "DemiBold" 33 | expect(UIFont.Weight.semibold.faceName) == "SemiBold" 34 | expect(UIFont.Weight.bold.faceName) == "Bold" 35 | expect(UIFont.Weight.extraBold.faceName) == "ExtraBold" 36 | expect(UIFont.Weight.heavy.faceName) == "Heavy" 37 | expect(UIFont.Weight.black.faceName) == "Black" 38 | expect(UIFont.Weight.extraBlack.faceName) == "ExtraBlack" 39 | expect(UIFont.Weight.ultraBlack.faceName) == "UltraBlack" 40 | expect(UIFont.Weight.fat.faceName) == "Fat" 41 | expect(UIFont.Weight.poster.faceName) == "Poster" 42 | expect(UIFont.Weight.ultraLight.faceName) == "UltraLight" 43 | expect(UIFont.Weight.regular.faceName) == "Regular" 44 | } 45 | } 46 | 47 | context("Font weight modifiers") { 48 | it("Does not change the font size") { 49 | let initialSize = self.testFont.pointSize 50 | let font = self.testFont.bold 51 | expect(font.pointSize) == initialSize 52 | } 53 | } 54 | 55 | context("Font Size modifiers") { 56 | it("Does not change the font weight") { 57 | let initialName = self.testFont.fontName 58 | let resizedFont = self.testFont.huge 59 | expect(resizedFont.fontName) == initialName 60 | } 61 | } 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /RSFontSizes.xcodeproj/xcshareddata/xcschemes/RSFontSizes.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 50 | 51 | 52 | 53 | 59 | 60 | 66 | 67 | 68 | 69 | 71 | 72 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /Example/RSFontSizesExample.xcodeproj/xcshareddata/xcschemes/RSFontSizesExample.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 47 | 49 | 55 | 56 | 57 | 58 | 59 | 60 | 66 | 68 | 74 | 75 | 76 | 77 | 79 | 80 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Sources/Classes/RSFontSizes.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RSFontSizes.swift 3 | // 4 | // The MIT License (MIT) 5 | // 6 | // Copyright (c) 2017 Rootstrap Inc 7 | 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 11 | 12 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 13 | 14 | import Foundation 15 | import UIKit 16 | import Device 17 | 18 | public typealias SizeSpecification = [Size: CGFloat] 19 | public typealias BaseSize = (Size, CGFloat) 20 | 21 | public class Font { 22 | static var defaultSize: CGFloat = 12 23 | internal static var predefined: [UIFont.TextStyle: UIFont] = [:] 24 | 25 | public class func with(familyName name: String, 26 | weight: UIFont.Weight, 27 | size: PointSize) -> UIFont { 28 | return UIFont(familyName: name, weight: weight, size: size) 29 | } 30 | 31 | //MARK UIFontDescriptor matching 32 | 33 | class func bestDescriptor(matchingAttributes attributes: [UIFontDescriptor.AttributeName: Any], 34 | weight: UIFont.Weight) -> UIFontDescriptor { 35 | var bestDescriptor = UIFontDescriptor(fontAttributes: attributes) 36 | let faces = faceNames(fromWeight: weight) 37 | faceSearch: for face in faces { 38 | let baseDescriptor = bestDescriptor.addingAttributes([.face: face]) 39 | if let descriptor = exactMatch(from: baseDescriptor, mandatoryKeys: [.family, .face]) { 40 | bestDescriptor = descriptor 41 | break faceSearch 42 | } 43 | if let lessAccurateDescriptor = exactMatch(from: baseDescriptor, mandatoryKeys: [.family, .traits]) { 44 | bestDescriptor = lessAccurateDescriptor 45 | break faceSearch 46 | } 47 | } 48 | 49 | return bestDescriptor 50 | } 51 | 52 | private class func exactMatch(from descriptor: UIFontDescriptor, 53 | mandatoryKeys: Set) -> UIFontDescriptor? { 54 | let matchingDescriptors = descriptor.matchingFontDescriptors(withMandatoryKeys: mandatoryKeys) 55 | if let descriptor = matchingDescriptors.first, matchingDescriptors.count == 1 { 56 | return descriptor 57 | } 58 | return nil 59 | } 60 | 61 | private class func faceNames(fromWeight weight: UIFont.Weight) -> [String] { 62 | return ([weight] + similarWeights(forWeight: weight)).map { $0.faceName } 63 | } 64 | 65 | private class func similarWeights(forWeight weight: UIFont.Weight) -> [UIFont.Weight] { 66 | switch weight { 67 | case .extraLight: return [.ultraLight, .thin] 68 | case .ultraLight: return [.extraLight, .thin] 69 | case .thin: return [.ultraLight, .extraLight] 70 | case .book: return [.demi, .light] 71 | case .demi: return [.book, .light] 72 | case .light: return [.book, .demi] 73 | case .normal: return [.regular, .medium] 74 | case .regular: return [.medium, .normal] 75 | case .medium: return [.regular, .normal, .semibold] 76 | case .demibold: return [.semibold, .medium, .bold] 77 | case .semibold: return [.medium, .demibold, .bold] 78 | case .bold: return [.semibold, .demibold] 79 | case .extraBold: return [.black, .heavy, .bold] 80 | case .heavy: return [.black, .extraBold, .bold] 81 | case .black: return [.heavy, .extraBold, .bold] 82 | case .extraBlack: return [.ultraBlack, .fat, .poster, .black] 83 | case .ultraBlack: return [.extraBlack, .fat, .poster, .black] 84 | case .fat: return [.extraBlack, .ultraBlack, .poster, .black] 85 | case .poster: return [.extraBlack, .ultraBlack, .fat, .black] 86 | default: return [] 87 | } 88 | } 89 | 90 | //MARK Preferences 91 | 92 | public static func with(class style: UIFont.TextStyle) -> UIFont? { 93 | return predefined[style] 94 | } 95 | 96 | public static func save(font: UIFont?, forClass style: UIFont.TextStyle) { 97 | predefined[style] = font 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /Example/Tests/Tests.swift: -------------------------------------------------------------------------------- 1 | 2 | import Quick 3 | import Nimble 4 | import RSFontSizes 5 | import Device 6 | 7 | class TableOfContentsSpec: QuickSpec { 8 | 9 | let testFont = "Raleway".font()! 10 | 11 | override func spec() { 12 | 13 | describe("RSFontSizes") { 14 | 15 | context("Font generation tests") { 16 | it("can find the correct font assets") { 17 | var font = self.testFont.bold.tiny 18 | var desired = UIFont(name: "Raleway-Bold", size: 8) 19 | expect(font) == desired 20 | font = self.testFont.regular.small 21 | desired = UIFont(name: "Raleway-Regular", size: 12) 22 | expect(font) == desired 23 | font = self.testFont.black.normalSize 24 | desired = UIFont(name: "Raleway-Black", size: 16) 25 | expect(font) == desired 26 | font = self.testFont.semibold.mediumSize 27 | desired = UIFont(name: "Raleway-SemiBold", size: 20) 28 | expect(font) == desired 29 | } 30 | 31 | it("can find similar font assets") { 32 | //Heavy variant is not linked and Black is similar. 33 | let font = self.testFont.heavy.small 34 | let alternative = UIFont(name: "Raleway-Black", size: 12) 35 | expect(font) == alternative 36 | } 37 | 38 | it("returns a default font for an incorrect family") { 39 | let font = "Ralewy".font(withWeight: .regular, size: .small) 40 | expect(font?.familyName) != self.testFont.familyName 41 | } 42 | } 43 | 44 | context("Font sizing tests") { 45 | 46 | it("uses the correct point size for predefined classes") { 47 | var font = self.testFont.tiny 48 | expect(font.pointSize) == 8 49 | font = self.testFont.small 50 | expect(font.pointSize) == 12 51 | font = self.testFont.normalSize 52 | expect(font.pointSize) == 16 53 | font = self.testFont.mediumSize 54 | expect(font.pointSize) == 20 55 | font = self.testFont.big 56 | expect(font.pointSize) == 24 57 | font = self.testFont.huge 58 | expect(font.pointSize) == 32 59 | font = self.testFont.enormous 60 | expect(font.pointSize) == 40 61 | } 62 | 63 | it("returns the correct fixed size") { 64 | let randomSize = CGFloat(arc4random_uniform(60)) 65 | let font = self.testFont.fixed(randomSize) 66 | expect(font.pointSize) == randomSize 67 | } 68 | 69 | it("calculates proportional sizes correctly") { 70 | let allSizes = Size.all 71 | var font: UIFont? 72 | var base: BaseSize 73 | for size in allSizes { 74 | base = (size, 12) 75 | font = self.testFont.proportional(to: base) 76 | let desired = base.1 * Device.size().inches / base.0.inches 77 | expect(font?.pointSize).to(beCloseTo(desired, within: 0.00001)) 78 | } 79 | } 80 | 81 | context("User specifics behaviour") { 82 | it("uses the correct size from user specifics") { 83 | let specifics: SizeSpecification = [Device.size(): 22] 84 | let font = self.testFont.specific(values: specifics) 85 | expect(font.pointSize) == 22 86 | } 87 | 88 | it("returns the closest size when current device specification is missing") { 89 | let font = self.testFont.specific(values: [Device.size().closer: 14]) 90 | expect(font.pointSize) == 14 91 | } 92 | 93 | it("returns a smart estimation based on the smaller screen size for empty specifics") { 94 | let font = self.testFont.specific(values: [:]) 95 | let expectation = 12 * Device.size().inches / Size.screen3_5Inch.inches 96 | expect(font.pointSize).to(beCloseTo(expectation, within: 0.00001)) 97 | } 98 | 99 | //No specifics found for the current device nor for the closer size. 100 | it("uses a point size proportional to the first specific") { 101 | var farSize = Device.size() 102 | for size in Size.all { 103 | if size != farSize && size != farSize.closer { 104 | farSize = size 105 | break 106 | } 107 | } 108 | let specifics: SizeSpecification = [farSize: 18] 109 | let font = self.testFont.specific(values: specifics) 110 | let expectation = specifics[farSize]! * Device.size().inches / farSize.inches 111 | expect(font.pointSize).to(beCloseTo(expectation, within: 0.00001)) 112 | } 113 | } 114 | } 115 | 116 | context("Font preferences tests") { 117 | it("correctly saves and returns a font asociated to a class") { 118 | let font = self.testFont.regular.mediumSize 119 | Font.save(font: font, forClass: .headline) 120 | let saved = Font.with(class: .headline) 121 | expect(saved).notTo(beNil()) 122 | expect(saved) == font 123 | } 124 | } 125 | } 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RSFontSizes 2 | 3 | [![CI Status](http://img.shields.io/travis/rootstrap/RSFontSizes.svg?style=flat&colorA=000000)](https://travis-ci.org/rootstrap/RSFontSizes) 4 | [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat&colorA=000000)](https://github.com/Carthage/Carthage) 5 | [![Version](https://img.shields.io/cocoapods/v/RSFontSizes.svg?style=flat&colorA=000000)](http://cocoapods.org/pods/RSFontSizes) 6 | [![License](https://img.shields.io/cocoapods/l/RSFontSizes.svg?style=flat&colorA=000000)](http://cocoapods.org/pods/RSFontSizes) 7 | [![Platform](https://img.shields.io/cocoapods/p/RSFontSizes.svg?style=flat&colorA=000000)](http://cocoapods.org/pods/RSFontSizes) 8 | 9 | 10 | 11 | ## What is it? 12 | 13 | RSFontSize allows you to manage different font sizes for every device screen size in a flexible manner. 14 | - No more family name and styles typing/guessing every time you use a font. 15 | - Flexible size configurations(Fixed, Proportional to screen size and user specific). 16 | - Smart size estimation for vague specifications. 17 | - Save your font configurations for different UIFontTextStyle(.body, .headline, etc). 18 | 19 | ## Installation 20 | 21 | ### Swift Package Manager 22 | 23 | ``` 24 | https://github.com/rootstrap/RSFontSizes 25 | ``` 26 | 27 | - In XCode 11, go to File -> Swift Packages -> Add Package Dependency. 28 | - Enter the repo URL (https://github.com/rootstrap/RSFontSizes) and click Next. 29 | - Select the version rule desired (you can specify a version number, branch, or commit) and click Next. 30 | - Finally, select the target where you want to use the framework. 31 | 32 | **Note:** It is always recommended to lock your external libraries to a specific version. 33 | 34 | ### Cocoapods 35 | 36 | RSFontSizes is available through [CocoaPods](http://cocoapods.org). To install 37 | it, simply add the following line to your Podfile: 38 | 39 | ```ruby 40 | pod "RSFontSizes" 41 | ``` 42 | 43 | ### Carthage 44 | 45 | 1. Add the following sources to your Cartfile: 46 | 47 | ``` 48 | github "rootstrap/RSFontSizes" ~> 1.3.3 49 | ``` 50 | 51 | 2. Run the `carthage update` command in the terminal. 52 | 53 | 3. Link the resulting RSFontSizes.framework and Device.framework to your project. 54 | 55 | 56 | ### Quick peek 57 | 58 | From poorly managed font sizes: 59 | 60 | ![Normal Preview](https://github.com/rootstrap/RSFontSizes/blob/master/fixed-font-sizes.jpg?raw=true) 61 | 62 | Fonts are set directly from IB. 63 | 64 | To readable texts: 65 | 66 | ![Preview With RSFontSizes](https://github.com/rootstrap/RSFontSizes/blob/master/dynamic-font-sizes.jpg?raw=true) 67 | 68 | Fonts using RSFontSizes. 69 | 70 | 71 | ## Start using RSFontSizes 72 | 73 | Just link your font assets to the project. Very detailed guide [here](http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/). 74 | 75 | If there are too many font files to add, FontBlaster pod is strongly recommended. 76 | It's a simple solution to load your assets automatically instead of manually adding every file to the Info.plist. 77 | 78 | ### Optionally add shortcuts to your favourite fonts. 79 | 80 | ```swift 81 | extension Font { 82 | //Your Custom font family names 83 | static let raleway = "Raleway".font()! 84 | } 85 | ``` 86 | 87 | ## Perks 88 | 89 | There are different types to get your fonts correctly sized: 90 | 91 | -Fixed: The consumer sets the font point size or uses one of the provided classes(.small, .medium, etc). 92 | 93 | ```swift 94 | let font = Font.raleway.small 95 | ``` 96 | 97 | No magic here :) 98 | 99 | -Proportional: The consumer will specify a base font size asociated with a device screen size. 100 | 101 | ```swift 102 | let font = Font.raleway.proportional(to: (.screen3_5Inch, 10)) 103 | ``` 104 | 105 | The result will be a font resized accordingly for the current device screen size. 106 | 107 | -Screen Specific: The consumer defines a set of font sizes linked to an specific screen size. 108 | 109 | ```swift 110 | let font = Font.raleway.specific(values: [.screen4Inch: 12, 111 | .screen4_7Inch: 13.5, 112 | .screen5_5Inch: 16, 113 | .screen9_7Inch: 20.2])) 114 | ``` 115 | 116 | If a screen size is not specified the library will try to estimate the correct value for the font size. 117 | 118 | ### You can also... 119 | 120 | #### Use a String as the Font family name 121 | 122 | ```swift 123 | let font = "Raleway".font(withWeight: .bold, 124 | size: .fixed(20)) 125 | ``` 126 | 127 | #### Save your 'templates' to reuse 128 | 129 | ```swift 130 | Font.save(font: someFont, forClass: .body) 131 | ``` 132 | 133 | And then use it elsewhere: 134 | 135 | ```swift 136 | let label.font = Font.with(class: .body) 137 | ``` 138 | 139 | ## Example 140 | 141 | To run the example project, clone the repo, and run `pod install` from the Example directory first. 142 | 143 | 144 | ## Credits 145 | 146 | **RSFontSizes** is maintained by [Rootstrap](http://www.rootstrap.com) and [German López](https://github.com/glm4) with the help of our [contributors](https://github.com/rootstrap/RSFontSizes/contributors). 147 | 148 | ## License 149 | 150 | RSFontSizes is available under the MIT license. See the LICENSE file for more info. 151 | 152 | [](http://www.rootstrap.com) 153 | -------------------------------------------------------------------------------- /Sources/Classes/UIFontExtensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIFontExtensions.swift 3 | // Device 4 | // 5 | // Created by German on 3/28/19. 6 | // 7 | 8 | import UIKit 9 | 10 | public extension UIFont { 11 | convenience init(familyName: String, 12 | weight: UIFont.Weight, 13 | size: PointSize) { 14 | let traits: [UIFontDescriptor.TraitKey: Any] = [.weight: weight] 15 | let attributes: [UIFontDescriptor.AttributeName: Any] = [.family: familyName, 16 | .size: size.value, 17 | .traits: traits] 18 | 19 | let descriptor = Font.bestDescriptor(matchingAttributes: attributes, weight: weight) 20 | self.init(descriptor: descriptor, size: size.value) 21 | } 22 | 23 | func weight(_ weight: UIFont.Weight) -> UIFont { 24 | var attributes = currentAttributes 25 | if var traits = attributes[.traits] as? [UIFontDescriptor.TraitKey: Any] { 26 | traits[.weight] = weight 27 | attributes[.traits] = traits 28 | } 29 | let descriptor = Font.bestDescriptor(matchingAttributes: attributes, 30 | weight: weight) 31 | return UIFont(descriptor: descriptor, size: pointSize) 32 | } 33 | 34 | func sized(_ size: PointSize) -> UIFont { 35 | return withSize(size.value) 36 | } 37 | 38 | private var currentAttributes: [UIFontDescriptor.AttributeName: Any] { 39 | var attributes = fontDescriptor.fontAttributes 40 | let traits = (fontDescriptor.object(forKey: .traits) ?? attributes[.traits]) as? [UIFontDescriptor.TraitKey: Any] ?? [:] 41 | attributes[.traits] = traits 42 | if attributes[.family] == nil { attributes[.family] = familyName } 43 | attributes[.name] = nil 44 | return attributes 45 | } 46 | 47 | // MARK: Weight Functions 48 | 49 | var ultraLight: UIFont { return weight(.ultraLight) } 50 | var extraLight: UIFont { return weight(.extraLight) } 51 | var thin: UIFont { return weight(.thin) } 52 | var book: UIFont { return weight(.book) } 53 | var demi: UIFont { return weight(.demi) } 54 | var normal: UIFont { return weight(.normal) } 55 | var light: UIFont { return weight(.light) } 56 | var regular: UIFont { return weight(.regular) } 57 | var medium: UIFont { return weight(.medium) } 58 | var demibold: UIFont { return weight(.demibold) } 59 | var semibold: UIFont { return weight(.semibold) } 60 | var bold: UIFont { return weight(.bold) } 61 | var extraBold: UIFont { return weight(.extraBold) } 62 | var heavy: UIFont { return weight(.heavy) } 63 | var black: UIFont { return weight(.black) } 64 | var extraBlack: UIFont { return weight(.extraBlack) } 65 | var ultraBlack: UIFont { return weight(.ultraBlack) } 66 | var fat: UIFont { return weight(.fat) } 67 | var poster: UIFont { return weight(.poster) } 68 | 69 | // MARK: Size Functions 70 | var tiny: UIFont { return sized(.tiny) } 71 | var small: UIFont { return sized(.small) } 72 | var normalSize: UIFont { return sized(.normal) } 73 | var mediumSize: UIFont { return sized(.medium) } 74 | var big: UIFont { return sized(.big) } 75 | var huge: UIFont { return sized(.huge) } 76 | var enormous: UIFont { return sized(.enormous) } 77 | func fixed(_ points: CGFloat) -> UIFont { return sized(.fixed(points: points)) } 78 | func specific(values: SizeSpecification) -> UIFont { return sized(.specific(with: values)) } 79 | func proportional(to base: BaseSize) -> UIFont { return sized(.proportional(to: base)) } 80 | } 81 | 82 | @available(iOS 11.0, *) 83 | public extension UIFont { 84 | func dinamicallySized(forStyle style: UIFont.TextStyle) -> UIFont { 85 | let metrics = UIFontMetrics(forTextStyle: style) 86 | return metrics.scaledFont(for: self) 87 | } 88 | 89 | @available(iOS 11.0, *) 90 | func dinamicallySized(forSize pointSize: PointSize) -> UIFont { 91 | return dinamicallySized(forStyle: pointSize.fontStyle) 92 | } 93 | 94 | var body: UIFont { return dinamicallySized(forStyle: .body) } 95 | var largeTitle: UIFont { return dinamicallySized(forStyle: .largeTitle) } 96 | var title1: UIFont { return dinamicallySized(forStyle: .title1) } 97 | var title2: UIFont { return dinamicallySized(forStyle: .title2) } 98 | var title3: UIFont { return dinamicallySized(forStyle: .title3) } 99 | var headline: UIFont { return dinamicallySized(forStyle: .headline) } 100 | var subheadline: UIFont { return dinamicallySized(forStyle: .subheadline) } 101 | var callout: UIFont { return dinamicallySized(forStyle: .callout) } 102 | var footnote: UIFont { return dinamicallySized(forStyle: .footnote) } 103 | var caption1: UIFont { return dinamicallySized(forStyle: .caption1) } 104 | var caption2: UIFont { return dinamicallySized(forStyle: .caption2) } 105 | } 106 | 107 | public extension UIFont.Weight { 108 | private static let equatableDiff: CGFloat = 0.0001 109 | static let extraLight = UIFont.Weight(rawValue: UIFont.Weight.ultraLight.rawValue + equatableDiff) 110 | static let book = UIFont.Weight(rawValue: -0.5) 111 | static let demi = UIFont.Weight(rawValue: -0.5 + equatableDiff) 112 | static let normal = UIFont.Weight(rawValue: 0 + equatableDiff) 113 | static let demibold = UIFont.Weight(rawValue: UIFont.Weight.semibold.rawValue + equatableDiff) 114 | static let extraBold = UIFont.Weight(rawValue: UIFont.Weight.black.rawValue + equatableDiff) 115 | static let extraBlack = UIFont.Weight(rawValue: 0.8) 116 | static let ultraBlack = UIFont.Weight(rawValue: UIFont.Weight.extraBlack.rawValue + equatableDiff) 117 | static let fat = UIFont.Weight(rawValue: UIFont.Weight.ultraBlack.rawValue + equatableDiff) 118 | static let poster = UIFont.Weight(rawValue: UIFont.Weight.fat.rawValue + equatableDiff) 119 | 120 | var faceName: String { 121 | switch self { 122 | case .ultraLight: return "UltraLight" 123 | case .extraLight: return "ExtraLight" 124 | case .thin: return "Thin" 125 | case .book: return "Book" 126 | case .demi: return "Demi" 127 | case .normal: return "Normal" 128 | case .light: return "Light" 129 | case .medium: return "Medium" 130 | case .demibold: return "DemiBold" 131 | case .semibold: return "SemiBold" 132 | case .bold: return "Bold" 133 | case .extraBold: return "ExtraBold" 134 | case .heavy: return "Heavy" 135 | case .black: return "Black" 136 | case .extraBlack: return "ExtraBlack" 137 | case .ultraBlack: return "UltraBlack" 138 | case .fat: return "Fat" 139 | case .poster: return "Poster" 140 | default: return "Regular" 141 | } 142 | } 143 | } 144 | -------------------------------------------------------------------------------- /Example/Example for RSFontSizes/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Raleway-Bold 15 | 16 | 17 | Raleway-Regular 18 | 19 | 20 | Raleway-Thin 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 42 | 48 | 54 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /RSFontSizes.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 53; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 9B0A60EE24C0EBD000812410 /* Device.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9B760782234E89A400CB7C0E /* Device.framework */; }; 11 | 9BAF8F6B234E6BA6001D8701 /* RSFontSizes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BAF8F63234E6BA6001D8701 /* RSFontSizes.swift */; }; 12 | 9BAF8F6C234E6BA6001D8701 /* PointSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BAF8F64234E6BA6001D8701 /* PointSize.swift */; }; 13 | 9BAF8F6D234E6BA6001D8701 /* SizeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BAF8F65234E6BA6001D8701 /* SizeExtension.swift */; }; 14 | 9BAF8F6E234E6BA6001D8701 /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BAF8F66234E6BA6001D8701 /* StringExtension.swift */; }; 15 | 9BAF8F6F234E6BA6001D8701 /* UIFontExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BAF8F67234E6BA6001D8701 /* UIFontExtensions.swift */; }; 16 | 9BAF8F72234E6C81001D8701 /* RSFontSizes.swift in Resources */ = {isa = PBXBuildFile; fileRef = 9BAF8F63234E6BA6001D8701 /* RSFontSizes.swift */; }; 17 | 9BAF8F73234E6C81001D8701 /* PointSize.swift in Resources */ = {isa = PBXBuildFile; fileRef = 9BAF8F64234E6BA6001D8701 /* PointSize.swift */; }; 18 | 9BAF8F74234E6C81001D8701 /* SizeExtension.swift in Resources */ = {isa = PBXBuildFile; fileRef = 9BAF8F65234E6BA6001D8701 /* SizeExtension.swift */; }; 19 | 9BAF8F75234E6C81001D8701 /* StringExtension.swift in Resources */ = {isa = PBXBuildFile; fileRef = 9BAF8F66234E6BA6001D8701 /* StringExtension.swift */; }; 20 | 9BAF8F76234E6C81001D8701 /* UIFontExtensions.swift in Resources */ = {isa = PBXBuildFile; fileRef = 9BAF8F67234E6BA6001D8701 /* UIFontExtensions.swift */; }; 21 | /* End PBXBuildFile section */ 22 | 23 | /* Begin PBXFileReference section */ 24 | 9B760782234E89A400CB7C0E /* Device.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Device.framework; path = Carthage/Build/iOS/Device.framework; sourceTree = ""; }; 25 | 9BAF8F55234E6B1B001D8701 /* RSFontSizes.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RSFontSizes.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 26 | 9BAF8F62234E6BA6001D8701 /* .gitkeep */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitkeep; sourceTree = ""; }; 27 | 9BAF8F63234E6BA6001D8701 /* RSFontSizes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RSFontSizes.swift; sourceTree = ""; }; 28 | 9BAF8F64234E6BA6001D8701 /* PointSize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PointSize.swift; sourceTree = ""; }; 29 | 9BAF8F65234E6BA6001D8701 /* SizeExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SizeExtension.swift; sourceTree = ""; }; 30 | 9BAF8F66234E6BA6001D8701 /* StringExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringExtension.swift; sourceTree = ""; }; 31 | 9BAF8F67234E6BA6001D8701 /* UIFontExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIFontExtensions.swift; sourceTree = ""; }; 32 | 9BAF8F69234E6BA6001D8701 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 33 | /* End PBXFileReference section */ 34 | 35 | /* Begin PBXFrameworksBuildPhase section */ 36 | 9BAF8F52234E6B1B001D8701 /* Frameworks */ = { 37 | isa = PBXFrameworksBuildPhase; 38 | buildActionMask = 2147483647; 39 | files = ( 40 | 9B0A60EE24C0EBD000812410 /* Device.framework in Frameworks */, 41 | ); 42 | runOnlyForDeploymentPostprocessing = 0; 43 | }; 44 | /* End PBXFrameworksBuildPhase section */ 45 | 46 | /* Begin PBXGroup section */ 47 | 9B760781234E89A400CB7C0E /* Frameworks */ = { 48 | isa = PBXGroup; 49 | children = ( 50 | 9B760782234E89A400CB7C0E /* Device.framework */, 51 | ); 52 | name = Frameworks; 53 | sourceTree = ""; 54 | }; 55 | 9BAF8F4B234E6B1B001D8701 = { 56 | isa = PBXGroup; 57 | children = ( 58 | 9BAF8F60234E6BA6001D8701 /* Sources */, 59 | 9BAF8F56234E6B1B001D8701 /* Products */, 60 | 9B760781234E89A400CB7C0E /* Frameworks */, 61 | ); 62 | sourceTree = ""; 63 | }; 64 | 9BAF8F56234E6B1B001D8701 /* Products */ = { 65 | isa = PBXGroup; 66 | children = ( 67 | 9BAF8F55234E6B1B001D8701 /* RSFontSizes.framework */, 68 | ); 69 | name = Products; 70 | sourceTree = ""; 71 | }; 72 | 9BAF8F60234E6BA6001D8701 /* Sources */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | 9BAF8F61234E6BA6001D8701 /* Classes */, 76 | 9BAF8F69234E6BA6001D8701 /* Info.plist */, 77 | ); 78 | path = Sources; 79 | sourceTree = ""; 80 | }; 81 | 9BAF8F61234E6BA6001D8701 /* Classes */ = { 82 | isa = PBXGroup; 83 | children = ( 84 | 9BAF8F62234E6BA6001D8701 /* .gitkeep */, 85 | 9BAF8F63234E6BA6001D8701 /* RSFontSizes.swift */, 86 | 9BAF8F64234E6BA6001D8701 /* PointSize.swift */, 87 | 9BAF8F65234E6BA6001D8701 /* SizeExtension.swift */, 88 | 9BAF8F66234E6BA6001D8701 /* StringExtension.swift */, 89 | 9BAF8F67234E6BA6001D8701 /* UIFontExtensions.swift */, 90 | ); 91 | path = Classes; 92 | sourceTree = ""; 93 | }; 94 | /* End PBXGroup section */ 95 | 96 | /* Begin PBXHeadersBuildPhase section */ 97 | 9BAF8F50234E6B1B001D8701 /* Headers */ = { 98 | isa = PBXHeadersBuildPhase; 99 | buildActionMask = 2147483647; 100 | files = ( 101 | ); 102 | runOnlyForDeploymentPostprocessing = 0; 103 | }; 104 | /* End PBXHeadersBuildPhase section */ 105 | 106 | /* Begin PBXNativeTarget section */ 107 | 9BAF8F54234E6B1B001D8701 /* RSFontSizes */ = { 108 | isa = PBXNativeTarget; 109 | buildConfigurationList = 9BAF8F5D234E6B1B001D8701 /* Build configuration list for PBXNativeTarget "RSFontSizes" */; 110 | buildPhases = ( 111 | 9BAF8F50234E6B1B001D8701 /* Headers */, 112 | 9BAF8F51234E6B1B001D8701 /* Sources */, 113 | 9BAF8F52234E6B1B001D8701 /* Frameworks */, 114 | 9BAF8F53234E6B1B001D8701 /* Resources */, 115 | ); 116 | buildRules = ( 117 | ); 118 | dependencies = ( 119 | ); 120 | name = RSFontSizes; 121 | productName = RSFontSizes; 122 | productReference = 9BAF8F55234E6B1B001D8701 /* RSFontSizes.framework */; 123 | productType = "com.apple.product-type.framework"; 124 | }; 125 | /* End PBXNativeTarget section */ 126 | 127 | /* Begin PBXProject section */ 128 | 9BAF8F4C234E6B1B001D8701 /* Project object */ = { 129 | isa = PBXProject; 130 | attributes = { 131 | BuildIndependentTargetsInParallel = YES; 132 | LastUpgradeCheck = 1430; 133 | ORGANIZATIONNAME = Rootstrap; 134 | TargetAttributes = { 135 | 9BAF8F54234E6B1B001D8701 = { 136 | CreatedOnToolsVersion = 10.2.1; 137 | }; 138 | }; 139 | }; 140 | buildConfigurationList = 9BAF8F4F234E6B1B001D8701 /* Build configuration list for PBXProject "RSFontSizes" */; 141 | compatibilityVersion = "Xcode 9.3"; 142 | developmentRegion = en; 143 | hasScannedForEncodings = 0; 144 | knownRegions = ( 145 | en, 146 | ); 147 | mainGroup = 9BAF8F4B234E6B1B001D8701; 148 | productRefGroup = 9BAF8F56234E6B1B001D8701 /* Products */; 149 | projectDirPath = ""; 150 | projectRoot = ""; 151 | targets = ( 152 | 9BAF8F54234E6B1B001D8701 /* RSFontSizes */, 153 | ); 154 | }; 155 | /* End PBXProject section */ 156 | 157 | /* Begin PBXResourcesBuildPhase section */ 158 | 9BAF8F53234E6B1B001D8701 /* Resources */ = { 159 | isa = PBXResourcesBuildPhase; 160 | buildActionMask = 2147483647; 161 | files = ( 162 | 9BAF8F72234E6C81001D8701 /* RSFontSizes.swift in Resources */, 163 | 9BAF8F73234E6C81001D8701 /* PointSize.swift in Resources */, 164 | 9BAF8F74234E6C81001D8701 /* SizeExtension.swift in Resources */, 165 | 9BAF8F75234E6C81001D8701 /* StringExtension.swift in Resources */, 166 | 9BAF8F76234E6C81001D8701 /* UIFontExtensions.swift in Resources */, 167 | ); 168 | runOnlyForDeploymentPostprocessing = 0; 169 | }; 170 | /* End PBXResourcesBuildPhase section */ 171 | 172 | /* Begin PBXSourcesBuildPhase section */ 173 | 9BAF8F51234E6B1B001D8701 /* Sources */ = { 174 | isa = PBXSourcesBuildPhase; 175 | buildActionMask = 2147483647; 176 | files = ( 177 | 9BAF8F6E234E6BA6001D8701 /* StringExtension.swift in Sources */, 178 | 9BAF8F6B234E6BA6001D8701 /* RSFontSizes.swift in Sources */, 179 | 9BAF8F6F234E6BA6001D8701 /* UIFontExtensions.swift in Sources */, 180 | 9BAF8F6C234E6BA6001D8701 /* PointSize.swift in Sources */, 181 | 9BAF8F6D234E6BA6001D8701 /* SizeExtension.swift in Sources */, 182 | ); 183 | runOnlyForDeploymentPostprocessing = 0; 184 | }; 185 | /* End PBXSourcesBuildPhase section */ 186 | 187 | /* Begin XCBuildConfiguration section */ 188 | 9BAF8F5B234E6B1B001D8701 /* Debug */ = { 189 | isa = XCBuildConfiguration; 190 | buildSettings = { 191 | ALWAYS_SEARCH_USER_PATHS = NO; 192 | CLANG_ANALYZER_NONNULL = YES; 193 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 194 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 195 | CLANG_CXX_LIBRARY = "libc++"; 196 | CLANG_ENABLE_MODULES = YES; 197 | CLANG_ENABLE_OBJC_ARC = YES; 198 | CLANG_ENABLE_OBJC_WEAK = YES; 199 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 200 | CLANG_WARN_BOOL_CONVERSION = YES; 201 | CLANG_WARN_COMMA = YES; 202 | CLANG_WARN_CONSTANT_CONVERSION = YES; 203 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 204 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 205 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 206 | CLANG_WARN_EMPTY_BODY = YES; 207 | CLANG_WARN_ENUM_CONVERSION = YES; 208 | CLANG_WARN_INFINITE_RECURSION = YES; 209 | CLANG_WARN_INT_CONVERSION = YES; 210 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 211 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 212 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 213 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 214 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 215 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 216 | CLANG_WARN_STRICT_PROTOTYPES = YES; 217 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 218 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 219 | CLANG_WARN_UNREACHABLE_CODE = YES; 220 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 221 | CODE_SIGN_IDENTITY = "iPhone Developer"; 222 | COPY_PHASE_STRIP = NO; 223 | CURRENT_PROJECT_VERSION = 1; 224 | DEBUG_INFORMATION_FORMAT = dwarf; 225 | ENABLE_STRICT_OBJC_MSGSEND = YES; 226 | ENABLE_TESTABILITY = YES; 227 | GCC_C_LANGUAGE_STANDARD = gnu11; 228 | GCC_DYNAMIC_NO_PIC = NO; 229 | GCC_NO_COMMON_BLOCKS = YES; 230 | GCC_OPTIMIZATION_LEVEL = 0; 231 | GCC_PREPROCESSOR_DEFINITIONS = ( 232 | "DEBUG=1", 233 | "$(inherited)", 234 | ); 235 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 236 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 237 | GCC_WARN_UNDECLARED_SELECTOR = YES; 238 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 239 | GCC_WARN_UNUSED_FUNCTION = YES; 240 | GCC_WARN_UNUSED_VARIABLE = YES; 241 | IPHONEOS_DEPLOYMENT_TARGET = 12.2; 242 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 243 | MTL_FAST_MATH = YES; 244 | ONLY_ACTIVE_ARCH = YES; 245 | SDKROOT = iphoneos; 246 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 247 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 248 | VERSIONING_SYSTEM = "apple-generic"; 249 | VERSION_INFO_PREFIX = ""; 250 | }; 251 | name = Debug; 252 | }; 253 | 9BAF8F5C234E6B1B001D8701 /* Release */ = { 254 | isa = XCBuildConfiguration; 255 | buildSettings = { 256 | ALWAYS_SEARCH_USER_PATHS = NO; 257 | CLANG_ANALYZER_NONNULL = YES; 258 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 259 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 260 | CLANG_CXX_LIBRARY = "libc++"; 261 | CLANG_ENABLE_MODULES = YES; 262 | CLANG_ENABLE_OBJC_ARC = YES; 263 | CLANG_ENABLE_OBJC_WEAK = YES; 264 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 265 | CLANG_WARN_BOOL_CONVERSION = YES; 266 | CLANG_WARN_COMMA = YES; 267 | CLANG_WARN_CONSTANT_CONVERSION = YES; 268 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 269 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 270 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 271 | CLANG_WARN_EMPTY_BODY = YES; 272 | CLANG_WARN_ENUM_CONVERSION = YES; 273 | CLANG_WARN_INFINITE_RECURSION = YES; 274 | CLANG_WARN_INT_CONVERSION = YES; 275 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 276 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 277 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 278 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 279 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 280 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 281 | CLANG_WARN_STRICT_PROTOTYPES = YES; 282 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 283 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 284 | CLANG_WARN_UNREACHABLE_CODE = YES; 285 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 286 | CODE_SIGN_IDENTITY = "iPhone Developer"; 287 | COPY_PHASE_STRIP = NO; 288 | CURRENT_PROJECT_VERSION = 1; 289 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 290 | ENABLE_NS_ASSERTIONS = NO; 291 | ENABLE_STRICT_OBJC_MSGSEND = YES; 292 | GCC_C_LANGUAGE_STANDARD = gnu11; 293 | GCC_NO_COMMON_BLOCKS = YES; 294 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 295 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 296 | GCC_WARN_UNDECLARED_SELECTOR = YES; 297 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 298 | GCC_WARN_UNUSED_FUNCTION = YES; 299 | GCC_WARN_UNUSED_VARIABLE = YES; 300 | IPHONEOS_DEPLOYMENT_TARGET = 12.2; 301 | MTL_ENABLE_DEBUG_INFO = NO; 302 | MTL_FAST_MATH = YES; 303 | SDKROOT = iphoneos; 304 | SWIFT_COMPILATION_MODE = wholemodule; 305 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 306 | VALIDATE_PRODUCT = YES; 307 | VERSIONING_SYSTEM = "apple-generic"; 308 | VERSION_INFO_PREFIX = ""; 309 | }; 310 | name = Release; 311 | }; 312 | 9BAF8F5E234E6B1B001D8701 /* Debug */ = { 313 | isa = XCBuildConfiguration; 314 | buildSettings = { 315 | CODE_SIGN_IDENTITY = ""; 316 | CODE_SIGN_STYLE = Automatic; 317 | DEFINES_MODULE = YES; 318 | DEVELOPMENT_TEAM = WNU857N39T; 319 | DYLIB_COMPATIBILITY_VERSION = 1; 320 | DYLIB_CURRENT_VERSION = 1; 321 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 322 | ENABLE_MODULE_VERIFIER = YES; 323 | FRAMEWORK_SEARCH_PATHS = ( 324 | "$(inherited)", 325 | "$(PROJECT_DIR)/Carthage/Build/iOS", 326 | ); 327 | INFOPLIST_FILE = Sources/Info.plist; 328 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 329 | IPHONEOS_DEPLOYMENT_TARGET = 12.2; 330 | LD_RUNPATH_SEARCH_PATHS = ( 331 | "$(inherited)", 332 | "@executable_path/Frameworks", 333 | "@loader_path/Frameworks", 334 | ); 335 | MARKETING_VERSION = 1.3.0; 336 | MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; 337 | MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++14"; 338 | PRODUCT_BUNDLE_IDENTIFIER = com.rootstrap.RSFontSizes; 339 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 340 | SKIP_INSTALL = YES; 341 | SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; 342 | SWIFT_INSTALL_OBJC_HEADER = NO; 343 | SWIFT_VERSION = 5.0; 344 | TARGETED_DEVICE_FAMILY = "1,2"; 345 | }; 346 | name = Debug; 347 | }; 348 | 9BAF8F5F234E6B1B001D8701 /* Release */ = { 349 | isa = XCBuildConfiguration; 350 | buildSettings = { 351 | CODE_SIGN_IDENTITY = ""; 352 | CODE_SIGN_STYLE = Automatic; 353 | DEFINES_MODULE = YES; 354 | DEVELOPMENT_TEAM = WNU857N39T; 355 | DYLIB_COMPATIBILITY_VERSION = 1; 356 | DYLIB_CURRENT_VERSION = 1; 357 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 358 | ENABLE_MODULE_VERIFIER = YES; 359 | FRAMEWORK_SEARCH_PATHS = ( 360 | "$(inherited)", 361 | "$(PROJECT_DIR)/Carthage/Build/iOS", 362 | ); 363 | INFOPLIST_FILE = Sources/Info.plist; 364 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 365 | IPHONEOS_DEPLOYMENT_TARGET = 12.2; 366 | LD_RUNPATH_SEARCH_PATHS = ( 367 | "$(inherited)", 368 | "@executable_path/Frameworks", 369 | "@loader_path/Frameworks", 370 | ); 371 | MARKETING_VERSION = 1.3.0; 372 | MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; 373 | MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++14"; 374 | PRODUCT_BUNDLE_IDENTIFIER = com.rootstrap.RSFontSizes; 375 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 376 | SKIP_INSTALL = YES; 377 | SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; 378 | SWIFT_INSTALL_OBJC_HEADER = NO; 379 | SWIFT_VERSION = 5.0; 380 | TARGETED_DEVICE_FAMILY = "1,2"; 381 | }; 382 | name = Release; 383 | }; 384 | /* End XCBuildConfiguration section */ 385 | 386 | /* Begin XCConfigurationList section */ 387 | 9BAF8F4F234E6B1B001D8701 /* Build configuration list for PBXProject "RSFontSizes" */ = { 388 | isa = XCConfigurationList; 389 | buildConfigurations = ( 390 | 9BAF8F5B234E6B1B001D8701 /* Debug */, 391 | 9BAF8F5C234E6B1B001D8701 /* Release */, 392 | ); 393 | defaultConfigurationIsVisible = 0; 394 | defaultConfigurationName = Release; 395 | }; 396 | 9BAF8F5D234E6B1B001D8701 /* Build configuration list for PBXNativeTarget "RSFontSizes" */ = { 397 | isa = XCConfigurationList; 398 | buildConfigurations = ( 399 | 9BAF8F5E234E6B1B001D8701 /* Debug */, 400 | 9BAF8F5F234E6B1B001D8701 /* Release */, 401 | ); 402 | defaultConfigurationIsVisible = 0; 403 | defaultConfigurationName = Release; 404 | }; 405 | /* End XCConfigurationList section */ 406 | }; 407 | rootObject = 9BAF8F4C234E6B1B001D8701 /* Project object */; 408 | } 409 | -------------------------------------------------------------------------------- /Example/RSFontSizesExample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; 11 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; }; 12 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; }; 13 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; 14 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; 15 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; }; 16 | 9B50B4361F2FD3FC0017CEF9 /* Raleway-ExtraLightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4241F2FD3FC0017CEF9 /* Raleway-ExtraLightItalic.ttf */; }; 17 | 9B50B4371F2FD3FC0017CEF9 /* Raleway-ThinItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4251F2FD3FC0017CEF9 /* Raleway-ThinItalic.ttf */; }; 18 | 9B50B4381F2FD3FC0017CEF9 /* Raleway-BlackItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4261F2FD3FC0017CEF9 /* Raleway-BlackItalic.ttf */; }; 19 | 9B50B4391F2FD3FC0017CEF9 /* Raleway-BoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4271F2FD3FC0017CEF9 /* Raleway-BoldItalic.ttf */; }; 20 | 9B50B43A1F2FD3FC0017CEF9 /* Raleway-ExtraBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4281F2FD3FC0017CEF9 /* Raleway-ExtraBoldItalic.ttf */; }; 21 | 9B50B43B1F2FD3FC0017CEF9 /* Raleway-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4291F2FD3FC0017CEF9 /* Raleway-Italic.ttf */; }; 22 | 9B50B43C1F2FD3FC0017CEF9 /* Raleway-LightItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B42A1F2FD3FC0017CEF9 /* Raleway-LightItalic.ttf */; }; 23 | 9B50B43D1F2FD3FC0017CEF9 /* Raleway-MediumItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B42B1F2FD3FC0017CEF9 /* Raleway-MediumItalic.ttf */; }; 24 | 9B50B43E1F2FD3FC0017CEF9 /* Raleway-SemiBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B42C1F2FD3FC0017CEF9 /* Raleway-SemiBoldItalic.ttf */; }; 25 | 9B50B4401F2FD3FC0017CEF9 /* Raleway-ExtraBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B42E1F2FD3FC0017CEF9 /* Raleway-ExtraBold.ttf */; }; 26 | 9B50B4411F2FD3FC0017CEF9 /* Raleway-ExtraLight.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B42F1F2FD3FC0017CEF9 /* Raleway-ExtraLight.ttf */; }; 27 | 9B50B4421F2FD3FC0017CEF9 /* Raleway-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4301F2FD3FC0017CEF9 /* Raleway-Regular.ttf */; }; 28 | 9B50B4431F2FD3FC0017CEF9 /* Raleway-Thin.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4311F2FD3FC0017CEF9 /* Raleway-Thin.ttf */; }; 29 | 9B50B4441F2FD3FC0017CEF9 /* Raleway-Black.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4321F2FD3FC0017CEF9 /* Raleway-Black.ttf */; }; 30 | 9B50B4451F2FD3FC0017CEF9 /* Raleway-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4331F2FD3FC0017CEF9 /* Raleway-SemiBold.ttf */; }; 31 | 9B50B4461F2FD3FC0017CEF9 /* Raleway-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4341F2FD3FC0017CEF9 /* Raleway-Light.ttf */; }; 32 | 9B50B4471F2FD3FC0017CEF9 /* Raleway-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B50B4351F2FD3FC0017CEF9 /* Raleway-Medium.ttf */; }; 33 | 9B9F3432224E51DB00E729BA /* Raleway-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9B9F3431224E51DB00E729BA /* Raleway-Bold.ttf */; }; 34 | 9B9F3442224E78CC00E729BA /* UIFontExtensionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B9F3441224E78CC00E729BA /* UIFontExtensionTest.swift */; }; 35 | E338A7D151D0059AE62C77D2 /* Pods_RSFontSizes_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EB7E412D0BD734F8FABAB8 /* Pods_RSFontSizes_Tests.framework */; }; 36 | EF4EF218AD4EADE133465527 /* Pods_RSFontSizes_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F322A8590C1F64975EEDF3A7 /* Pods_RSFontSizes_Example.framework */; }; 37 | /* End PBXBuildFile section */ 38 | 39 | /* Begin PBXContainerItemProxy section */ 40 | 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { 41 | isa = PBXContainerItemProxy; 42 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */; 43 | proxyType = 1; 44 | remoteGlobalIDString = 607FACCF1AFB9204008FA782; 45 | remoteInfo = FontSizes; 46 | }; 47 | /* End PBXContainerItemProxy section */ 48 | 49 | /* Begin PBXFileReference section */ 50 | 1936BC5270C2F6ADE8C83C4F /* Pods-RSFontSizes_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RSFontSizes_Example.release.xcconfig"; path = "Target Support Files/Pods-RSFontSizes_Example/Pods-RSFontSizes_Example.release.xcconfig"; sourceTree = ""; }; 51 | 1C06626EEA61BB821990556B /* Pods-RSFontSizes_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RSFontSizes_Example.debug.xcconfig"; path = "Target Support Files/Pods-RSFontSizes_Example/Pods-RSFontSizes_Example.debug.xcconfig"; sourceTree = ""; }; 52 | 59186E006E3006A8EFF83A3D /* RSFontSizes.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = RSFontSizes.podspec; path = ../../RSFontSizes.podspec; sourceTree = ""; }; 53 | 607FACD01AFB9204008FA782 /* RSFontSizes_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RSFontSizes_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 54 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 55 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 56 | 607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 57 | 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 58 | 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 59 | 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 60 | 607FACE51AFB9204008FA782 /* RSFontSizes_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RSFontSizes_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 61 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 62 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; 63 | 8B874A1064FA77657DBD2CE8 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../../README.md; sourceTree = ""; }; 64 | 9B50B4241F2FD3FC0017CEF9 /* Raleway-ExtraLightItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-ExtraLightItalic.ttf"; sourceTree = ""; }; 65 | 9B50B4251F2FD3FC0017CEF9 /* Raleway-ThinItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-ThinItalic.ttf"; sourceTree = ""; }; 66 | 9B50B4261F2FD3FC0017CEF9 /* Raleway-BlackItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-BlackItalic.ttf"; sourceTree = ""; }; 67 | 9B50B4271F2FD3FC0017CEF9 /* Raleway-BoldItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-BoldItalic.ttf"; sourceTree = ""; }; 68 | 9B50B4281F2FD3FC0017CEF9 /* Raleway-ExtraBoldItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-ExtraBoldItalic.ttf"; sourceTree = ""; }; 69 | 9B50B4291F2FD3FC0017CEF9 /* Raleway-Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-Italic.ttf"; sourceTree = ""; }; 70 | 9B50B42A1F2FD3FC0017CEF9 /* Raleway-LightItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-LightItalic.ttf"; sourceTree = ""; }; 71 | 9B50B42B1F2FD3FC0017CEF9 /* Raleway-MediumItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-MediumItalic.ttf"; sourceTree = ""; }; 72 | 9B50B42C1F2FD3FC0017CEF9 /* Raleway-SemiBoldItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-SemiBoldItalic.ttf"; sourceTree = ""; }; 73 | 9B50B42E1F2FD3FC0017CEF9 /* Raleway-ExtraBold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-ExtraBold.ttf"; sourceTree = ""; }; 74 | 9B50B42F1F2FD3FC0017CEF9 /* Raleway-ExtraLight.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-ExtraLight.ttf"; sourceTree = ""; }; 75 | 9B50B4301F2FD3FC0017CEF9 /* Raleway-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-Regular.ttf"; sourceTree = ""; }; 76 | 9B50B4311F2FD3FC0017CEF9 /* Raleway-Thin.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-Thin.ttf"; sourceTree = ""; }; 77 | 9B50B4321F2FD3FC0017CEF9 /* Raleway-Black.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-Black.ttf"; sourceTree = ""; }; 78 | 9B50B4331F2FD3FC0017CEF9 /* Raleway-SemiBold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-SemiBold.ttf"; sourceTree = ""; }; 79 | 9B50B4341F2FD3FC0017CEF9 /* Raleway-Light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-Light.ttf"; sourceTree = ""; }; 80 | 9B50B4351F2FD3FC0017CEF9 /* Raleway-Medium.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-Medium.ttf"; sourceTree = ""; }; 81 | 9B9F3431224E51DB00E729BA /* Raleway-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Raleway-Bold.ttf"; sourceTree = ""; }; 82 | 9B9F3441224E78CC00E729BA /* UIFontExtensionTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFontExtensionTest.swift; sourceTree = ""; }; 83 | 9BE18B7AB614FFE339EF87DD /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../../LICENSE; sourceTree = ""; }; 84 | B3C67B6D484EDD0F329A9598 /* Pods-RSFontSizes_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RSFontSizes_Tests.release.xcconfig"; path = "Target Support Files/Pods-RSFontSizes_Tests/Pods-RSFontSizes_Tests.release.xcconfig"; sourceTree = ""; }; 85 | B8EB7E412D0BD734F8FABAB8 /* Pods_RSFontSizes_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RSFontSizes_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 86 | E46D8068CA8604C5CC32F25F /* Pods-RSFontSizes_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RSFontSizes_Tests.debug.xcconfig"; path = "Target Support Files/Pods-RSFontSizes_Tests/Pods-RSFontSizes_Tests.debug.xcconfig"; sourceTree = ""; }; 87 | F322A8590C1F64975EEDF3A7 /* Pods_RSFontSizes_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RSFontSizes_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 88 | /* End PBXFileReference section */ 89 | 90 | /* Begin PBXFrameworksBuildPhase section */ 91 | 607FACCD1AFB9204008FA782 /* Frameworks */ = { 92 | isa = PBXFrameworksBuildPhase; 93 | buildActionMask = 2147483647; 94 | files = ( 95 | EF4EF218AD4EADE133465527 /* Pods_RSFontSizes_Example.framework in Frameworks */, 96 | ); 97 | runOnlyForDeploymentPostprocessing = 0; 98 | }; 99 | 607FACE21AFB9204008FA782 /* Frameworks */ = { 100 | isa = PBXFrameworksBuildPhase; 101 | buildActionMask = 2147483647; 102 | files = ( 103 | E338A7D151D0059AE62C77D2 /* Pods_RSFontSizes_Tests.framework in Frameworks */, 104 | ); 105 | runOnlyForDeploymentPostprocessing = 0; 106 | }; 107 | /* End PBXFrameworksBuildPhase section */ 108 | 109 | /* Begin PBXGroup section */ 110 | 607FACC71AFB9204008FA782 = { 111 | isa = PBXGroup; 112 | children = ( 113 | 607FACD21AFB9204008FA782 /* Example for RSFontSizes */, 114 | 607FACD11AFB9204008FA782 /* Products */, 115 | 607FACE81AFB9204008FA782 /* Tests */, 116 | D6F7E5EE792DBBFADB59D944 /* Pods */, 117 | 7EDF64CF3B3930256D9FCC14 /* Frameworks */, 118 | ); 119 | sourceTree = ""; 120 | }; 121 | 607FACD11AFB9204008FA782 /* Products */ = { 122 | isa = PBXGroup; 123 | children = ( 124 | 607FACD01AFB9204008FA782 /* RSFontSizes_Example.app */, 125 | 607FACE51AFB9204008FA782 /* RSFontSizes_Tests.xctest */, 126 | ); 127 | name = Products; 128 | sourceTree = ""; 129 | }; 130 | 607FACD21AFB9204008FA782 /* Example for RSFontSizes */ = { 131 | isa = PBXGroup; 132 | children = ( 133 | 9B9F342E224D55EA00E729BA /* Podspec Metadata */, 134 | 9B50B4481F2FD4000017CEF9 /* Fonts */, 135 | 607FACD31AFB9204008FA782 /* Supporting Files */, 136 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */, 137 | 607FACDC1AFB9204008FA782 /* Images.xcassets */, 138 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, 139 | 607FACD91AFB9204008FA782 /* Main.storyboard */, 140 | 607FACD71AFB9204008FA782 /* ViewController.swift */, 141 | ); 142 | path = "Example for RSFontSizes"; 143 | sourceTree = ""; 144 | }; 145 | 607FACD31AFB9204008FA782 /* Supporting Files */ = { 146 | isa = PBXGroup; 147 | children = ( 148 | 607FACD41AFB9204008FA782 /* Info.plist */, 149 | ); 150 | path = "Supporting Files"; 151 | sourceTree = ""; 152 | }; 153 | 607FACE81AFB9204008FA782 /* Tests */ = { 154 | isa = PBXGroup; 155 | children = ( 156 | 607FACE91AFB9204008FA782 /* Supporting Files */, 157 | 607FACEB1AFB9204008FA782 /* Tests.swift */, 158 | 9B9F3441224E78CC00E729BA /* UIFontExtensionTest.swift */, 159 | ); 160 | path = Tests; 161 | sourceTree = ""; 162 | }; 163 | 607FACE91AFB9204008FA782 /* Supporting Files */ = { 164 | isa = PBXGroup; 165 | children = ( 166 | 607FACEA1AFB9204008FA782 /* Info.plist */, 167 | ); 168 | path = "Supporting Files"; 169 | sourceTree = ""; 170 | }; 171 | 7EDF64CF3B3930256D9FCC14 /* Frameworks */ = { 172 | isa = PBXGroup; 173 | children = ( 174 | F322A8590C1F64975EEDF3A7 /* Pods_RSFontSizes_Example.framework */, 175 | B8EB7E412D0BD734F8FABAB8 /* Pods_RSFontSizes_Tests.framework */, 176 | ); 177 | name = Frameworks; 178 | sourceTree = ""; 179 | }; 180 | 9B50B4481F2FD4000017CEF9 /* Fonts */ = { 181 | isa = PBXGroup; 182 | children = ( 183 | 9B9F3431224E51DB00E729BA /* Raleway-Bold.ttf */, 184 | 9B50B4321F2FD3FC0017CEF9 /* Raleway-Black.ttf */, 185 | 9B50B4261F2FD3FC0017CEF9 /* Raleway-BlackItalic.ttf */, 186 | 9B50B4271F2FD3FC0017CEF9 /* Raleway-BoldItalic.ttf */, 187 | 9B50B42E1F2FD3FC0017CEF9 /* Raleway-ExtraBold.ttf */, 188 | 9B50B4281F2FD3FC0017CEF9 /* Raleway-ExtraBoldItalic.ttf */, 189 | 9B50B42F1F2FD3FC0017CEF9 /* Raleway-ExtraLight.ttf */, 190 | 9B50B4241F2FD3FC0017CEF9 /* Raleway-ExtraLightItalic.ttf */, 191 | 9B50B4291F2FD3FC0017CEF9 /* Raleway-Italic.ttf */, 192 | 9B50B4341F2FD3FC0017CEF9 /* Raleway-Light.ttf */, 193 | 9B50B42A1F2FD3FC0017CEF9 /* Raleway-LightItalic.ttf */, 194 | 9B50B4351F2FD3FC0017CEF9 /* Raleway-Medium.ttf */, 195 | 9B50B42B1F2FD3FC0017CEF9 /* Raleway-MediumItalic.ttf */, 196 | 9B50B4301F2FD3FC0017CEF9 /* Raleway-Regular.ttf */, 197 | 9B50B4331F2FD3FC0017CEF9 /* Raleway-SemiBold.ttf */, 198 | 9B50B42C1F2FD3FC0017CEF9 /* Raleway-SemiBoldItalic.ttf */, 199 | 9B50B4311F2FD3FC0017CEF9 /* Raleway-Thin.ttf */, 200 | 9B50B4251F2FD3FC0017CEF9 /* Raleway-ThinItalic.ttf */, 201 | ); 202 | path = Fonts; 203 | sourceTree = ""; 204 | }; 205 | 9B9F342E224D55EA00E729BA /* Podspec Metadata */ = { 206 | isa = PBXGroup; 207 | children = ( 208 | 9BE18B7AB614FFE339EF87DD /* LICENSE */, 209 | 8B874A1064FA77657DBD2CE8 /* README.md */, 210 | 59186E006E3006A8EFF83A3D /* RSFontSizes.podspec */, 211 | ); 212 | name = "Podspec Metadata"; 213 | sourceTree = ""; 214 | }; 215 | D6F7E5EE792DBBFADB59D944 /* Pods */ = { 216 | isa = PBXGroup; 217 | children = ( 218 | 1C06626EEA61BB821990556B /* Pods-RSFontSizes_Example.debug.xcconfig */, 219 | 1936BC5270C2F6ADE8C83C4F /* Pods-RSFontSizes_Example.release.xcconfig */, 220 | E46D8068CA8604C5CC32F25F /* Pods-RSFontSizes_Tests.debug.xcconfig */, 221 | B3C67B6D484EDD0F329A9598 /* Pods-RSFontSizes_Tests.release.xcconfig */, 222 | ); 223 | path = Pods; 224 | sourceTree = ""; 225 | }; 226 | /* End PBXGroup section */ 227 | 228 | /* Begin PBXNativeTarget section */ 229 | 607FACCF1AFB9204008FA782 /* RSFontSizes_Example */ = { 230 | isa = PBXNativeTarget; 231 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "RSFontSizes_Example" */; 232 | buildPhases = ( 233 | DA385CF23A74EBCF9E5ECCB1 /* [CP] Check Pods Manifest.lock */, 234 | 607FACCC1AFB9204008FA782 /* Sources */, 235 | 607FACCD1AFB9204008FA782 /* Frameworks */, 236 | 607FACCE1AFB9204008FA782 /* Resources */, 237 | 4AAE7C9E0141C5C956D781F3 /* [CP] Embed Pods Frameworks */, 238 | ); 239 | buildRules = ( 240 | ); 241 | dependencies = ( 242 | ); 243 | name = RSFontSizes_Example; 244 | productName = FontSizes; 245 | productReference = 607FACD01AFB9204008FA782 /* RSFontSizes_Example.app */; 246 | productType = "com.apple.product-type.application"; 247 | }; 248 | 607FACE41AFB9204008FA782 /* RSFontSizes_Tests */ = { 249 | isa = PBXNativeTarget; 250 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "RSFontSizes_Tests" */; 251 | buildPhases = ( 252 | BFB6CB3B1A019771B7B955E8 /* [CP] Check Pods Manifest.lock */, 253 | 607FACE11AFB9204008FA782 /* Sources */, 254 | 607FACE21AFB9204008FA782 /* Frameworks */, 255 | 607FACE31AFB9204008FA782 /* Resources */, 256 | B95A9AFA2ACE2F6C104936FE /* [CP] Embed Pods Frameworks */, 257 | ); 258 | buildRules = ( 259 | ); 260 | dependencies = ( 261 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */, 262 | ); 263 | name = RSFontSizes_Tests; 264 | productName = Tests; 265 | productReference = 607FACE51AFB9204008FA782 /* RSFontSizes_Tests.xctest */; 266 | productType = "com.apple.product-type.bundle.unit-test"; 267 | }; 268 | /* End PBXNativeTarget section */ 269 | 270 | /* Begin PBXProject section */ 271 | 607FACC81AFB9204008FA782 /* Project object */ = { 272 | isa = PBXProject; 273 | attributes = { 274 | LastSwiftUpdateCheck = 0720; 275 | LastUpgradeCheck = 0820; 276 | ORGANIZATIONNAME = CocoaPods; 277 | TargetAttributes = { 278 | 607FACCF1AFB9204008FA782 = { 279 | CreatedOnToolsVersion = 6.3.1; 280 | DevelopmentTeam = WNU857N39T; 281 | LastSwiftMigration = 0820; 282 | }; 283 | 607FACE41AFB9204008FA782 = { 284 | CreatedOnToolsVersion = 6.3.1; 285 | LastSwiftMigration = 0820; 286 | TestTargetID = 607FACCF1AFB9204008FA782; 287 | }; 288 | }; 289 | }; 290 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "RSFontSizesExample" */; 291 | compatibilityVersion = "Xcode 3.2"; 292 | developmentRegion = English; 293 | hasScannedForEncodings = 0; 294 | knownRegions = ( 295 | English, 296 | en, 297 | Base, 298 | ); 299 | mainGroup = 607FACC71AFB9204008FA782; 300 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 301 | projectDirPath = ""; 302 | projectRoot = ""; 303 | targets = ( 304 | 607FACCF1AFB9204008FA782 /* RSFontSizes_Example */, 305 | 607FACE41AFB9204008FA782 /* RSFontSizes_Tests */, 306 | ); 307 | }; 308 | /* End PBXProject section */ 309 | 310 | /* Begin PBXResourcesBuildPhase section */ 311 | 607FACCE1AFB9204008FA782 /* Resources */ = { 312 | isa = PBXResourcesBuildPhase; 313 | buildActionMask = 2147483647; 314 | files = ( 315 | 9B50B4451F2FD3FC0017CEF9 /* Raleway-SemiBold.ttf in Resources */, 316 | 9B50B4361F2FD3FC0017CEF9 /* Raleway-ExtraLightItalic.ttf in Resources */, 317 | 9B50B4441F2FD3FC0017CEF9 /* Raleway-Black.ttf in Resources */, 318 | 9B50B4411F2FD3FC0017CEF9 /* Raleway-ExtraLight.ttf in Resources */, 319 | 9B50B4421F2FD3FC0017CEF9 /* Raleway-Regular.ttf in Resources */, 320 | 9B50B4431F2FD3FC0017CEF9 /* Raleway-Thin.ttf in Resources */, 321 | 9B50B4471F2FD3FC0017CEF9 /* Raleway-Medium.ttf in Resources */, 322 | 9B9F3432224E51DB00E729BA /* Raleway-Bold.ttf in Resources */, 323 | 9B50B43B1F2FD3FC0017CEF9 /* Raleway-Italic.ttf in Resources */, 324 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */, 325 | 9B50B4381F2FD3FC0017CEF9 /* Raleway-BlackItalic.ttf in Resources */, 326 | 9B50B4391F2FD3FC0017CEF9 /* Raleway-BoldItalic.ttf in Resources */, 327 | 9B50B4461F2FD3FC0017CEF9 /* Raleway-Light.ttf in Resources */, 328 | 9B50B4401F2FD3FC0017CEF9 /* Raleway-ExtraBold.ttf in Resources */, 329 | 9B50B43D1F2FD3FC0017CEF9 /* Raleway-MediumItalic.ttf in Resources */, 330 | 9B50B43A1F2FD3FC0017CEF9 /* Raleway-ExtraBoldItalic.ttf in Resources */, 331 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, 332 | 9B50B43C1F2FD3FC0017CEF9 /* Raleway-LightItalic.ttf in Resources */, 333 | 9B50B43E1F2FD3FC0017CEF9 /* Raleway-SemiBoldItalic.ttf in Resources */, 334 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, 335 | 9B50B4371F2FD3FC0017CEF9 /* Raleway-ThinItalic.ttf in Resources */, 336 | ); 337 | runOnlyForDeploymentPostprocessing = 0; 338 | }; 339 | 607FACE31AFB9204008FA782 /* Resources */ = { 340 | isa = PBXResourcesBuildPhase; 341 | buildActionMask = 2147483647; 342 | files = ( 343 | ); 344 | runOnlyForDeploymentPostprocessing = 0; 345 | }; 346 | /* End PBXResourcesBuildPhase section */ 347 | 348 | /* Begin PBXShellScriptBuildPhase section */ 349 | 4AAE7C9E0141C5C956D781F3 /* [CP] Embed Pods Frameworks */ = { 350 | isa = PBXShellScriptBuildPhase; 351 | buildActionMask = 2147483647; 352 | files = ( 353 | ); 354 | inputPaths = ( 355 | "${PODS_ROOT}/Target Support Files/Pods-RSFontSizes_Example/Pods-RSFontSizes_Example-frameworks.sh", 356 | "${BUILT_PRODUCTS_DIR}/Device/Device.framework", 357 | "${BUILT_PRODUCTS_DIR}/RSFontSizes/RSFontSizes.framework", 358 | ); 359 | name = "[CP] Embed Pods Frameworks"; 360 | outputPaths = ( 361 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Device.framework", 362 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RSFontSizes.framework", 363 | ); 364 | runOnlyForDeploymentPostprocessing = 0; 365 | shellPath = /bin/sh; 366 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RSFontSizes_Example/Pods-RSFontSizes_Example-frameworks.sh\"\n"; 367 | showEnvVarsInLog = 0; 368 | }; 369 | B95A9AFA2ACE2F6C104936FE /* [CP] Embed Pods Frameworks */ = { 370 | isa = PBXShellScriptBuildPhase; 371 | buildActionMask = 2147483647; 372 | files = ( 373 | ); 374 | inputPaths = ( 375 | "${PODS_ROOT}/Target Support Files/Pods-RSFontSizes_Tests/Pods-RSFontSizes_Tests-frameworks.sh", 376 | "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework", 377 | "${BUILT_PRODUCTS_DIR}/Quick/Quick.framework", 378 | ); 379 | name = "[CP] Embed Pods Frameworks"; 380 | outputPaths = ( 381 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework", 382 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Quick.framework", 383 | ); 384 | runOnlyForDeploymentPostprocessing = 0; 385 | shellPath = /bin/sh; 386 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RSFontSizes_Tests/Pods-RSFontSizes_Tests-frameworks.sh\"\n"; 387 | showEnvVarsInLog = 0; 388 | }; 389 | BFB6CB3B1A019771B7B955E8 /* [CP] Check Pods Manifest.lock */ = { 390 | isa = PBXShellScriptBuildPhase; 391 | buildActionMask = 2147483647; 392 | files = ( 393 | ); 394 | inputFileListPaths = ( 395 | ); 396 | inputPaths = ( 397 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 398 | "${PODS_ROOT}/Manifest.lock", 399 | ); 400 | name = "[CP] Check Pods Manifest.lock"; 401 | outputFileListPaths = ( 402 | ); 403 | outputPaths = ( 404 | "$(DERIVED_FILE_DIR)/Pods-RSFontSizes_Tests-checkManifestLockResult.txt", 405 | ); 406 | runOnlyForDeploymentPostprocessing = 0; 407 | shellPath = /bin/sh; 408 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 409 | showEnvVarsInLog = 0; 410 | }; 411 | DA385CF23A74EBCF9E5ECCB1 /* [CP] Check Pods Manifest.lock */ = { 412 | isa = PBXShellScriptBuildPhase; 413 | buildActionMask = 2147483647; 414 | files = ( 415 | ); 416 | inputFileListPaths = ( 417 | ); 418 | inputPaths = ( 419 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 420 | "${PODS_ROOT}/Manifest.lock", 421 | ); 422 | name = "[CP] Check Pods Manifest.lock"; 423 | outputFileListPaths = ( 424 | ); 425 | outputPaths = ( 426 | "$(DERIVED_FILE_DIR)/Pods-RSFontSizes_Example-checkManifestLockResult.txt", 427 | ); 428 | runOnlyForDeploymentPostprocessing = 0; 429 | shellPath = /bin/sh; 430 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 431 | showEnvVarsInLog = 0; 432 | }; 433 | /* End PBXShellScriptBuildPhase section */ 434 | 435 | /* Begin PBXSourcesBuildPhase section */ 436 | 607FACCC1AFB9204008FA782 /* Sources */ = { 437 | isa = PBXSourcesBuildPhase; 438 | buildActionMask = 2147483647; 439 | files = ( 440 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */, 441 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, 442 | ); 443 | runOnlyForDeploymentPostprocessing = 0; 444 | }; 445 | 607FACE11AFB9204008FA782 /* Sources */ = { 446 | isa = PBXSourcesBuildPhase; 447 | buildActionMask = 2147483647; 448 | files = ( 449 | 9B9F3442224E78CC00E729BA /* UIFontExtensionTest.swift in Sources */, 450 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */, 451 | ); 452 | runOnlyForDeploymentPostprocessing = 0; 453 | }; 454 | /* End PBXSourcesBuildPhase section */ 455 | 456 | /* Begin PBXTargetDependency section */ 457 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { 458 | isa = PBXTargetDependency; 459 | target = 607FACCF1AFB9204008FA782 /* RSFontSizes_Example */; 460 | targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; 461 | }; 462 | /* End PBXTargetDependency section */ 463 | 464 | /* Begin PBXVariantGroup section */ 465 | 607FACD91AFB9204008FA782 /* Main.storyboard */ = { 466 | isa = PBXVariantGroup; 467 | children = ( 468 | 607FACDA1AFB9204008FA782 /* Base */, 469 | ); 470 | name = Main.storyboard; 471 | path = .; 472 | sourceTree = ""; 473 | }; 474 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { 475 | isa = PBXVariantGroup; 476 | children = ( 477 | 607FACDF1AFB9204008FA782 /* Base */, 478 | ); 479 | name = LaunchScreen.xib; 480 | path = .; 481 | sourceTree = ""; 482 | }; 483 | /* End PBXVariantGroup section */ 484 | 485 | /* Begin XCBuildConfiguration section */ 486 | 607FACED1AFB9204008FA782 /* Debug */ = { 487 | isa = XCBuildConfiguration; 488 | buildSettings = { 489 | ALWAYS_SEARCH_USER_PATHS = NO; 490 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 491 | CLANG_CXX_LIBRARY = "libc++"; 492 | CLANG_ENABLE_MODULES = YES; 493 | CLANG_ENABLE_OBJC_ARC = YES; 494 | CLANG_WARN_BOOL_CONVERSION = YES; 495 | CLANG_WARN_CONSTANT_CONVERSION = YES; 496 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 497 | CLANG_WARN_EMPTY_BODY = YES; 498 | CLANG_WARN_ENUM_CONVERSION = YES; 499 | CLANG_WARN_INFINITE_RECURSION = YES; 500 | CLANG_WARN_INT_CONVERSION = YES; 501 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 502 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 503 | CLANG_WARN_UNREACHABLE_CODE = YES; 504 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 505 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 506 | COPY_PHASE_STRIP = NO; 507 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 508 | ENABLE_STRICT_OBJC_MSGSEND = YES; 509 | ENABLE_TESTABILITY = YES; 510 | GCC_C_LANGUAGE_STANDARD = gnu99; 511 | GCC_DYNAMIC_NO_PIC = NO; 512 | GCC_NO_COMMON_BLOCKS = YES; 513 | GCC_OPTIMIZATION_LEVEL = 0; 514 | GCC_PREPROCESSOR_DEFINITIONS = ( 515 | "DEBUG=1", 516 | "$(inherited)", 517 | ); 518 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 519 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 520 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 521 | GCC_WARN_UNDECLARED_SELECTOR = YES; 522 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 523 | GCC_WARN_UNUSED_FUNCTION = YES; 524 | GCC_WARN_UNUSED_VARIABLE = YES; 525 | IPHONEOS_DEPLOYMENT_TARGET = 9.2; 526 | MTL_ENABLE_DEBUG_INFO = YES; 527 | ONLY_ACTIVE_ARCH = YES; 528 | SDKROOT = iphoneos; 529 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 530 | }; 531 | name = Debug; 532 | }; 533 | 607FACEE1AFB9204008FA782 /* Release */ = { 534 | isa = XCBuildConfiguration; 535 | buildSettings = { 536 | ALWAYS_SEARCH_USER_PATHS = NO; 537 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 538 | CLANG_CXX_LIBRARY = "libc++"; 539 | CLANG_ENABLE_MODULES = YES; 540 | CLANG_ENABLE_OBJC_ARC = YES; 541 | CLANG_WARN_BOOL_CONVERSION = YES; 542 | CLANG_WARN_CONSTANT_CONVERSION = YES; 543 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 544 | CLANG_WARN_EMPTY_BODY = YES; 545 | CLANG_WARN_ENUM_CONVERSION = YES; 546 | CLANG_WARN_INFINITE_RECURSION = YES; 547 | CLANG_WARN_INT_CONVERSION = YES; 548 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 549 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 550 | CLANG_WARN_UNREACHABLE_CODE = YES; 551 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 552 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 553 | COPY_PHASE_STRIP = NO; 554 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 555 | ENABLE_NS_ASSERTIONS = NO; 556 | ENABLE_STRICT_OBJC_MSGSEND = YES; 557 | GCC_C_LANGUAGE_STANDARD = gnu99; 558 | GCC_NO_COMMON_BLOCKS = YES; 559 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 560 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 561 | GCC_WARN_UNDECLARED_SELECTOR = YES; 562 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 563 | GCC_WARN_UNUSED_FUNCTION = YES; 564 | GCC_WARN_UNUSED_VARIABLE = YES; 565 | IPHONEOS_DEPLOYMENT_TARGET = 9.2; 566 | MTL_ENABLE_DEBUG_INFO = NO; 567 | SDKROOT = iphoneos; 568 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 569 | VALIDATE_PRODUCT = YES; 570 | }; 571 | name = Release; 572 | }; 573 | 607FACF01AFB9204008FA782 /* Debug */ = { 574 | isa = XCBuildConfiguration; 575 | baseConfigurationReference = 1C06626EEA61BB821990556B /* Pods-RSFontSizes_Example.debug.xcconfig */; 576 | buildSettings = { 577 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 578 | DEVELOPMENT_TEAM = WNU857N39T; 579 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 580 | INFOPLIST_FILE = "$(SRCROOT)/Example for RSFontSizes/Supporting Files/Info.plist"; 581 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 582 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 583 | MODULE_NAME = ExampleApp; 584 | PRODUCT_BUNDLE_IDENTIFIER = com.rootstrap.RSFontSizesExample; 585 | PRODUCT_NAME = "$(TARGET_NAME)"; 586 | SWIFT_VERSION = 5.0; 587 | TARGETED_DEVICE_FAMILY = "1,2"; 588 | }; 589 | name = Debug; 590 | }; 591 | 607FACF11AFB9204008FA782 /* Release */ = { 592 | isa = XCBuildConfiguration; 593 | baseConfigurationReference = 1936BC5270C2F6ADE8C83C4F /* Pods-RSFontSizes_Example.release.xcconfig */; 594 | buildSettings = { 595 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 596 | DEVELOPMENT_TEAM = WNU857N39T; 597 | FRAMEWORK_SEARCH_PATHS = "$(inherited)"; 598 | INFOPLIST_FILE = "$(SRCROOT)/Example for RSFontSizes/Supporting Files/Info.plist"; 599 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 600 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 601 | MODULE_NAME = ExampleApp; 602 | PRODUCT_BUNDLE_IDENTIFIER = com.rootstrap.RSFontSizesExample; 603 | PRODUCT_NAME = "$(TARGET_NAME)"; 604 | SWIFT_VERSION = 5.0; 605 | TARGETED_DEVICE_FAMILY = "1,2"; 606 | }; 607 | name = Release; 608 | }; 609 | 607FACF31AFB9204008FA782 /* Debug */ = { 610 | isa = XCBuildConfiguration; 611 | baseConfigurationReference = E46D8068CA8604C5CC32F25F /* Pods-RSFontSizes_Tests.debug.xcconfig */; 612 | buildSettings = { 613 | FRAMEWORK_SEARCH_PATHS = ( 614 | "$(SDKROOT)/Developer/Library/Frameworks", 615 | "$(inherited)", 616 | ); 617 | GCC_PREPROCESSOR_DEFINITIONS = ( 618 | "DEBUG=1", 619 | "$(inherited)", 620 | ); 621 | INFOPLIST_FILE = "Tests/Supporting Files/Info.plist"; 622 | IPHONEOS_DEPLOYMENT_TARGET = 9.2; 623 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 624 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 625 | PRODUCT_NAME = "$(TARGET_NAME)"; 626 | SWIFT_VERSION = 5.0; 627 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RSFontSizes_Example.app/RSFontSizes_Example"; 628 | }; 629 | name = Debug; 630 | }; 631 | 607FACF41AFB9204008FA782 /* Release */ = { 632 | isa = XCBuildConfiguration; 633 | baseConfigurationReference = B3C67B6D484EDD0F329A9598 /* Pods-RSFontSizes_Tests.release.xcconfig */; 634 | buildSettings = { 635 | FRAMEWORK_SEARCH_PATHS = ( 636 | "$(SDKROOT)/Developer/Library/Frameworks", 637 | "$(inherited)", 638 | ); 639 | INFOPLIST_FILE = "Tests/Supporting Files/Info.plist"; 640 | IPHONEOS_DEPLOYMENT_TARGET = 9.2; 641 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 642 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 643 | PRODUCT_NAME = "$(TARGET_NAME)"; 644 | SWIFT_VERSION = 5.0; 645 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RSFontSizes_Example.app/RSFontSizes_Example"; 646 | }; 647 | name = Release; 648 | }; 649 | /* End XCBuildConfiguration section */ 650 | 651 | /* Begin XCConfigurationList section */ 652 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "RSFontSizesExample" */ = { 653 | isa = XCConfigurationList; 654 | buildConfigurations = ( 655 | 607FACED1AFB9204008FA782 /* Debug */, 656 | 607FACEE1AFB9204008FA782 /* Release */, 657 | ); 658 | defaultConfigurationIsVisible = 0; 659 | defaultConfigurationName = Release; 660 | }; 661 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "RSFontSizes_Example" */ = { 662 | isa = XCConfigurationList; 663 | buildConfigurations = ( 664 | 607FACF01AFB9204008FA782 /* Debug */, 665 | 607FACF11AFB9204008FA782 /* Release */, 666 | ); 667 | defaultConfigurationIsVisible = 0; 668 | defaultConfigurationName = Release; 669 | }; 670 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "RSFontSizes_Tests" */ = { 671 | isa = XCConfigurationList; 672 | buildConfigurations = ( 673 | 607FACF31AFB9204008FA782 /* Debug */, 674 | 607FACF41AFB9204008FA782 /* Release */, 675 | ); 676 | defaultConfigurationIsVisible = 0; 677 | defaultConfigurationName = Release; 678 | }; 679 | /* End XCConfigurationList section */ 680 | }; 681 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 682 | } 683 | --------------------------------------------------------------------------------