FontAwesome.swift icon indicating copy to clipboard operation
FontAwesome.swift copied to clipboard

Documentation on how to use FontAwesome pro Icon

Open imrabti opened this issue 5 years ago • 15 comments

Would it be possible to offer an example of how to use this library with FontAwesome pro icons

imrabti avatar Oct 01 '19 06:10 imrabti

So far, here are some steps that made me get a little further

1.) add the pro *.otf files to your project.

2.) add the following list of font files to your info.plist file as Key UIAppFonts:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
	<string>Font Awesome 5 Brands-Regular-400.otf</string>
	<string>Font Awesome 5 Duotone-Solid-900.otf</string>
	<string>Font Awesome 5 Pro-Light-300.otf</string>
	<string>Font Awesome 5 Pro-Regular-400.otf</string>
	<string>Font Awesome 5 Pro-Solid-900.otf</string>
</array>
</plist>

3.) in your code, before using FontAwesome.swift the first time, call: FontAwesomeConfig.usesProFonts = true

Thats it. Try to get the icon "fa-camera" with regular style, which is located in the pro version. Looks fine on my side.

I did not succeed to get all icons to work. E.g. fa-abacus is not showing up. Am I missing something in here?

pgrundner avatar Dec 06 '19 14:12 pgrundner

Hi all, got pro fonts working, except... lots of icons are missing in the Enum (eg repeat). Seems this file is auto generated. Trying to regenerate didn't work: error. Please help. Is there a way to regenerate this file on xcode build?

vjoomens avatar Jan 31 '20 14:01 vjoomens

I figured it out: remove the path: String line in the codegen.swift file (line 20) and it works. Simply use the newly generated FontAwesome enum in your project.

vjoomens avatar Jan 31 '20 15:01 vjoomens

@vjoomens Hi! I'm stuck on the same problem you had. How are you running the codegen file to regenerate the enum? The file isn't there when installing as a pod. Thanks!

mralexhay avatar Mar 14 '20 21:03 mralexhay

@mralexhay check my fork of this project (https://github.com/vjoomens/FontAwesome.swift). It's fully compatible with FA pro.

vjoomens avatar Mar 15 '20 09:03 vjoomens

@vjoomens amazing, this worked for me, thanks.

The only problem I haven't been able to sort is that using the Duotone style throws an error (despite the OTF being stored next to the others and being listed in the Info plist)

CleanShot 2020-03-15 at 12 35 57@2x

but the rest work perfectly.

mralexhay avatar Mar 15 '20 12:03 mralexhay

To implement FA Pro support, follow the instructions from @pgrundner.

To get all FA Pro icons, you need to hack a bit by following this: https://github.com/thii/FontAwesome.swift/issues/230#issuecomment-605018622.

ghowen avatar Mar 27 '20 14:03 ghowen

Alright, I've followed the steps listed here and here, but I guess I've done something wrong.

UIFont(name: style.fontName(), size: fontSize)! on line 98 of FontAwesome unexpectedly finds nil for file.

Maybe you guys can help me catch my mistake.

I've added the Pro otf files to the project. The otf files are added to the app target. I've set FontAwesomeConfig.usesProFonts = true. I generated the new enum.swift following the instructions mentioned in the link above.

I added the following to my info.plist under the Fonts provided by application key:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
	<string>Font Awesome 5 Brands-Regular-400.otf</string>
	<string>Font Awesome 5 Pro-Light-300.otf</string>
	<string>Font Awesome 5 Pro-Regular-400.otf</string>
	<string>Font Awesome 5 Pro-Solid-900.otf</string>
</array>
</plist>

It seems like the file path for my new files is incorrect. Any ideas?

austintt avatar Apr 03 '20 20:04 austintt

@austintt It would help troubleshooting if you can catch the value of style.fontName() in the debugger. Then we would know which fontName is causing the problems.

A potential cause for your crash could be that even though duotone rendering is not support, you might have to add all the font file nevertheless:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
	<string>Font Awesome 5 Brands-Regular-400.otf</string>
	<string>Font Awesome 5 Duotone-Solid-900.otf</string>
	<string>Font Awesome 5 Pro-Light-300.otf</string>
	<string>Font Awesome 5 Pro-Regular-400.otf</string>
	<string>Font Awesome 5 Pro-Solid-900.otf</string>
</array>
</plist>

ghowen avatar Apr 04 '20 10:04 ghowen

@ghowen, thanks for the suggestion! I moved some stuff around and got a little more detail with the following error from loadFont: com.apple.CoreText.CTFontManagerErrorDomain error 105 - Could not register the font file(s). I tried referencing the duotone font in the plist, but found the same error.

This happens with the first call in my app to FontAwesome, requesting a light styled icon. Placing a breakpoint in loadFontAwesome(ofStyle), I see that the style.fontName returns FontAwesome5Pro-Light. I've tried it with the other styles, and the result is the same.

Here's the full error:

Could not register the font file(s), CTFontManagerErrorFontURLs=(
    "file:///Users/austin/Library/Developer/CoreSimulator/Devices/70E245F8-D1F1-4DCD-8779-A0C8A2F9ACE2/data/Containers/Bundle/Application/9738EF3B-EC31-4401-A88C-BD15A49F3BB3/TaskMinder.app/Font%20Awesome%205%20Pro-Light-300.otf"

austintt avatar Apr 05 '20 17:04 austintt

@austintt When you added the font files to the project, did you check the "Copy if needed" option? Also make sure that the all font files have the correct target membership. You can check this in the File Inspector when you click on the font files in your project. My current guess is that in your case the font files do not have a target membership.

ghowen avatar Apr 06 '20 07:04 ghowen

@ghowen Did you ever find a solution to that unexpected nil error? Mine has started doing it and I haven't been able to find the answer yet. Thanks.

mralexhay avatar Apr 17 '20 12:04 mralexhay

@mralexhay You should probably check with @austintt if https://github.com/thii/FontAwesome.swift/issues/232#issuecomment-609626259 did the trick for him. My bet is still that the fonts were not added to the target of the app.

ghowen avatar Apr 17 '20 12:04 ghowen

My personal recommendation, and how I prefer to do it, is to use the FontBlaster library instead. Make sure the first line in application(didFinishLaunching: with options:) is FontBlaster.blast()

Also ensure that all of the fonts appear in Xcode, and you have added them to the Copy Bundled Resources build phase, found by going to your target -> Build Phases

MatrixSenpai avatar Apr 18 '20 06:04 MatrixSenpai

@ghowen no dice, I had checked to make sure everything was a part of the correct target and copied to the app, everything was as good. For now, I'm just using the free fonts while I focus on other parts of my project. I'll try adding the Pro fonts again later. Thank you for the help though!

austintt avatar Apr 18 '20 14:04 austintt