この質問]1に対する回答の中で、ユーザーは android:fontFamily
の値と12のバリエーションを挙げています(以下参照)。これらの値はどこから来たのでしょうか?android:fontFamily`のドキュメントには、この情報はどこにも載っていません(こちらとこちらを確認しました)。文字列はAndroidのstyles.xmlファイルのいろいろなところに記載されていますが、これらはどのようにしてRobotoフォントにマッピングされるのでしょうか?
アンドロイド4.1/4.2では、以下のロボトフォントファミリーが利用可能です。 利用可能です。 となっています。
android:fontFamily="sans-serif" // ロボト・レギュラー アンドロイド:fontFamily="sans-serif-light" // ロボトライト アンドロイド:fontFamily="sans-serif-consensed" // roboto condensed android:fontFamily="sans-serif-thin" // roboto thin (android 4.2) android:fontFamily="sans-serif-medium" // roboto medium (android 5.0)
これと組み合わせて
android:textStyle="normal|bold|italic"
12種類のバリアントが可能です。
レギュラー
- イタリック
- ボールド
- ボールド・イタリック
- ライト
- ライトイタリック
* 細字 細いイタリック体- 欧文コンデンス
- コンデンスイタリック
- コンデンスボールド
- コンデンスボールド-イタリック
私が作業しているアプリケーションの styles.xml
ファイルの中で、誰かがこれをフォントファミリーとしてリストアップしていましたが、私はそれが間違っていると確信しています。
<item name="android:fontFamily">Roboto-Regular.ttf</item>
アプリのテーマを正しく設定して(fontFamilyを正しく使うことも含めて)、このファイルを見る前に作成されたスタイルの中にある冗長な部分をすべて削除したいのです。
これらの値はどこから来ているのでしょうか?android:fontFamilyのドキュメントには、この情報はどこにも載っていません。
確かにドキュメントには記載されていません。しかし、それらは 'Font families'のセクションで ここに記載されています。このドキュメントには、Android Jelly Bean 4.1のすべての新しいパブリックAPIが記載されています。
私が作業しているアプリケーションのstyles.xmlファイルでは、誰かがこれをフォントファミリーとして記載していました。
はい、それは間違いです。フォントファイルを参照するのではなく、上記リンク先のドキュメントに記載されているフォント名を使用しなければなりません。この場合はこうなるはずでした。
<item name="android:fontFamily">sans-serif</item>
リンク先の回答にもあるように、12種類のバリエーションが可能です。
Regular(デフォルト)。
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item>
イタリア語:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">italic</item>
ボールド:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold</item>
ボールド-イタリック:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold|italic</item>
光:
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>
Light-italic:
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">italic</item>
細い :
<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">normal</item>
Thin-italic :
<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">italic</item>
コンデンス・レギュラー:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">normal</item>
コンデンスイタリック:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">italic</item>
コンデンス・ボールド:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold</item>
Condensed bold-italic:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold|italic</item>
Medium:
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">normal</item>
Medium-italic:
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">italic</item>
黒:
<item name="android:fontFamily">sans-serif-black</item>
<item name="android:textStyle">italic</item>
参考までに、それぞれの外観は以下の通りです。
Material Design Typography]2のページには、これらのフォントの一部のデモや、フォントやスタイルの選択に関する提案が掲載されています。
コード研究者のために。fonts.xml`は、Androidフォントの決定的なリストであり、常に拡張されています。
例えば、android:fontFamily
と android:textStyle
属性を設定します。
<!-- Roboto Bold -->
<TextView
android:fontFamily="sans-serif"
android:textStyle="bold" />
を、この表にある希望の値に設定します。
Font | android:fontFamily | android:textStyle
-------------------------|-----------------------------|-------------------
Roboto Thin | sans-serif-thin |
Roboto Light | sans-serif-light |
Roboto Regular | sans-serif |
Roboto Bold | sans-serif | bold
Roboto Medium | sans-serif-medium |
Roboto Black | sans-serif-black |
Roboto Condensed Light | sans-serif-condensed-light |
Roboto Condensed Regular | sans-serif-condensed |
Roboto Condensed Medium | sans-serif-condensed-medium |
Roboto Condensed Bold | sans-serif-condensed | bold
Noto Serif | serif |
Noto Serif Bold | serif | bold
Droid Sans Mono | monospace |
Cutive Mono | serif-monospace |
Coming Soon | casual |
Dancing Script | cursive |
Dancing Script Bold | cursive | bold
Carrois Gothic SC | sans-serif-smallcaps |
(Noto Sansはフォールバックフォントであり、直接指定することはできません。)
Note: この表は、fonts.xml
から派生したものです。各フォントのファミリー名とスタイルは fonts.xml に記載されています。
<family name="serif-monospace">
<font weight="400" style="normal">CutiveMono.ttf</font>
</family>
serif-monospaceはフォントファミリー、
normal` はスタイルです。
fonts.xml の log と以前の system_fonts.xml を見ると、各フォントがいつ追加されたかがわかります。
私の知る限りでは、xmlやテーマでカスタムフォントを宣言することはできません。私は通常、インスタンス化時に独自のフォントを設定するtextviewを拡張したカスタムクラスを作り、それをレイアウトxmlファイルで使用しています。
つまり
public class Museo500TextView extends TextView {
public Museo500TextView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setTypeface(Typeface.createFromAsset(context.getAssets(), "path/to/font.ttf"));
}
}
と
<my.package.views.Museo900TextView
android:id="@+id/dialog_error_text_header"
android:layout_width="190dp"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="12sp" />