Używam niestandardowej czcionki .ttf w mojej aplikacji na Androida. I załadować go w zwykły sposób:Niestandardowa czcionka w Androidzie renderuje się inaczej w różnych interfejsach API
myTypeface = Typeface.createFromAsset(getAssets(), "myTypeface.ttf");
następnie przypisać mój krój ciągu mojej działalności ... całkiem proste rzeczy:
TextView tv = (TextView) findViewById(R.id.sample_text);
tv.setTextSize(12);
tv.setTypeface(App.myTypeface);
Problem używam do jest to, że na niektórych urządzeniach z wykorzystaniem później Interfejsy API (szczególnie zauważyłem to w emulatorze dla Transformatora Asusa), tekst wygląda nieco odważniej, mniej jednolicie na szerokość i bardziej pomieszany w pionowym układzie. Przez tę ostatnią część mam na myśli to, że niektóre postacie są umieszczone pionowo wyżej lub niżej niż inne, co nadaje tekstowi trochę wrażenia z rolki.
Rozważmy zrzuty ekranu poniżej
To jest tekst wydanego na emulatorze z taką samą rozdzielczością i DPI jako transformator, ale przy użyciu API Google poziom 8.
wygląda dość standardowy, dobrze?
Teraz rozważmy tekst świadczonych w emulatorze z taką samą rozdzielczością i DPI, ale przy użyciu poziom API Google 15:
W pierwszym tekście mogą wyglądać podobnie, choć można zauważyć, wydaje się nieco odważniejsze. Jednak spójrz na "c" w "szybki". Zauważysz, że znajduje się niżej i jest wyższy niż "c" w pierwszym renderowaniu. Zauważysz również, że jeśli spojrzysz na dno znaków w słowie "szybkie", nie są wyrównane na dole.
Te kwestie mogą wydawać się niewielkie, ale na ekranach z dużą ilością tekstu, to zaczyna wyglądać bardzo nieprofesjonalne.
Ktoś to widział, czy ma jakieś wyjaśnienie? Chciałbym, aby tekst wyglądał jednolicie w późniejszych interfejsach API.
Dziękuję bardzo za poświęcony czas!
Zdecydowanie różne renderowanie czcionek. Może być wygładzanie, podpowiedź wyłączona. Czy możesz zobaczyć, jaka wartość dla 'textView.getPaintFlags()' zwraca zarówno dla poziomu API 8 i poziomu interfejsu API 15 i edytować go? (@ mnie, więc dostaję powiadomienie i przyjrzę się) – kcoppock
@kcoppock Dzięki za odpowiedź. getPaintFlags() zwraca 257 dla obu interfejsów API. –
To wygląda podobnie, a może duplikat http://stackoverflow.com/questions/9036184/custom-font-rendering-on-android-4-0-ice-cream-sandwich. Nigdy nie otrzymałem prawdziwej odpowiedzi. – HandlerExploit