32

Androidアプリでカスタム.ttfフォントを使用しています。通常の方法でロードします。

myTypeface = Typeface.createFromAsset( getAssets(), "myTypeface.ttf");

次に、アクティビティ内で書体を割り当てます...非常に簡単なもの:

TextView tv = (TextView) findViewById(R.id.sample_text);
tv.setTextSize(12);
tv.setTypeface(App.myTypeface);

私が遭遇している問題は、後のAPIを使用している一部のデバイス(Asus Transformerのエミュレーターで特に気づきました)では、テキストが少し太く見え、幅が均一でなく、垂直方向の配置が乱雑になっていることです。その最後の部分とは、一部の文字が他の文字よりも垂直方向に少し高くまたは低く配置され、テキストにジェットコースターのような感じを与えることを意味します。

以下のスクリーンショットを検討してください

これは、Transformerと同じ解像度とdpiでエミュレーターにレンダリングされたテキストですが、GoogleAPIレベル8を使用しています。

i45.tinypic.com/142toud.png

かなり標準的に見えますよね?

次に、同じ解像度とdpiでエミュレーターでレンダリングされたテキストについて考えますが、GoogleAPIレベル15を使用しています。

i47.tinypic.com/24zhekn.png

最初はテキストが似ているように見えるかもしれませんが、少し太字に見えるかもしれません。ただし、「quick」の「c」を見てください。最初のレンダリングの「c」よりも低く、背が高いことに気付くでしょう。また、「quick」という単語の文字の下部を見ると、下部に配置されていないことに気付くでしょう。

これらの問題は小さいように見えるかもしれませんが、テキストがたくさんある画面では、それは本当に専門的ではないように見え始めます。

誰かがこれを見た、または説明がありますか?後のAPIでテキストを均一に見せたいです。

お時間をいただき、ありがとうございました!

4

1 に答える 1

58

さて、両方のインスタンスで次のフラグが適用されているようです。

Paint.DEV_KERN_TEXT_FLAG
Paint.ANTI_ALIAS_FLAG

これを試して、結果が異なるかどうかを確認してください(必ずしも改善されているわけではありませんが、まったく目立つことさえあります)。

textView.setPaintFlags(textView.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG);
于 2012-06-08T17:41:37.687 に答える