Custom typography is essential for creating branded, distinctive mobile applications. While system fonts like San Francisco (iOS) and Roboto (Android) provide excellent readability, custom fonts allow apps to express unique brand identities and create memorable user experiences. In 2026, both major mobile platforms have mature support for custom fonts, though the implementation details differ.
This guide covers font conversion and integration for native iOS and Android development, as well as popular cross-platform frameworks like React Native, Flutter, and Xamarin. You'll learn which font formats work best, how to optimize fonts for mobile performance, and common pitfalls to avoid.
Whether you're building a native Swift app, a Kotlin Android application, or a cross-platform solution, understanding font conversion ensures your typography renders consistently across all target devices.
iOS Custom Font Integration
iOS supports both TrueType (TTF) and OpenType (OTF) fonts. Apple recommends OTF for its advanced typographic features, but both formats work reliably. iOS does not support web font formats like WOFF2—you must convert web fonts to TTF or OTF before use.
iOS Font Setup Steps
- 1. Add fonts to your Xcode project - Drag TTF/OTF files into your project navigator
- 2. Include in target - Ensure fonts are added to your app target's "Copy Bundle Resources"
- 3. Update Info.plist - Add font filenames to the "Fonts provided by application" array
- 4. Use in code - Reference fonts by their PostScript name, not filename
Finding the PostScript Name
The font's PostScript name often differs from its filename. On macOS, open the font in Font Book and check the PostScript Name field. In code, use UIFont.familyNames to list available fonts.
// Swift - Using custom font
let customFont = UIFont(name: "BrandFont-Regular", size: 16)
// SwiftUI
Text("Hello World")
.font(.custom("BrandFont-Regular", size: 16))For detailed iOS font guidelines, see Apple's Custom Font Documentation.
Android Custom Font Integration
Android also supports TTF and OTF fonts. Since Android 8.0 (API 26), the platform has included Fonts in XML, making it easier to define font families with multiple weights and styles. For older Android versions, you can still use fonts programmatically.
Android Font Setup Steps
- 1. Create font directory - Add fonts to
res/font/folder - 2. Use lowercase filenames - Android requires lowercase with underscores only
- 3. Create font family XML - Define multiple weights in a font family resource
- 4. Apply in layouts or code - Use
android:fontFamilyattribute
<!-- res/font/brand_font.xml -->
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
<font android:fontStyle="normal"
android:fontWeight="400"
android:font="@font/brand_font_regular"/>
<font android:fontStyle="normal"
android:fontWeight="700"
android:font="@font/brand_font_bold"/>
</font-family>
<!-- Using in layout -->
<TextView
android:fontFamily="@font/brand_font"
android:text="Hello World" />Learn more in the Android Fonts in XML guide.
Cross-Platform Framework Font Integration
React Native
React Native requires fonts to be linked to your project. Create an assets/fonts folder, add your TTF/OTF files, and configure linking in your react-native.config.js file.
// react-native.config.js
module.exports = {
assets: ['./assets/fonts'],
};
// Run linking
npx react-native-asset
// Usage in styles
const styles = StyleSheet.create({
text: {
fontFamily: 'BrandFont-Regular',
},
});Flutter
Flutter uses the pubspec.yaml file to declare fonts. Add your font files to an assets/fonts directory and register them in the pubspec.
# pubspec.yaml
flutter:
fonts:
- family: BrandFont
fonts:
- asset: assets/fonts/BrandFont-Regular.ttf
- asset: assets/fonts/BrandFont-Bold.ttf
weight: 700
// Usage in Dart
Text(
'Hello World',
style: TextStyle(fontFamily: 'BrandFont'),
)See the Flutter fonts cookbook for more details.
Mobile Font Optimization
Font files directly impact your app's download size and launch time. A typical font family with Regular, Italic, Bold, and Bold Italic weights can add 400-800KB to your app bundle. Optimization is essential for maintaining acceptable app sizes.
Use Font Subsetting
Remove unused characters from fonts using our font subsetter tool. For English-only apps, a Latin subset reduces file size by 60-80%. For multilingual apps, create language-specific subsets and load them dynamically.
Consider Variable Fonts
A single variable font file can replace multiple weight files. Instead of separate Regular, Medium, SemiBold, and Bold files (4 files × 100KB = 400KB), one variable font file (150KB) covers all weights.
Limit Font Weights
Most apps only need 2-3 font weights (Regular and Bold, possibly Medium). Avoid including weights that your design doesn't actually use. Each unnecessary weight adds 50-150KB to your app size.
Test Font Loading Performance
Profile your app's launch time with and without custom fonts. On older devices, loading multiple large font files can add noticeable delay to app startup. Consider lazy-loading fonts that aren't needed on the initial screen.
Size Impact Example
Full Font Family
620 KB
4 weights, full charset
Subset (Latin)
145 KB
4 weights, Latin only
Variable + Subset
48 KB
1 file, Latin only
Common Issues and Solutions
Font Not Appearing
Usually caused by incorrect font name reference. Use the PostScript name (iOS) or exact filename without extension (Android). Verify the font is included in your build target.
Wrong Weight Rendering
Ensure your font files include correct weight metadata. Some fonts have incorrect internal weight values. Use a font inspection tool to verify weights match your expectations.
Text Truncation or Clipping
Custom fonts may have different metrics than system fonts. Test thoroughly with your UI layouts, especially for languages with tall ascenders/descenders. Adjust line height if needed.
Licensing Issues on App Store
App store distribution requires fonts with appropriate embedding licenses. Desktop licenses typically don't cover app embedding. See our font licensing guide.
Recommended Tools

Written & Verified by
Sarah Mitchell
Product Designer, Font Specialist
Related Use Cases
Ready to Add Custom Fonts to Your App?
Convert web fonts to mobile-compatible TTF or OTF format. Free, fast, and privacy-focused.
Start Converting Now