欢迎关注公众号可以查看更多完整文章

Pango是一个开放源代码的自由函数库,用于高质量地渲染国际化的文字。Pango可以使用不同的后端字体,并提供了跨平台支持。

使用Pango显示文字,需要设置字体,因为需要使用字体去本地查找对应的字体文件,从而解析出正确的字型。

下面的示例是显示中文,设置字体为黑体,另外设置字体大小、显示位置等操作。

文字显示后保存到图片,并使用QT显示出来。

PangoFontDescription *font_description = pango_font_description_new();pango_font_description_set_family(font_description, "simhei");//黑体pango_font_description_set_weight(font_description, PANGO_WEIGHT_BOLD);pango_font_description_set_absolute_size(font_description, 16 * PANGO_SCALE);//设置字体大小pango_layout_set_font_description(layout, font_description);std::wstring wstr = L"Pango是一个开放源代码的自由函数库,用于高质量地渲染国际化的文字。Pango可以使用不同的后端字体,并提供了跨平台支持。";gchar *ch = g_utf16_to_utf8((gunichar2 *)wstr.c_str(), -1, NULL, NULL, NULL);//转成8位 Unicode码pango_layout_set_text(layout, ch, -1);//cairo_set_source_rgb(cr, 0.0, 1.0, 1.0);//设置字体颜色cairo_move_to(cr, 10.0, 50.0);//显示位置pango_cairo_show_layout_line(cr, pango_layout_get_line(layout, 0));//显示

如果显示高棉语Khmer或者泰语等需要组合的文字(Shaped Text),也是可以正确显示的,只需要把字体换成对应的字体名称,需要显示的文字当然也需要换成高棉语或者泰语。


当然,要显示高棉语或者泰语,还需要下载对应的字体文件,如果自己电脑上没有对应的字体的话。

需要依赖glib,pango,cairo等库。

示例代码:

#ifndef QSHOWTEXT_H
#define QSHOWTEXT_H#include <QWidget>class QSHowText : public QWidget
{Q_OBJECTpublic:QSHowText(QWidget *parent = 0);~QSHowText();private:};#endif // QSHOWTEXT_H
#include "qshowtext.h"
#include "pango/pangocairo.h"
#include <QHBoxLayout>
#include <QLabel>QSHowText::QSHowText(QWidget *parent): QWidget(parent)
{cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1000, 500);cairo_t *cr = cairo_create(surface);PangoLayout *layout = pango_cairo_create_layout(cr);PangoFontDescription *font_description = pango_font_description_new();pango_font_description_set_family(font_description, "Khmer UI");//高棉语pango_font_description_set_weight(font_description, PANGO_WEIGHT_BOLD);pango_font_description_set_absolute_size(font_description, 16 * PANGO_SCALE);//设置字体大小pango_layout_set_font_description(layout, font_description);std::wstring wstr = L"Pango ជាបណ្ណាល័យប្រភពបើកចំហឥតគិតថ្លៃសម្រាប់បង្ហាញអត្ថបទដែលអន្ដរជាតិដែលមានគុណភាពខ្ពស់។ Pango អាចប្រើកម្មវិធីខាងក្រោយពុម្ពអក្សរផ្សេងគ្នានិងផ្តល់ការគាំទ្រឆ្លងវេទិកា។";gchar *ch = g_utf16_to_utf8((gunichar2 *)wstr.c_str(), -1, NULL, NULL, NULL);//转成8位 Unicode码pango_layout_set_text(layout, ch, -1);//cairo_set_source_rgb(cr, 0.0, 1.0, 1.0);//设置字体颜色cairo_move_to(cr, 10.0, 50.0);//显示位置pango_cairo_show_layout_line(cr, pango_layout_get_line(layout, 0));//显示g_object_unref(layout);pango_font_description_free(font_description);QString strImage = "test.png";cairo_surface_write_to_png(cairo_get_target(cr), strImage.toStdString().c_str());QLabel *pLabel = new QLabel(this);pLabel->setPixmap(QPixmap(strImage));QHBoxLayout* pHBox = new QHBoxLayout(this);pHBox->addWidget(pLabel);
}QSHowText::~QSHowText()
{}

本文地址:Pango显示文字,并保存为图片_GreenArrowMan-CSDN博客-CSDN博客

