Trying to use custom font in WKWebView but no luck.
let htmlString = "<span style=\"font-family: 'OpenSans-Bold'; font-size: 30; color: white\">\(Utils.aboutUsText)</span>"
webView.loadHTMLString(htmlString, baseURL: nil)
I can use HelveticaNeue-Bold and works great but not with the custom font above.
let htmlString = "<span style=\"font-family: 'HelveticaNeue'; font-size: 30; color: white\">\(Utils.aboutUsText)</span>"
webView.loadHTMLString(htmlString, baseURL: nil)
I have added the custom fonts properly.See screenshots.
Can someone please tell me how can i achieve this or point me in the right direction.
To use custom fonts in WKWebView, we need to do three things. Add custom fonts to your app. Load custom fonts to CSS with @font-face. Introduce app bundle to WKWebView.
A WKWebView object is a platform-native view that you use to incorporate web content seamlessly into your app's UI. A web view supports a full web-browsing experience, and presents HTML, CSS, and JavaScript content alongside your app's native views.
Reading the answers in the linked thread in DonMag's comment:
Using @font-face
is mandatory
You need multiple @font-face
declarations to use multiple font files as a single font family
You need to provide baseURL
to make relative urls like url(OpenSans-Regular.ttf)
work
So, try this:
let htmlString = """
<style>
@font-face
{
font-family: 'Open Sans';
font-weight: normal;
src: url(OpenSans-Regular.ttf);
}
@font-face
{
font-family: 'Open Sans';
font-weight: bold;
src: url(OpenSans-Bold.ttf);
}
@font-face
{
font-family: 'Open Sans';
font-weight: 900;
src: url(OpenSans-ExtraBold.ttf);
}
@font-face
{
font-family: 'Open Sans';
font-weight: 200;
src: url(OpenSans-Light.ttf);
}
@font-face
{
font-family: 'Open Sans';
font-weight: 500;
src: url(OpenSans-Semibold.ttf);
}
</style>
<span style="font-family: 'Open Sans'; font-weight: bold; font-size: 30; color: red">(Utils.aboutUsText)</span>
"""
webView.loadHTMLString(htmlString, baseURL: Bundle.main.bundleURL) //<-
Or you can use a separate css file if you prefer:
let htmlString = """
<link rel="stylesheet" type="text/css" href="open-sans.css">
<span style="font-family: 'Open Sans'; font-weight: bold; font-size: 30; color: red">(Utils.aboutUsText)</span>
"""
webView.loadHTMLString(htmlString, baseURL: Bundle.main.bundleURL)
open-sans.css:
@font-face
{
font-family: 'Open Sans';
font-weight: normal;
src: url(OpenSans-Regular.ttf);
}
@font-face
{
font-family: 'Open Sans';
font-weight: bold;
src: url(OpenSans-Bold.ttf);
}
@font-face
{
font-family: 'Open Sans';
font-weight: 900;
src: url(OpenSans-ExtraBold.ttf);
}
@font-face
{
font-family: 'Open Sans';
font-weight: 200;
src: url(OpenSans-Light.ttf);
}
@font-face
{
font-family: 'Open Sans';
font-weight: 500;
src: url(OpenSans-Semibold.ttf);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With