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。它只是默默地失败。

一种做法是找到一个可以处理自定义字体的应用程序——比如我的这个示例应用程序——作为实验的基础。您可以运行该应用程序以确认其字体出现,然后用您的字体替换其中一种。如果这可行,那么您在字体中加载的方式有些混乱(尽管我不知道是什么或如何)。如果字体在我的示例应用程序中无法使用,而该应用程序附带的字体确实可以使用,则问题出在字体上。

不幸的是,我不知道是什么让字体工作或不工作。您可以尝试在字体编辑器中打开字体,做一些小的更改(例如,删除一些您知道不需要的字形),将其保存回来,然后查看修改后的字体是否有效。如果是这样,则意味着最初保存的字体中有一些 Android 不喜欢的内容,但您的字体编辑器可以生成 Android 友好的字体。

于 2012-11-08T12:28:39.193 回答
-3

您好,我对此有一个解决方案,您可以尝试以这种方式使用字体...我已经在我的项目中实现了这个...

脚步:

  1. 制作一个包 (com.fontUtils.fonts)
  2. 使字体文件类似于 TextViewEditText或 Button Text

例如 :

    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 回答