2013-02-27 10 views
5

W naszej aplikacji używamy Roboto i Roboto Bold. Jednak w niektórych wersjach Androida (wydaje się, że są to wersje od 4.0 do 4.1) mamy problemy z renderowaniem tekstu podczas korzystania z zaimportowanej wersji Roboto (np. Przy użyciu Typeface.createFromAsset()), które nie pojawiają się, gdy po prostu używa się wbudowanej wersji Roboto (tj. Typeface.DEFAULT).Czy Roboto i Roboto Bold gwarantują, że będą dostępne w wersji 4.0+?

Wiem, że Roboto i Roboto Bold zostały wprowadzone w systemie Android 4.0, ale nie mogę znaleźć niczego, co zagwarantowałoby, że te czcionki są dostępne niezależnie od modyfikacji producenta (np. Touchwiz, Sense). Jeśli są zagwarantowane, możemy po prostu użyć sprawdzenia wersji, aby użyć niestandardowego importu dla urządzeń niższych niż Android 4.0.

Odpowiedz

3

EDIT: Z niektórymi eksperymentowanie, szczególnie z Galaxy S3, która pozwala użytkownikowi na zmianę ich czcionka, to co odkryłem:

  • Korzystanie Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL) powróci th przy CUSTOM typeface zamiast domyślnej czcionki sans-serif (tj. Roboto)
  • Zamiast tego należy użyć Typeface.create("sans-serif", Typeface.NORMAL) (lub BOLD) i spowoduje to powrót Roboto niezależnie od dostosowania czcionki użytkownika. Z poniższej listy możesz użyć "helvetica", "tahoma", "verdana" lub "arial" powyżej zamiast "sans-serif" z tym samym wynikiem.

znalazłem dokument zwany system_fonts.xml że wydaje się potwierdzać, że Roboto zostaną wykorzystane do jakiegokolwiek odniesienia do Typeface.SANS_SERIF w katalogu SDK pod:

platform> android-14> Dane> Czcionki

<!-- 
    System Fonts 

    This file lists the font families that will be used by default for all supported glyphs. 
    Each entry consists of a family, various names that are supported by that family, and 
    up to four font files. The font files are listed in the order of the styles which they 
    support: regular, bold, italic and bold-italic. If less than four styles are listed, then 
    the styles with no associated font file will be supported by the other font files listed. 

    The first family is also the default font, which handles font request that have not specified 
    specific font names. 

    Any glyph that is not handled by the system fonts will cause a search of the fallback fonts. 
    The default fallback fonts are specified in the file /system/etc/fallback_fonts.xml, and there 
    is an optional file which may be supplied by vendors to specify other fallback fonts to use 
    in /vendor/etc/fallback_fonts.xml. 
--> 
<familyset> 

    <family> 
     <nameset> 
      <name>sans-serif</name> 
      <name>arial</name> 
      <name>helvetica</name> 
      <name>tahoma</name> 
      <name>verdana</name> 
     </nameset> 
     <fileset> 
      <file>Roboto-Regular.ttf</file> 
      <file>Roboto-Bold.ttf</file> 
      <file>Roboto-Italic.ttf</file> 
      <file>Roboto-BoldItalic.ttf</file> 
     </fileset> 
    </family> 

Od czcionek dostawcy muszą być umieszczone w fallback_fonts.xml i czcionki systemowe będą zawsze traktowane priorytetowo, a pierwsza wymieniona rodzina to Roboto pod pseudonimami sans-serif, aria, helvetica, tahoma lub verdana, chyba że dowiem się, że w przeciwnym razie można bezpiecznie założyć, że Roboto będzie Czcionka zwrócona dla połączenia z numerem Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL).

Nadal pozostawiam to otwarte na razie, mając nadzieję na ostateczną odpowiedź, ponieważ nie jestem pewien, czy producent OEM może modyfikować system_fonts.xml. Jeśli tak, to wcale nie jest to pomocne.

1

W rozdziale 3.8.5 części Android 4.0 Compatibility Documentation mówi:

3.8.5. Motywy Android zapewnia "motywy" jako mechanizm dla aplikacji do stosowania stylów w całej aktywności lub aplikacji. Android 3.0 wprowadził nowy motyw "Holo" lub "holograficzny" jako zestaw zdefiniowanych stylów dla programistów aplikacji, jeśli chcą dopasować wygląd i styl motywu Holo zgodnie z definicją Androida SDK [Zasoby, 24] . Implementacje urządzeń NIE MOŻNA zmienić żadnego z motywów Holo atrybutów narażonych na aplikacje [Zasoby, 25]. Android 4.0 wprowadza nowy motyw "Domyślne urządzenie" jako zestaw zdefiniowanych stylów dla programistów aplikacji, których można użyć, jeśli chcą dopasować wygląd i styl interfejsu urządzenia zdefiniowanego przez narzędzie implementujące urządzenie. Implementacje urządzenia MOGĄ modyfikować atrybuty kompozycji DeviceDefault wyeksponowane dla aplikacji [Zasoby, 25].

AFAIK, zestaw czcionek Roboto jest częścią tematu holo, a zatem ma obowiązek być obecny na każdym Androidzie 4.0 i wyżej urządzenia, który został certyfikowany przez Google (czyli działa Google Play).

Ten sam wymóg jest również obecny w 4.1 i 4.2 dokumentów

(Search for Holo w formacie PDF, aby szybko znaleźć sekcję Jest tylko 4 wzmianki o nim.)

+0

Nie jestem do końca pewien na ten temat, ale domyślny motyw Holo nie określa kroju pisma, a jedynie rozmiar i styl tekstu, który umożliwiłby producentom wybór czcionek do wysyłki/użytkowania. – ebarrenechea

+0

@ebarrenchea Nawet nie jestem pewien i nie mogę znaleźć oficjalnego miejsca w dokumentacji lub dokumentach zgodności, które potwierdzają lub zaprzeczają temu, dlatego zdecydowałem się powiedzieć "AFAIK" –

+1

Po prostu zadzwoniłem do Adama Powella (który napisał [ten artykuł] (http://android-developers.blogspot.com/2012/01/holo-everywhere.html)) w Google+, aby sprawdzić, czy możliwe jest wyjaśnienie. – kcoppock

Powiązane problemy