1

下記を行っております。取得できるのは基本フォントだけで、カスタム シンボル フォントではありません。

何か案は?

     Paint pnt = new Paint();
    // SymbolNo is 38. Returns string "&" which is correct in normal font.
    String symbolText = Character.toString((char)SymbolNo); 

    // Should adopt a symbol font and draw symbol to screen instead. But I just see "&"
    Typeface tf = Typeface.createFromAsset(m_context.getAssets(), "fonts/myFont.TTF" ); 
    pnt.setTypeface(tf);

    m_canvas.drawText(symbolText,x, y, pnt);

私のフォントはassets/fonts/myFont.TTF

4

2 に答える 2

1

すべてのフォントが Android で動作するわけではありません。黙って失敗するだけです。

アクションの 1 つの方法は、実験の基礎として、カスタム フォントを確実に処理するアプリ (このサンプル アプリなど) を見つけることです。そのアプリを実行して、そのフォントが表示されることを確認し、そのうちの 1 つを自分のフォントに置き換えることができます。それが機能する場合は、フォントの読み込み方法に問題があります (ただし、何がどのように行われるかはわかりません)。サンプル アプリでフォントが機能しない場合、そのアプリに付属のフォントは機能しますが、問題はフォントにあります。

残念ながら、フォントが機能するかどうかはわかりません。フォント エディタでフォントを開き、マイナーな変更を加えて (たとえば、必要のないことがわかっているグリフを削除するなど)、元に戻して保存し、修正したフォントが機能するかどうかを確認してみてください。存在する場合、それはフォントが保存された当初は Android が好まないものを含んでいたことを意味しますが、フォント エディターは Android 対応のフォントを生成できます。

于 2012-11-08T12:28:39.193 に答える
-3

こんにちは私はこれに関する解決策を持っていますあなたはこのようにフォントを使ってみることができます...私は私のプロジェクトにこれを実装しました...

手順:

  1. パッケージを作成する(com.fontUtils.fonts)
  2. TextViewEditTextまたはボタンテキストのようにフォントファイルを作成します

例えば ​​:

    public class ButtonHelveticaBold extends Button {

        Context ButtonFontContext;

        public ButtonHelveticaBold(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            ButtonFontContext = context;
        }

        public ButtonHelveticaBold(Context context, AttributeSet attrs) {
            super(context, attrs);
            ButtonFontContext = context;
        }

        public ButtonHelveticaBold(Context context) {
            super(context);
            ButtonFontContext = context;
        }

        @Override
        public void setTypeface(Typeface tf, int style) {
            Typeface typeFaceHelvetica;
            if (style == Typeface.BOLD) {
                typeFaceHelvetica = Typeface.createFromAsset(getContext().getAssets(), "fonts/helvetica_bold_neue.ttf");
            } else {
                typeFaceHelvetica = Typeface.createFromAsset(getContext().getAssets(), "fonts/helvetica_neue_regular.ttf");
            }
            super.setTypeface(typeFaceHelvetica);
        }

    }

3:これをXMLで次のように使用します。

   <com.fontUtils.fonts.ButtonHelveticaBold 
      android:id="@+id/btn"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      />
于 2012-11-08T13:20:16.153 に答える