アプリでGoogleFontsのフォントを使用したい。 これがフォントです 。
.ttfファイルをapp/fonts
に配置しました。
package.json:
{
"name": "xxx",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"rnpm": {
"assets": ["./app/fonts"]
},
"jest": {
"preset": "react-native",
"moduleNameMapper": {
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
"\\.(css|less)$": "<rootDir>/__mocks__/styleMock.js"
}
},
"dependencies": {
"flow-typed": "^2.0.0",
"immutable": "^3.8.1",
"react": "~15.4.1",
"react-native": "0.42.0",
"react-native-vector-icons": "^4.0.0",
"react-redux": "^5.0.3",
"redux": "^3.6.0",
"redux-immutable": "^4.0.0",
"redux-observable": "^0.14.1",
"rxjs": "^5.2.0"
},
"devDependencies": {
"babel-eslint": "^7.1.1",
"babel-jest": "19.0.0",
"babel-preset-react-native": "1.9.1",
"eslint": "^3.17.0",
"eslint-plugin-flowtype": "^2.30.3",
"eslint-plugin-jsx": "^0.0.2",
"eslint-plugin-react": "^6.10.0",
"eslint-plugin-react-native": "^2.3.1",
"flow-bin": "^0.42.0",
"jest": "19.0.2",
"jest-cli": "^19.0.2",
"react-test-renderer": "~15.4.1",
"redux-devtools": "^3.3.2",
"remote-redux-devtools": "^0.5.7"
}
}
次に、react-native link
を実行しました。
次に、私のアプリでフォントを使用します。
import { View, Text } from 'react-native'
import React from 'react'
import Width from '../width/Width'
import Shape from '../shape/Shape'
import Height from '../height/Height'
import Thickness from '../thickness/Thickness'
export const Volcalc = () => (
<View style={styles.container}>
<Text style={styles.text}>SHAPE</Text>
<Shape />
<Text style={styles.text}>HEIGHT</Text>
<Height />
<Text style={styles.text}>WIDTH</Text>
<Width />
<Text style={styles.text}>THICKNESS</Text>
<Thickness />
</View>
)
const $mainColor = '#00d1b2'
const styles = {
container: {
flex: 1,
padding: 20,
backgroundColor: $mainColor
},
text: {
textAlign: 'center',
color: 'rgba(255, 255, 255, 0.9)',
fontSize: 15,
fontFamily: 'Orbitron'
}
}
Androidでは、新しいフォントは表示されませんが、エラーは発生しません。iOSでは、エラーが発生します。
認識されないフォントファミリ「Orbitron」
私は何が間違っているのですか?
fontFamily: 'xxx'
に配置する正確な値を見つけるにはどうすればよいですか?
react-native for version <0.6のカスタムフォントについて多くの回答があります
react-native version> 0.6、'rnpm' is deprecated
を使用している場合、カスタムフォントは機能しません。
ここで、react-nativeバージョン> 0.60でカスタムフォントを追加するには、次のことを行う必要があります。
1-プロジェクトのルートフォルダにreact-native.config.js
という名前のファイルを作成します。
2-これをその新しいファイルに追加します
module.exports = {
project: {
ios: {},
Android: {},
},
assets: ['./assets/fonts']
};
3-ルートプロジェクトパスでreact-native link
コマンドを実行します。
4- react-native run-Android
またはreact-native run-ios
コマンドを使用して実行します
正しくリンクされていないか、アプリが新しいリソースを読み込んでいないようです。
追加
"rnpm": {
"assets": ["./app/fonts"]
}
package.jsonに。
次に
rm -rf node_modules && npm install && react-native link
問題がなければ、Android/app/src/main/assets/fonts/
内でカスタムフォントを検索してください。表示されている場合は、正常にリンクしています。
同様にiOSの場合、XCodeを実行し、カスタムフォントの[リソース]ドロップダウンを展開します。
エミュレータを強制終了して再試行してください
react-native run-ios
セットアップが正常でカスタムフォントがiOSで機能し、場合によってはAndroidで機能しないために、誰かがこれを読んでいる場合:
上記のインストールの回答に加えて、font fontWeight
パラメーター(またはスタイル内の他の追加のフォント変換)を設定していないことを確認してください。私の場合、カスタムフォントを「壊した」ので、スタイルを太字に設定する代わりに、フォントttfをバリアントとともに追加して使用(Roboto-Thin、Roboto-Boldなど)する必要がありました。
また、注目に値するのは、Manuel Hernandezが以下のコメントで、fontWeight:800
の代わりにfontWeight:'bold'
を使用できることを発見したことです。
FontFamilyとして使用する正確な値を見つけるには、xcodeのAppDelegate.mファイルに次のコードを追加した後、xcodeからプロジェクトを実行します。 xcodeの出力セクションにフォントのリストが表示されます。
for (NSString* family in [UIFont familyNames])
{
NSLog(@"%@", family);
for (NSString* name in [UIFont fontNamesForFamilyName: family])
{
NSLog(@" %@", name);
}
}
カスタムフォントを追加するための役立つリンク: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/
パスが正しくリンクされていない可能性があります-
React-nativeリンクがフォントを保存したパスは--Android/src/main/assets/fonts
パスは-Android/app/src/main/assets/fonts
React-nativeバージョン0.62でも、この問題は終了します
これらの手順は私のために働いた。
yourproject/assets
フォルダーに追加します。"rnpm": {"assets": ["./assets/fonts/"]}
をpackage.jsonファイルに追加します。react-native link
を実行しますyourproject/Android/app/src/main/assets/fonts
(Androidの場合)に追加されているかどうかを確認しますreact-native run-Android
を実行する必要があります(ほとんどの人はこれを実行するのを忘れています)一部のフォントでは、Androidで動作させるためにnpx react-native-asset
を実行する必要があることがわかりました。サードパーティのコンポーネント内で機能しない場合は、fontWeight: 'normal'
を追加して、いくつかのデフォルト値を上書きする必要があります。