5

このアプリケーションでは、Roboto と Roboto Bold を使用しています。ただし、Android の一部のバージョン (4.0 から 4.1 のようです) では、RobotoTypeface.createFromAsset()の組み込みバージョン (つまり ) を単に使用した場合には表示されない、インポートされたバージョンの Roboto を使用した場合 (つまり、 を使用した場合) のテキスト レンダリングに問題がありますTypeface.DEFAULT

Roboto と Roboto Bold が Android 4.0 で導入されたことは知っていますが、製造元の変更 (Touchwiz、Sense など) に関係なく、これらのフォントが使用できることを保証するものは見つかりません。それらが存在することが保証されている場合は、バージョン チェックを使用して、Android 4.0 より前のデバイスに対してのみカスタム インポートを使用できます。

4

2 に答える 2

3

編集:いくつかの実験で、特にユーザーがフォントを変更できるGalaxy S3で、これは私が発見したものです:

  • を使用Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL)すると、システムのデフォルトのsans-serifフォント(つまりRoboto)ではなく、そのカスタム書体が返されます。
  • 代わりにTypeface.create("sans-serif", Typeface.NORMAL)(またはBOLD)を使用すると、ユーザーのフォントのカスタマイズに関係なく、Robotoが返されます。以下のリストから、実際には、上記の「sans-serif」の代わりに「helvetica」、「tahoma」、「verdana」、または「arial」を使用して同じ結果を得ることができます。

以下のSDKディレクトリでsystem_fonts.xmlRobotoが参照に使用されることを確認しているように見えるというドキュメントを見つけました。Typeface.SANS_SERIF

プラットフォーム>android-14>データ>フォント

<!--
    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>

ベンダーフォントを配置する必要がfallback_fonts.xmlあり、システムフォントが常に優先されるため、リストされている最初のファミリは、sans-serif、aria、helvetica、tahoma、またはverdanaのエイリアスの下にあるRobotoです。 Robotoがへの呼び出しに対して返されるフォントであると想定しTypeface.create(Typeface.SANS_SERIF, Typeface.NORMAL)ます。

OEMがsystem_fonts.xmlを変更できるかどうかわからないため、決定的な答えを期待して、今のところこれを開いたままにしておきます。もしそうなら、これはまったく役に立ちません。

于 2013-02-27T22:12:22.427 に答える
1

Android 4.0 互換性ドキュメントのセクション 3.8.5 には、次のように記載されています。

3.8.5. テーマ Android は、アプリケーションがアクティビティまたはアプリケーション全体にスタイルを適用するためのメカニズムとして「テーマ」を提供します。Android 3.0 では、新しい "Holo" または "holographic" テーマが、アプリケーション開発者が Android SDK で定義されている Holo テーマのルック アンド フィールに一致させたい場合に使用する一連の定義済みスタイルとして導入されました [参考文献、24]。デバイスの実装は、アプリケーションに公開されている Holo テーマの属性を変更してはなりません[Resources, 25]。Android 4.0 では、アプリケーション開発者がデバイスの実装者によって定義されたデバイス テーマのルック アンド フィールに一致させたい場合に使用する定義済みのスタイルのセットとして、新しい「Device Default」テーマが導入されています。

知る限り、Roboto フォント セットはホロ テーマの一部であるため、Google によって認定された (つまり、Google Play を実行している) Android 4.0 以降のデバイスに存在する必要があります。

同じ要件が4.1および4.2ドキュメントにも存在します。

(PDF で Holo を検索して、セクションをすばやく見つけます。4 つの言及しかありません)。

于 2013-02-27T19:57:33.113 に答える