ReactNativeで作成したアプリに独自のフォントを導入したい場合があるかと思います。 今回は、ReactNative製アプリに対してカスタムフォントを導入する場合の方法をご紹介します。
ReactNative
でプロジェクトが作成済みであること今回はサンプルとしてdafontより任意のファイルをダウンロードします。
※もちろん、手元に目的のフォントがあるならそちらを利用しても構いません
この記事ではBrotherline
とHighlight
という2種類のフォントファイルをダウンロードしたものとします。
プロジェクト直下にassets/fonts
を作成し、その中に取得してきた*.ttf
ファイルを配置します。
ここからは2通りの設定方法があります。
よく見かける方のやり方です。 先ほど作成したassets/fonts
までのパスを記載します。
{
"rnpm" : {
"assets": ["./assets/fonts/"]
}
}
その上でreact-native link
を実行します。
react-native link
これでも問題なく動きましたが、下記の警告が出ていました。
warn Your project is using deprecated "rnpm" config that will stop working from next release. Please use a "react-native.config.js" file to configure the React Native CLI. Migration guide: https://github.com/react-native-community/cli/blob/master/docs/configuration.md
どうやら以降のリリースでrnpm
が使えなくなるとのこと。
rnpm
はReactNative
のパッケージマネージャのことで、ざっくり説明するとネイティブモジュールへの操作をReactNative
のパッケージ名から類推して行ってくれる賢いヤツです。
代替方法としては警告文の中にあるreact-native.config.js
を使います。
プロジェクト直下にreact-native.config.js
を作成し、下記のような内容にします。 ほとんどrnpm
で書いてある内容と同じです。
module.exports = {
assets: ['./assets/fonts/'],
};
あとは同じようにreact-native link
を実行。
react-native link
これでカスタムフォントを使う準備が整いました。
ここまできたら後は簡単です。 カスタムフォントを適用したい箇所のスタイルにfontFamily
を指定すればOKです。
<Text style={{fontSize : 20, textAlign : 'center'}}>This text is default font.</Text>
<Text style={{fontSize : 20, textAlign : 'center'}}>この文章はデフォルトのフォントを使用</Text>
<Text style={{fontFamily : 'Highlight', fontSize : 20, textAlign : 'center'}}>This text is using Highlight.</Text>
<Text style={{fontFamily : 'Highlight', fontSize : 20, textAlign : 'center'}}>この文章はHighlightフォントを使用</Text>
<Text style={{fontFamily : 'Brotherline', fontSize : 20, textAlign : 'center'}}>This text is using Brotherline.</Text>
<Text style={{fontFamily : 'Brotherline', fontSize : 20, textAlign : 'center'}}>この文章はBrotherlineフォントを使用</Text>
今回はReactNative
でのカスタムフォントの使い方をまとめました。
実装例では部分的にフォントを変えるだけに留めましたが、アプリ全体のフォントを変えるにはText
をラップしたFC
を作っておいて基本はそれを利用する等々の工夫が必要かもしれません(もしかしたらもっと簡単にできる方法もあるかも...)