关于createFromAsset


createFromAsset接口是用来生成typeface的。


For Example:


Typeface tf = Typeface.createFromAsset(mContext.getAssets(), "simple.ttf");


如果是用createFromAsset的接口生成新的typeface,


那么要把simple.ttf放到对应的应用的assets目录下,


否则会提示native typeface cannot be made.


另外,如果指定的字库是在系统下的,可以用绝对路径来生成typeface.


For Example:


  typeface.createFromFile("/system/fonts/DroidSansFallback.ttf")




在C++中,`Typeface`类通常用于Android中的Java代码中,因此在C++中不能直接使用该类。如果你需要在C++中使用指定的字体,并将中文字符转换为UTF-8编码,可以使用FreeType库。 以下是一个使用FreeType库在C++中指定字体并绘制中文字符串的示例代码: ``` #include <ft2build.h> #include FT_FREETYPE_H // 初始化FreeType库 FT_Library ft; FT_Init_FreeType(&ft); // 指定字体文件路径 std::string font_path = "path/to/font.ttf"; // 加载字体文件 FT_Face face; FT_New_Face(ft, font_path.c_str(), 0, &face); // 设置字体大小 int font_size = 24; FT_Set_Pixel_Sizes(face, 0, font_size); // 设置字符编码为UTF-8 std::string text = "你好,世界"; std::wstring_convert<std::codecvt_utf8<wchar_t>> converter; std::wstring wide_text = converter.from_bytes(text); // 遍历字符并绘制 for (int i = 0; i < wide_text.length(); i++) { wchar_t c = wide_text[i]; // 加载字符的位图 FT_Load_Char(face, c, FT_LOAD_RENDER); // 将位图转换为OpenCV图像 cv::Mat glyph_image(face->glyph->bitmap.rows, face->glyph->bitmap.width, CV_8UC1, face->glyph->bitmap.buffer); // 在图像上绘制字符 cv::Point position(100 + i * font_size, 100); cv::rectangle(image, position, position + cv::Point(face->glyph->bitmap.width, face->glyph->bitmap.rows), cv::Scalar(255, 255, 255), -1); cv::Mat roi = image(cv::Rect(position, position + cv::Point(face->glyph->bitmap.width, face->glyph->bitmap.rows))); glyph_image.copyTo(roi, face->glyph->bitmap); } // 释放资源 FT_Done_Face(face); FT_Done_FreeType(ft); ``` 这段代码使用了FreeType库来加载字体文件并绘制中文字符串。请注意,由于FreeType库是跨平台的,因此这段代码可以在Windows、Linux和Mac OS上运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值