首页 > 作文

安卓手机字体ttf怎么用(最火免费手机字体软件)

更新时间:2023-04-05 06:51:48 阅读: 评论:0

osg默认只能显示英文和数字字符,如果想显示汉字的话必须加载中文字库,目前osg只支持ttf格式的字库。

添加freetype插件库

首先在企业网络营销方案android.mk文件里添加对freetype库的支持,找到local_ldflags项并在最后添加以下两行:

康桥书院local_ldflags   := -l $(libdir) ...-l$(osg_android_dir)/lib/osgplugins-3.6.5/libosgdb_freetype.a -l$(osg_android_dir)/obj/local/armeabi-v7a/libft2.a

然后在找在osgmainapp.hpp里添加插件:

u_osgplugin(freetype)

在项目中设置ttf字库文件

先从网上下载或从windows里复制一份ttf文件到项目的asts目录下。然后在运行时将此文件复制到项目所在的内部存储的路径下,并把路径通过ndk传给osg,以便于osg通过c++代码加载字体文件。

在osgnativelib.java最后添加:

public static native void tlocalfont(string fontname);

在mainactivity里实现字体文件的复制功能

private val fontname = "fangsong_gb2312.ttf"privat白糖的功效与作用e val fontfile by lazy { filesdir.path + fi三民主义是什么le.parator + fontname }private fun checklocalfont() {    if (!file(fontfile).exists()) {        try {            val fis = resources.asts.open("font/$fontname")            fis.copyto(fileoutputstream(fontfile), 1024 * 6)        } catch (e: ioexception) {            e.printstacktrace()        }    }}override fun oncreate(savedinstancestate: bundle?) {    super.oncreate(savedinstancestate)    ...    checklocalfont()    ...    //建议在osg初始化完成后调用    osgnativelib.tlocalfont(fontfile)}

上述代码是在android层面拿到字体位于项目所在的路径,现在需要把这个路径传给osgnativelib.cpp

...jniexport void jnicalljava_osg_androidexample_osgnativelib_tlocalfont(jnienv *env, jobject obj, jstring fontname);...extern "c" jniexport void jnicalljava_osg_androidexample_osgnativelib_tlocal使徒行者第三部 电视剧font(jnienv *env, jobject obj, jstring fontname) {    const char *lfont = env->getstringutfchars(fontname, jni_fal);    mainapp.tlocalfont(std::string(lfont));    //relea strings to jni    env->releastringutfchars(fontname, lfont);}

由于ndk只支持c语言的语法,所以osgnativelib还要再二传手,把路径传给osgmainapp,一般来说这个文件才是我们osg的起始文件。

// osgmainapp.hppvoid addtext(const std::string & font);//osgmainapp.cppvoid osgmainapp::addtext(const std::string & font) {    tlocale(lc_all, ".936");    //等价tlocale(lc_all, "chs");    std::string str =  "osg for android 中文显示示例";    osg::ref_ptr<osgtext::text> text =  new osgtext::text;    osg::ref_ptr<osgtext::font> fonthz = osgtext::readreffontfile(font);    text->tfont(fonthz);    text->ttext(str, osgtext::string::encoding_utf8);    text->tcharactersize(40.0f);      text->tposition(osg::vec3( 0.0, 0.0, 0.0f));    text->tautorotatetoscreen( true);    root->addchild(text);}

readreffontfile就是读取字体文件并返回一个字体类型的指针,然后通过tfont设置这个字体指针,如果我们没有在项目中引入freetype的插件库的话,readreffontfile就直接返回一个null。
如果不需要操作字体指针的话可以直接在tfont指定字体文件的路径,这样代码更简洁些。

实际效果

本文发布于:2023-04-05 06:51:46,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1da4879a286e773b4e2068830df80a6b.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:安卓手机字体ttf怎么用(最火免费手机字体软件).doc

本文 PDF 下载地址:安卓手机字体ttf怎么用(最火免费手机字体软件).pdf

标签:文件   字体   路径   字库
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图