[STM32MP135F-DK]测评 ⑦MP135 GTK与中文
<div class='showpostmsg'> 本帖最后由 不爱胡萝卜的仓鼠 于 2023-12-26 13:32 编辑<p> 写在最前面:我没有解决在MP135上使用GTK绘制的界面如何显示中文的问题,但是我找到了一些方向,只是不知道该如何操作</p>
<p> </p>
<p> 我绘制了一个界面,放置了一个标签,标签上写“刷新”,标签的代码如下</p>
<pre>
<code>GtkWidget *label = gtk_label_new("刷新");</code></pre>
<p>但是界面显示的是一串乱码,如下图所示</p>
<div style="text-align: center;"></div>
<div>于是我就去网上找GTK显示中文的帖子,基本上都是说中文编码的问题,GTK只认UTF-8,需要在代码中加入转换函数,转成UTF-8编码。我也照做了,没有用。</div>
<div>我就怀疑是不是转换函数没有生效,我就直接手动把中文转换成TUF-8编码</div>
<div>
<div style="text-align: center;"></div>
<p> </p>
</div>
<div>装进数组里,直接把数据给GTK(下面放了部分代码,我把“刷新”放到一个按钮上)</div>
<div>
<pre>
<code>char refresh[] = {0x52, 0x37, 0x65, 0xB0, '\0'};
GtkWidget *button_refresh = gtk_button_new_with_label(refresh);</code></pre>
<p>结果SSH界面还多了报错</p>
<pre>
<code>(gtk_time:1955): Pango-WARNING **: 22:43:01.956: Invalid UTF-8 string passed to pango_layout_set_text()</code></pre>
<p>说我给的不是UTF-8,哦那就有意思了,应该是我直接塞数组的动作有错,但是这也侧面反映了,之前我直接在代码中给中文是正确的。</p>
<p>突然我发现,一开始的界面上现实的乱码其实就是UTF-8的编码,所以我得出一个结论:代码和编译方式都是正确的,但是135上没有对用的中文字库,所以无法显示中文字符。</p>
<p>为了验证我的猜想,我突然想到之前测试时写了一个printf当前时间的demo,打印出的内容中就有中文,在SSH中是可以正常显示出来的,在SSH中运行的结果如下</p>
<div style="text-align: center;">
<div style="text-align: center;"></div>
</div>
<p>于是我给135插上键盘,运行之前的程序,如下图所示</p>
<div style="text-align: center;"></div>
<p>同样的代码,结果不同,那么我就可以断定,就是135上缺少对应的中文字库。</p>
<p> </p>
<p>但是到此为止我已经不知道该怎么下一步了,方向很明确要给他装一个中文字库,但是我就是不知道怎么装,如果有知道该怎么做的大佬,欢迎在评论区指导一下。所以后面我制作demo时只能避开中文了</p>
</div>
<p> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>把win系统的字库移植到板子上去,我编写QT程序的时候也不能显示中文,后来我直接把win 的字库移植到板子上就行了</p><br/> 这个可以跑touchGFX吗?实时性高不高呀? lugl4313820 发表于 2023-12-25 13:23
这个可以跑touchGFX吗?实时性高不高呀?
<p>这个是跑了linux系统的,不能跑TouchGFX。当然135也支持裸机开发,和普通的STM32单片机一样,但是依然不支持TouchGFX(之前听ST工程师说后续可能会支持,但什么时候未知),目前裸机下已支持的是LVGL。还有就是裸机不支持Keil,要么IAR要么ST自己的IDE,因为Keil不支持A核</p>
qiao--- 发表于 2023-12-25 11:40
把win系统的字库移植到板子上去,我编写QT程序的时候也不能显示中文,后来我直接把win 的字库移植到板 ...
<p>能请教一下具体怎么操作吗?</p>
<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&goto=findpost&pid=3289079&ptid=1267906" target="_blank"><font color="#999999">不爱胡萝卜的仓鼠 发表于 2023-12-25 13:28</font></a></font> 能请教一下具体怎么操作吗?</blockquote>
</div>
<p>可以,今天晚上之前我出一期移植这个字库的测评,你关注一下</p>
<p>把字体文件(.ttf .ttc 等后缀)拷贝到 当前用户 home 目录下的 .fonts 目录下,即可完成字体安装</p>
qiao--- 发表于 2023-12-25 14:03
可以,今天晚上之前我出一期移植这个字库的测评,你关注一下
<p>好嘞,非常感谢</p>
dukedz 发表于 2023-12-25 14:05
把字体文件(.ttf .ttc 等后缀)拷贝到 当前用户 home 目录下的 .fonts 目录下,即可完成字体安装
<p>👌,非常感谢,晚上回去我试一下</p>
<p>linux可以直接装字库,不复杂,搜索一下。</p>
u不错,准备入手一台
页:
[1]