├── .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 | [](https://travis-ci.org/rootstrap/RSFontSizes)
4 | [](https://github.com/Carthage/Carthage)
5 | [](http://cocoapods.org/pods/RSFontSizes)
6 | [](http://cocoapods.org/pods/RSFontSizes)
7 | [](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 | 
61 |
62 | Fonts are set directly from IB.
63 |
64 | To readable texts:
65 |
66 | 
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 |
--------------------------------------------------------------------------------