2017-02-25 68 views
5

Właśnie dodałem niestandardową czcionkę do mojej aplikacji natywnej w trybie reakcji (https://fonts.google.com/specimen/Josefin+Sans).Nie ma różnicy między czcionką cienka i lekka waga w systemie iOS podczas dodawania niestandardowej czcionki do mojej oryginalnej aplikacji reagowania.

JosefinSans-Bold.ttf 
JosefinSans-BoldItalic.ttf 
JosefinSans-Italic.ttf 
JosefinSans-Light.ttf 
JosefinSans-LightItalic.ttf 
JosefinSans-Regular.ttf 
JosefinSans-SemiBold.ttf 
JosefinSans-SemiBoldItalic.ttf 
JosefinSans-Thin.ttf 
JosefinSans-ThinItalic.ttf 

I powiązane pliki czcionek uruchamiając react-native link po dodaniu

"rnpm": { 
    "assets": [ 
    "path/to/my/font/files" 
    ] 
}, 

do mojego package.json

Następnie używać czcionki w mojej aplikacji tak:

customFont: { 
    fontFamily: 'Josefin Sans', 
}, 
thin: { 
    fontWeight: '100' 
}, 
light: { 
    fontWeight: '300' 
}, 
semiBold: { 
    fontWeight: '600' 
}, 
bold: { 
    fontWeight: '700' 
}, 
italic: { 
    fontStyle: 'italic' 
}, 

iOS simulator screenshot of the different fontWeight and fontStyle

Problem polega na tym, że nie ma różnicy między thin(fontWeight: '100') & the .

Co próbowałem dotąd:

  • Próbowałem z inną czcionkę z czcionek Google (taki sam problem).
  • Próbowałem uruchomić aplikację na rzeczywistym urządzeniu (a nie na symulatorze), ale na próżno.
  • próbował użyć domyślnej czcionki iOS z tych fontWeights: thin i light są naprawdę rozpoznawalny
  • wyświetlony czcionek rzeczywiste nazwy (JosefinSans-Light i JosefinSans-Thin) w Xcode z:

_

for (NSString* family in [UIFont familyNames]) 
{ 
    NSLog(@"%@", family); 
    for (NSString* name in [UIFont fontNamesForFamilyName: family]) 
    { NSLog(@" %@", name); } 
} 

Czy ktoś miał ten sam problem? Jakieś pomysły, jak to naprawić i wyświetlić rzeczywistą grubość cienkich i lekkich czcionek?

Thanks a lot

Odpowiedz

1

wierzę, trzeba użyć innego fontFamily styl dla każdej wagi, jeśli chodzi o niestandardowych czcionek.

Więc w tym przypadku, co chcesz coś takiego dla swoich stylów (nazwy mogą być nieco off, ale masz pomysł):

customFont: { 
    fontFamily: 'Josefin Sans' 
}, 
thin: { 
    fontFamily: 'Josefin Sans-Thin' 
}, 
light: { 
    fontFamily: 'Josefin Sans-Light' 
}, 
semiBold: { 
    fontFamily: 'Josefin Sans-SemiBold' 
}, 
bold: { 
    fontFamily: 'Josefin Sans-Bold' 
}, 
italic: { 
    fontFamily: 'Josefin Sans-Italic' 
} 

... 

Oczywiście, nie krępuj się dodać dodatkowe style jak ty uznają za stosowne. W tym celu możesz również zmienić customFont na regular.

+0

Witaj TheJizel, dzięki za odpowiedź! Właściwie dla większości wag wydaje się działać z właściwością fontWeight. Na przykład, 'fontWeight: '600' renderuje to samo co' fontFamily: Josefin Sans-SemiBold' oraz 'fontWeight: '900' przedstawia to samo co' fontFamily: Josefin Sans-Black'. Jednak nadal nie widzę różnicy między 'Josefin Sans-Thin' i' Josefin Sans-Light' :( – guitoof

+0

@guitoof Czy możesz spróbować zmienić nazwy czcionek, tak aby nie było żadnych białych znaków (np. 'JosefinSans-Thin ')? To był mój problem, gdy korzystałem z Open Sans – TheJizel

+0

TheJizel, dziękuję, tak, próbuję tego, ale rozumiem, że ważne jest to, że na Androidzie prefiks fontFamily powinien pasować do nazwy pliku.Dlatego, jeśli mój plik ma nazwę 'Josefin Sans_bold.ttf', używam' fontFamily: Josefin Sans_bold'. Więc nie ma szczęścia ... :( – guitoof