关于qt如何显示svg矢量图片中的中文
来源:互联网 发布:长笛 知乎 编辑:程序博客网 时间:2024/04/27 15:18
今天终于拿到svg格式的矢量图,之前使用开发板最多只能输出1024*768分辨率的图像,而显示器是1920*1080的分辨率,显示起来非常不清楚,于是想到用矢量图。
可是矢量图到手之后,简直就是噩梦的开始。
首先是windows下用ie打开之后出现乱码,接着用svg插件搞定。然后在虚拟机上在redhat系统下用qt编码,问题出现了,无法显示图片中的文字(包括中文和英文)。当时真是第一次遇到这种情况,奇了怪了。后来经过前辈工程师的指点,原来svg图片是用xml语言描述的,于是用文本编辑器打开,查看源代码,发现其字体格式为“微软雅黑”。我的redhat下没有微软雅黑,怪不得无法显示,先不管,上板子,然后把微软雅黑的字体库拷贝到板子上,结果试了很多路径,都没有任何效果(板子是ubuntu系统,字体路径为/usr/share/fonts/truetype,可惜没有用,后来又想到也许是qt库的问题,但是找了半天找不到qt的字库存放目录,ubuntu下没有在嵌入式平台的fonts目录)。于是想到在windows下是否可行,结果证明在windows下,qt可以完美运行svg图片并且显示中文。
这下我们又陷入了沉思。。。到底是神马原因呢?于是开始到网上找为ubunu换字体的方法,试过清空字体缓存的办法,也试过在文件上直接点击“install font”,但是依然都没用。我都快斯巴达了。。。。
下班前总结出一个结论,那就是既然无法在ubuntu上安装svg需要的字库,那么就找到ubuntu的中文字库,然后改svg代码。抱着这样的希望,俺下班回家了。
回家之后,正好手边又ubuntu系统的电脑,于是又开始轰轰烈烈的测试。几十分钟下来,依然找不到ubuntu那个是中文字库,貌似ubuntu支持wenquanyi但是同样找不到啊啊,find指令都给我按烂了。
家里还有一台macair,结果证明air上也无法显示微软雅黑。这应该是air上没有字库的原因。但是奇怪的是ubuntu的图片查看器却可以显示微软雅黑。所以应该是ubuntu有字库,但是qt没有,并且也找不到这个字库。。。。这实在是太复杂了。。。。网上有人说无法显示中文和中文乱码是两回事,前者是程序问题,后者才是xml原文件问题,所以认为是qt的控件没有设置字体样式的缘故,所以在QSvgwidget用setstylesheet设置了font-family为微软雅黑,仿宋,文泉驿。。等等,都没用。看来qt根本就不自带这些字体,并且我也不知道怎么安装这些字体!!再次斯巴达!!
后来我转念一想,既然svg格式是xml语言描述的,是否可以找一找qt如何解析xml文件中的中文的办法呢?
果然被我找到好多例子,大多数人都建议修改编码格式为utf-8,我一查看,已经是utf8了,改成GB2312之后图片全部都不显示了。于是改回来,应该不是编码格式的问题。
继续找,继续找。。。终于,重点来了,我看见一个qt解析xml文件的例子,里面xml文件只有编码格式,却没有指明自体格式(family-font)我心想这难道就是。。。终极答案?????既然例子中不指明字体格式都能显示中文,说明最重要的就是utf8编码格式啊!!字体格式如果不指明,qt应该会自己找一个默认的吧》????我抱着这样的猜想,将文件中所有family-font全部替换为空。保存,再次运行程序,完美显示中文!!!
- 关于qt如何显示svg矢量图片中的中文
- 关于SVG图片不显示
- 关于SVG的中文显示问题
- 关于Qt显示中文
- QT中的buttonbox、QMessageBox等默认控件如何显示中文
- 关于Qt中文显示问题
- QT如何支持中文显示
- Qt之中文显示和显示图片
- svg显示中文
- QT中的中文显示问题
- svg显示图片问题
- qt中如何显示图片
- 关于SVG的中文
- 关于SVG的中文
- qt 保存为svg图片
- QT中如何将图片作为按键背景色以及中文显示
- SVG显示中文问题解决步骤
- SVG显示中文的设置
- sql server 数据库加强3
- 关于如何抵抗压力的10点建议
- samba服务配置(ubuntu 11.10试,可用)
- 管道PipedInputStream/PipedOutputStream类应用
- algo3-3-9.c 用递归函数求解迷宫问题(求出所有解) (没仔细看了)
- 关于qt如何显示svg矢量图片中的中文
- linux编译单独一个模块makefile写法
- ZC-ADK USB Bootloader说明
- uc/os-ii介绍
- ubuntu下编译linux内核
- 如何写出高效率的正则表达式
- 16.5 MFC WinSocket实例
- ASP.NET MVC 4 移动特性
- 如何在kdevelop中让QT使用代码补全功能(转)