Android 反应本机自定义字体

Android 反应本机自定义字体,android,reactjs,react-native,fonts,Android,Reactjs,React Native,Fonts,这个问题已经解决了,但答案并不令人满意。这些字体在android上不起作用,但在iOS上起作用。也许我在链接过程中犯了一些错误 我是如何添加字体的: 已创建文件夹assets/font/根文件夹内 增加 "rnpm": { "assets": ["./assets/fonts"] } react本地链接 控制台输出:它成功地将资产添加到iOS和Android 在样式中添加了fontFamily:“MyCustomFontFamily” 在iOS上运行,一切正常 在Android上运行,没有字

这个问题已经解决了,但答案并不令人满意。这些字体在android上不起作用,但在iOS上起作用。也许我在链接过程中犯了一些错误

我是如何添加字体的:

  • 已创建文件夹
    assets/font/
    根文件夹内
  • 增加

    "rnpm": { "assets": ["./assets/fonts"] }
    
  • react本地链接

  • 控制台输出:它成功地将资产添加到iOS和Android

  • 在样式中添加了fontFamily:“MyCustomFontFamily”

  • 在iOS上运行,一切正常

  • 在Android上运行,没有字体

  • 已检查android项目目录,并且资产文件夹已存在

  • 我尝试添加
    (Platform.OS=='ios')?'MyCustomFontFamily':“fonts/my_custom_font_family”
    与文件名一起使用,但这不起作用

  • 尝试了与9相同的变化,但没有路径或扩展,但没有运气

  • 阅读使用重量,尝试它,没有运气


  • 我也有同样的问题,这与一个事实有关,正如你已经知道的,Android将从文件名读取,而iOS将从全名属性读取。事实上,我混淆了我的字体参考

    为了解决这个问题,我做的第一件事是仔细检查我的字体是否正确地位于
    android/app/src/main/assets/fonts/

    然后,我将我的字体重命名为与iOS使用的字体完全相同的名称,并使用该名称作为参考。我的意思是:

    export const sansSerifLight = 'Aileron-Light'; // Filename is 'Aileron-Light.otf'
    export const sansSerifRegular = 'Aileron-Regular'; // Filename is 'Aileron-Regular.otf'
    export const sansSerifBold = 'Aileron-Bold'; // Filename is 'Aileron-Bold.otf'
    export const serifRegular = 'LibreBaskerville-Regular'; // Filename is 'LibreBaskerville-Regular.ttf'
    export const serifBold = 'LibreBaskerville-Bold'; // Filename is 'LibreBaskerville-Bold.ttf'
    export const serifItalic = 'LibreBaskerville-Italic'; // Filename is 'LibreBaskerville-Italic.ttf'
    export const sansSerifTitle = 'ADAM.CG PRO'; // Filename is 'ADAM.CG PRO.otf'
    export const serifTitle = 'Oranienbaum'; // Filename is 'Oranienbaum.ttf
    
    然后:

    <MyComponent style={{ fontFamily: serifTitle }} />
    
    
    

    这真的让我不那么容易出错,也更容易维护。

    嘿。对不起,迟了答复。我花了一些时间回到这个话题上。我已经创建了一个文件,在该文件中,我根据平台为字体输入了正确的字符串。它现在正在工作。谢谢你的启发:)