使用自定义字体时出现问题 - “无法制作原生字体”
Posted
技术标签:
【中文标题】使用自定义字体时出现问题 - “无法制作原生字体”【英文标题】:Issue when using a custom font - "native typeface cannot be made" 【发布时间】:2011-11-23 19:34:33 【问题描述】:我正在尝试使用在互联网上找到的字体,但问题是我得到了一个带有“无法制作原生字体”的 FC。
这是我的 ListVIew 的 getView 中的代码:
holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name);
holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "suralist_font.ttf"));
谁能告诉我为什么我可以使用自定义 rom?你可以得到它HERE..文件是.ttf
【问题讨论】:
【参考方案1】:我的问题是资产文件夹的位置不正确。
使用 android Studio 时,资产文件夹应位于源集内,例如
src/main/assets/
发现于this answer
【讨论】:
这就是答案。只是节省了我的时间。谢谢!【参考方案2】:字体文件由于某种原因已损坏或不受支持。您可以将其放在 SD 卡上并从文件中加载,以确保您的资产没有问题。
【讨论】:
我刚刚从 File 中尝试过,现在字体可以使用了!但这意味着我的资产文件夹有问题,这会影响其他任何事情吗?有没有办法解决这个问题? 不应该影响其他东西。您可以尝试重建您的 apk,但不确定到底是什么问题。也许它无法解压缩文件?尝试使用最新的 Android SDK。 如何把它放到 sdcard 上?当一个随机的人从 Play 商店下载我的应用程序时? 附带说明:由于 gradle build 而不是 build/assets 文件夹,Android Studio 用户需要在 src/main 创建一个 assests 文件夹。 ***.com/questions/18302603/…【参考方案3】:基本上有4个原因会导致这种情况:
-
您使用了错误的扩展名
您必须将字体放在 assets 文件夹中,并且不要放在 assets/fonts/ 中
您拼错了字体
字体需要小写(在我的情况下,解决方案是将 MyFont.ttf 重命名为 myfont.ttf,奇怪)
【讨论】:
在我的例子中,我使用的是 Bootstrap,字体需要复制到 assets 文件夹的根目录。您的回答帮助解决了这个问题,所以 +1。 在我的情况下,问题是小写 我的是第二名。好点,可能会帮助很多人【参考方案4】:仔细检查扩展名是否大写,即。 suralist_font.TTF
字体似乎经常以这种方式出现,可能会被忽略。
【讨论】:
刚刚帮我解决了这个问题! :) 这也解决了我的问题,bebas 字体文件类似于 BEBAS___.TFF -- 非常感谢!【参考方案5】:我遇到了同样的问题,我在 assets>fonts>whatever.ttf 中创建了我的,并且遇到了同样的错误。我添加了字体扩展名(fonts/whatever.ttf),它在每种情况下都解决了问题。
holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name);
holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "fonts/suralist_font.ttf"));
【讨论】:
【参考方案6】:相当老的线程,但我想再添加一个可能发生这种情况的原因:您必须在调用字体之前设置内容视图。请参阅下面的示例
不起作用:
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
TextView title = (TextView)findViewById(R.id.tvTitle);
Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
title.setTypeface(font);
setContentView(R.layout.main);
有效!
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // <-- call before typeface
TextView title = (TextView)findViewById(R.id.tvTitle);
Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
title.setTypeface(font);
【讨论】:
fonts/whatever.ttf
部分救了我。谢谢!【参考方案7】:
我正在使用 android studio,在我的情况下,问题是资产文件夹的路径,在 Eclipse 中资产文件夹的路径是 res/assets/ 但在 Android Studio 中它的 src/main /资产/ 所以,我只是将我的字体文件移动到这个路径,最后问题解决了。
【讨论】:
【参考方案8】:您的字体文件已损坏,否则您在调用文件名时拼写错误。我有同样的问题,这是因为资产文件夹中指定的文件名是
roboto_black.ttf
在 java 文件中声明时,我一直将其拼写为:
roboto_blak.ttf
如果您的 .ttf 文件在资产文件夹中,则使用:
Typeface type_bold = Typeface.createFromAsset(getAssets(), "roboto_black.ttf");
如果它在字体文件夹中,则使用:
type_bold = Typeface.createFromAsset(getAssets(), "fonts/roboto_black.ttf");
希望对你有帮助!
【讨论】:
【参考方案9】:希望这会有所帮助
Typeface.createFromAsset 泄露资产流:http://code.google.com/p/android/issues/detail?id=9904
【讨论】:
【参考方案10】:正如 CommonsWare 在 this answer 中所述
我猜是字体本身有问题。那个错误 当操作系统中的本机代码尝试加载 字体。
不管怎样,试试这个:
holder.tv_SuraName = (TextView)convertView.findViewById(R.id.Start_Name);
Typeface Font = Typeface.createFromAsset(this.getAssets(),"suralist_font.ttf");
holder.tv_SuraName.setTypeface(Font);
【讨论】:
【参考方案11】:我遇到了来自comic.TTF 的相同问题,来自comic sans ms of Windows。 由于我放置在 assets/fonts 文件夹中的原始文件如上所述是大写的,因此我必须完全以大写形式输入。 Typeface.createFromAsset(getAssets(), "fonts/COMIC.TTF");
原来问题是由小写字母引起的: Typeface.createFromAsset(getAssets(), "fonts/comic.ttf");
【讨论】:
【参考方案12】:请注意,这是由于文件损坏或您将文件放入了错误的文件夹。
根据Android文档here
主要/资产/ 这是空的。您可以使用它来存储原始资产文件。您在此处保存的文件将按原样编译为 .apk 文件,并保留原始文件名。您可以像使用 URI 的典型文件系统一样导航此目录,并使用 AssetManager 将文件作为字节流读取。例如,这是放置纹理和游戏数据的好位置。
因此,您的文件夹结构应该是 yourmodule/main/assets(例如 a***pp/main/assets***)
【讨论】:
【参考方案13】:对我有用的是首先将我的字体名称改为小写和下划线:从 Amatic-Sc.ttf 到 amatic_sc.ttf。
然后在 set.TypeFace 方法中将 assets/fonts/amatic_sc.ttf 更改为 fonts/amatic_sc.ttf。
【讨论】:
【参考方案14】:我一直在调试 Android Studio 中的这个错误。将字体添加到资产目录后清理并重建项目为我解决了这个问题。
【讨论】:
【参考方案15】:刚刚做了一个build --> clean
并开始渲染。
【讨论】:
【参考方案16】:我在 Android 4.0.3-4.0.4 上遇到了同样的问题(在模拟器 IceCreamSandwich mips 4.0.3 上 100% 可重现)。
问题是我拥有的 TTF 字体不正确,尽管几乎所有 Android 版本都能够加载这些 TTF 字体。所以我用https://cloudconvert.com/woff-to-ttf(因为我也有woff文件)来制作新的TTF字体,这解决了我的问题。
【讨论】:
以上是关于使用自定义字体时出现问题 - “无法制作原生字体”的主要内容,如果未能解决你的问题,请参考以下文章
尝试实现自定义字体时出现“@font-face 声明不遵循 fontspring 防弹语法”错误
使用 Angular 材质定义自定义主题时出现 SassError
使用自定义 Autowired 时出现 NullPointerException