问题标签 [pangocairo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
110 浏览

linux - 是否可以通过 fontconfig 或 pango 获得字体中所有字符的最小上升?

我可以在 pango 中看到我们可以查询最大上升(即从水平基线到最高“字符”坐标的垂直距离)。

但我也需要最低限度的上升。这可以通过 pango/fontconfig 或其他库实现吗?(Linux)

0 投票
1 回答
5514 浏览

pdf-generation - gnuplot中的pdfcairo'未知或不明确的终端类型'

将 gnuplot 从 4.6 升级到5.0.1后,我遇到以下错误:

我该如何解决?

PS:pdfcairo在以前的版本(4.6)中工作正常。

我通过以下命令安装 gnuplot:

GNUPLOT 版本 5.0.1 发行说明中所述pdfcairo,默认情况下包含 。

Cairo/pango/wxWidgets 这套终端包括

pngcairo、pdfcairo、epscairo 和 cairolatex 用于输出到文件

用于交互显示的 wxt 如果配置脚本找到所需的 libcairo、libpango、libcairo、libwxgtk 和相关支持库,所有这些都将默认构建 要禁用这些终端:

./configure --without-cairo ./configure --with-cairo --disable-wxt

0 投票
1 回答
1732 浏览

c++ - 在 Cairo 曲面之前创建 Pango 布局

在我的应用程序中,我使用 Pango 和 Cairo 创建文本纹理。这些纹理的宽度是固定的,但应该缩放它们的高度以适应文本内容。在这种情况下,父对象将缩放它们的高度以匹配文本。

问题是,我初始化 Pango 和 Cairo 的方式不允许这样做。目前,该系统由以下人员设置:

它固定了高度,至少是表面的高度——这是我不想做的事情,至少不是一直都不想做。

我的理解是,如果没有指定布局高度,它会自动缩放高度,然后可以通过pango_layout_get_size(). 我想先创建布局,然后使用此函数的输出创建表面。

但是,pango_cairo_create_layout()需要已经创建表面,并且我一直无法找到pango_layout_new()通过 Cairo 渲染布局的方法。API 记录了渲染函数之一pango_cairo_update_layout(),指定pango_cairo_create_layout()必须用于创建布局;然而,更重要的功能,pango_cairo_show_layout()没有这样的要求,我不确定这是否意味着允许任何 Pango 布局。虽然我可以测试它是否有效,但我担心反复试验可能会导致我出现未定义的行为。

我觉得我陷入了先有鸡还是先有蛋的境地,Pango 的文档主要是 API 参考,几乎没有解释如何使用该库。有没有办法正确地做到这一点?

0 投票
1 回答
390 浏览

gtk# - pango_cairo_layout_path 方法不遵守字距调整

我正在使用 pango 库来做一些文本布局和 cairo 后端进行渲染。在我看来 pango_cairo_layout_path 方法不尊重字距调整。

我正在使用 gtk# 项目提供的 pango 和 cairo 的 c# 绑定。此外,我正在使用也与 gtk# 项目一起提供的 pango-cairo 运行时。

这是演示问题的图像(字体:Arial)

第一行来自 Inkscape 渲染,第二行来自 pango-cairo

pango/cairo 中是否有任何已知的错误?...或者我做错了什么

你知道有什么解决办法吗...

提前致谢

0 投票
1 回答
863 浏览

memory-leaks - Pango 内存泄漏

我在目前正在 MacOSX 上编译的试驾应用程序中使用 Pango 库和 Cairo,没有 GTK。我有一个内存泄漏问题,我已经追踪到这个函数:

这个例程被调用了很多次,可能在一秒钟内被调用了一百次。并且内存泄漏很大,3 秒内大约 30MB,并且具有恒定的速率。当我比较这段代码时,对我来说似乎很好。我已经搜索过这个,在 Gtk 应用程序中使用 pango 时发现了许多关于内存泄漏的引用,并且他们都在 pango 或 gtk 中寻找补丁。我真的很困惑,不敢相信在像 pango 这样的大量使用的库中会有这样的错误,并认为这是我自己的代码的问题。任何建议表示赞赏。

这是 Uli 代码的 vmmap 结果:

这是最后阶段的未过滤输出:

我省略了不可写区域部分,因为它溢出了 stackoverflow 限制!

0 投票
0 回答
191 浏览

cairo - cairocffi 使用 pango 引发错误

在这段代码的最后一行 cairocffi 给出了一个奇怪的错误

这里可能是什么问题?

0 投票
1 回答
447 浏览

c - C - Gtk3- Cairo - DrawArea - 平面笛卡尔 - 我如何添加文本?

我的目的(用于个人练习)是创建一个平面笛卡尔,我代表一些数学函数。因此我需要交易坐标,如何在 DrawArea 上添加文本?我进行了搜索,但没有找到关于使用 gtk3-C 绘制文本的任何内容(示例 ecc)。

其他,您是否有一些关于 DrawArea- Cairo-Pango 的教程指南或其他关于与 gtk3 一起使用的图形 2d-3d 的教程指南?

PS:我是初学者,但是为什么有人说 gtk/c 不好呢?只是因为更复杂?多谢你们

0 投票
0 回答
67 浏览

c - cairo draw_text 和在逐项行上的悬空指针?

我尝试使用 cairo 在屏幕上绘制文本,但 mac Os X 仪器告诉我,我有由 pango_layout_get_pixel_size 或 pango_layout_get_baseline 引起的悬空指针 ..实际上是第一个需要 PangoLines 并将它们存储在 Layout 变量中的函数。在文档和示例中显示的每个代码中,您都必须在最后使用 g_object_unref(layout) ......但仍然......那些由 itemized_state_init 分配的指针(在 pango_layout_get_pixel_size 内)没有被释放。

难道我做错了什么 ?

以及 Instrument 中的分配结果

在此处输入图像描述

感谢任何回复!

编辑:这是使用 G_SLICE=always-malloc G_DEBUG=gc-friendly 后的新屏幕截图。那些悬空的指针变成了“仪器”的漏洞

在此处输入图像描述

编辑(未找到解决方案):

我下载了 pango-1.40.3 的源代码,编译它并用我自己的标记安装它,我不明白为什么我在 MacOS 上有那些悬空指针,因为我正在经历:pango_layout_finalizepango_layout_clear_lineslayout- >ref_count=0当我调用g_obejct_unref (布局)

0 投票
1 回答
1803 浏览

python - 将 PangoCairo 与 PyGObject API 一起使用

我正在移植一个 Python2 脚本,该脚本使用 Pango 将文本绘制到开罗表面。pangocairo使用带有包的旧 PyGtk API 可以正常工作。我的系统(Debian Jesse)没有用于 PyGtk 的 Python3 包,而是使用带有 PyGObject API 的较新的 Gtk+ 库。

我想创建一个pangocairo.CairoContext对象,但新 API 中似乎缺少它。该PangoCairo包有一个create_context()功能,但它生成一个PangoContext没有我需要的方法的对象。

到目前为止,我有这个:

有效的旧 Python2 代码:

有人对此有解决方案吗?是否有任何关于如何PangoCairo与新 API 一起使用的好的文档?

0 投票
1 回答
194 浏览

gtk - 我可以在没有 gtk_init() / gtk_main() 的情况下使用 GtkTextView 小部件吗?

我目前使用 cairo/pango 从动态文本生成原始图像数据。我的应用程序不是 Gtk+ GUI 应用程序,只是本机 C++ 无头视频服务器。使用动态文本,我为叠加层生成原始图像,然后将它们与服务器处理并通过网络分发的视频流进行 alpha 混合。该文本不涉及文本编辑,但给定文本,我会生成适合 Alpha 混合的相应图像叠加层。

但是,我需要更多的格式灵活性(缩进、中心对齐等)。在 cairo/pango 中进行大量格式化是很痛苦的。

我一直在研究 GtkTextView/GtkTextBuffer API,我认为使用 GtkTextTag 更容易格式化。这些小部件显然具有广泛的编辑功能,但我只需要格式化功能。

问题:我可以在不通过 gtk_init()/gtk_main() 运行主 gtk+ 循环的情况下使用 GtkTextView/GtkTextBuffer/GtkTextTag吗?

问题:在所有标签都格式化文本,如何获取对原始格式化缓冲区(cairo 图像表面或小部件 pixbuf)的引用?

我一直在使用 gtk_widget_get_pango_context()、pango_layout_new()、gtk_widget_create_pango_layout() 等例程,但由于没有屏幕而出现各种错误。

编辑:附加信息:我要做的基本上是仅使用 GtkTextView/GtkTextBuffer/GtkTextTag 例程作为一种独立库,用于生成渲染和格式化文本的图像数据。

谢谢,-安德烈斯