Pango显示文字,并保存为图片相关推荐

  1. 读取json格式的图片、文字并保存成图片

    读取json格式的图片.文字并保存成图片 说明 从数据库中获取到图片.中文.英文信息后,将其合成json文件,图片格式为base64格式,需要将其转成二进制形式,然后将其保存成图片,将中文.英文信息保 ...

  2. matlab2018在图片上添加文字并保存且图片没有白边

    文章目录 图片添加文字并保存 去除白边 添加文字使用 text函数,难点在于保存,使用 getframe来捕获,然后使用 imwrite来保存,类似的教程网上很多,但是有的添加文字不是使用text函数 ...

  3. php怎么在图像中显示文字,照片写字软件|图片写字软件 怎么在照片上写文字 怎么在图片上写艺术字...

    现在智能手机拍摄像素的跨步提升,手机上的照片也是越来越多,单看着是不是有单调,想不想在照片上附上点点心情寄语什么的文字呢,(。・∀・)ノ゙嘿, 好叻,小编又来基础科普啦:今天的主题是图片写字软件,教大 ...

  4. 【FPGA】VGA显示文字、彩条、图片——基于DE2-115

    录 一.VGA概述 1.1 简述 1.2 管脚定义 1.3 行.场时序及分辨率 二.VGA显示文字 2.1 点阵汉字生成 2.2 工程建立 2.3 引入ip核-实现特定时钟频率+不同分辨率显示 2.3 ...

  5. html鼠标在图片上显示文字说明,鼠标路过图片,出现说明文字,是怎么做的?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 style.pixelTop = window.event.clientY + window.document.body.scrollTop + 9; } ...

  6. 图片在canvas中显示,给canvas添加文字,文字描边,将canvas保存成图片下载到本地

    Canvas简介 HTML5新增标签 Canvas API(画布)是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitma ...

  7. H5 画布解决跨域问题,画布保存为图片显示在页面上

    实现功能:uniapp  H5 使用画布,绘画完之后保存为图片全屏显示完整实现代码,跨域解决方案. 跨域图片解决方案一:(使用base64编码)网络图片放到画布里面绘画 跨域图片解决方案二:(使用本地 ...

  8. php怎么在图像中显示文字,怎么在图片上面加文字 人物图片中加文字或特效

    这是一个拍照和自拍的年代,照片处理也就成为后期常做的事了.很多人都会先把照片处理得美美的,再传网上晒照.你知道如何在人物图片上添加闪烁的文字做成GIF动态图片么?常有在人物图片加动态说明文字或特效以渲 ...

  9. html怎么把字放在图片上而不把图片设为背景音乐,左边是图片一直在替换,右边显示文字内容并配乐的视频怎么制作?照片制作视频软件...

    小编前段时间看到一个视频蛮有趣的,视频画面左边是几张图片添加了过渡效果切换着播放,右侧则是文字内容,整个视频配有好听的背景音乐.小编之前也就知道在视频的左侧放一张图片右侧加文字并配上背景音乐,这设置了 ...

最新文章

  1. git将代码提交到多个远程仓库
  2. 你可以不知道原因,但是,我们不能停止努力。httplook抓取路由配置界面信息...
  3. 去除重复数据的SQL语句
  4. 庞佐错觉_水晶球错觉
  5. vue key重复_【第2112期】 import { reactive } from #39;vue#39;
  6. linux 脚本调用企业微信_shell脚本实现企业微信报警
  7. Django 第十二课 【class meta】
  8. 进程相关概念与多线程的基本使用
  9. 精读《useEffect 完全指南》
  10. AotucCrawler 快速爬取美女图片
  11. mysql stmt attr set_mysqli_stmt::attr_set()
  12. 在移动硬盘上安装Deepin Linux 操作系统
  13. eclipse 导入项目后,在工程图标上出现红叉,但是工程中的文件并没有提示错误的解决方法
  14. 定义多边形类,继承产生矩形类和正多边形类
  15. 轻型异常在线检测器LODA:Lightweight on-line detector of anomalies
  16. 草图实时生成动漫角色!太秀了
  17. 《算法导论》学习(十七)----动态规划之钢条切割(C语言)
  18. R语言方差分析ANOVA
  19. python虚拟环境创建失败_python 创建虚拟环境时报错OSError, setuptools下载失败
  20. 用格里高利公式求给定精度的PI值 (15分)

热门文章

  1. 计算机专业毕业生找工作可考虑的公司官方招聘网站(持续更新ing...)
  2. at com.android.xiong.aysnctasktest.MainActivity$PageTask.onPostExecute(MainActivity.java:116)
  3. 20200812 java 笔记
  4. Copyright中的年份是什么意思
  5. 计算机桌面上无网络图标,电脑的网络图标消失了怎么恢复?
  6. node环境的CPU密集型与IO密集型介绍
  7. 高并发高流量的大型网站架构设计
  8. 网易Java服务器端实习生电话面试
  9. “字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛 1,2,3,4,5,7,8,9,10
  10. 第二章 搭建Istio