问题标签 [pango]

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 投票
1 回答
1934 浏览

cairo - Pango 无法使用 librsvg 找到字体

我正在使用 librsvg 将 SVG 文件渲染到 Cairo 上下文。之后,我使用 Pango 在顶部“手动”渲染一些文本。

渲染 SVG 时,我收到 Pango 警告说它无法加载字体:
"couldn't load font "'Calibri' Not-Rotated 16", falling back to "Sans Not-Rotated 16", expect ugly output."

之后通过 Pango 进行的手动文本渲染工作得非常好。我尝试了多种不同的字体系列,它们都渲染得很好,没有任何警告。

我什至浏览了 librsvg 源代码以了解它是如何使用 Pango 的,但我看不出与我所做的任何重大差异。

我不知道如何继续调试这个问题,任何关于 Pango 如何在 Windows 下定位字体以及可能影响其查找字体能力的建议都非常感谢。

如果这很重要:
我从这里下载了所有需要的二进制文件:http: //sourceforge.net/projects/ezwinports/files/

0 投票
1 回答
187 浏览

gtk - 获取适合 Pango 布局的最大文本行数?

我在 GTK 窗口内的 Cairo 上下文中使用 Pango。如何计算该区域内可以容纳多少文本行和列?

0 投票
2 回答
7492 浏览

gtk - GtkWindow 和 GdkWindow 的区别?

在我的 Gtk-Gdk-Cairo-Pango 应用程序的开头,我创建了窗口:

首先,有GtkWindow,但gtk_create_window返回GtkWidget,没有GtkWindow,为什么?

然后,一些功能,如gdk_window_process_updates(..)require GdkWindow*

gtk_window_set_geometry_hints()另一方面需要GtkWindow*.

在文档中也GdkWindow* gdk_window_new()有返回GdkWindow

当然有文件说

GdkWindow 是屏幕上的一个矩形区域。它是一个低级对象,用于在 GTK+ 级别上实现 GtkWidget 和 GtkWindow 等高级对象。GtkWindow 是一个顶层窗口,用户可能会认为它是一个带有标题栏等的“窗口”;一个 GtkWindow 可能包含许多 GdkWindow。

但它仍然没有告诉我,何时以及为什么应该创建 Gtk 或 Gdk 窗口?这里要遵循的模式是什么?

现在你问,我要解决什么特别的问题?当然,我尝试在鼠标移动之后在 gtk+gdk 之上使用 cairo+pango 绘制文本。问题是,虽然实际绘图似乎执行得很快,但我无法让它在鼠标移动时完全发生。在我motion_notify_event的调用gtk_widget_queue_draw(GtkWidget)中,但实际鼠标在屏幕上的移动明显滞后,即使我绘制单个字符,它在移动阶段也没有与鼠标指针对齐,只有在鼠标停止后才捕捉到它。

我尝试的是通过调用来加速更新gdk_window_process_updates(GDK_WINDOW(window), false);,编译器吃掉它,但我得到了运行时断言:Gdk-CRITICAL **: gdk_window_process_updates: assertion 'GDK_IS_WINDOW (window)' failed. 我找不到有关此宏以及如何/何时使用它的任何信息。

0 投票
1 回答
2230 浏览

python - 无法在 python2 中导入 pango

我正在按照本教程设置和训练 Tesseract 3 OCR 工具。一些脚本使用 Pango。当我运行脚本时,Python 无法导入 Pango。

我已尝试安装以下软件包,并尝试从头开始构建 Pango 和 Cairo,详见此处

我错过了什么?有没有我没有安装/构建的库?

0 投票
0 回答
380 浏览

python - GTK3,Pango - 在TextView中将混合大小写文本呈现为大写?

呈现文本的最有效方法是什么,在TextBuffer任何情况下都可能是大写的 a TextView

它不适用于整个文本,仅适用于其中的特定样式 - 并且需要保留该部分的原始大写,以防用户将文本样式更改回非大写样式。

因此,如果文本的相关部分可以用一个TextTag理想的标记来标记,但没有完全大写的标记(有一个 small_caps 字体变体,由于某种原因,它似乎在 textview 中不起作用) -可以创建一个自定义的 TextTag 属性,如“all_caps”,如果可以,它将如何实现?

其他想法会覆盖 textview 绘制功能(听起来很痛苦)或可能创建辅助TextBuffer并动态更改文本大小写?

更新:

对于这个应用程序,最好的方法可能是截取PangoTextBuffer(from TextView's do_draw,我认为) 传递给的字符串并即时更改它:对于此应用程序中的其他文本样式,需要添加一些额外的文本字符 (这是一个编剧应用程序,所以有一个“Parenthical”风格,不出所料,它总是包含在括号中——这些应该作为风格的一部分添加,而不是依赖于用户添加它们)

所以更新的问题是:一个子类/猴子代码/某物//Pango如何拦截传递给(连同它的)的字符串,以便根据其样式更改/添加它?PangoCairoGtk+ 3PangoTextTagsTextTag

0 投票
1 回答
1273 浏览

ruby - 潘戈+开罗;是否有现有的方法来处理文本中的样式标签?

Pango 语法支持一些纯文本标记。据我所知,这也没有扩展到嵌入图像。

环顾四周,我找不到太多现有实现的方式,但我之前没有做过 pango+cairo 的工作,所以我可能会错过明显的社区。

据我所知,一种合理的方法是分析一个字符串,提取任何标签,创建 cairo 图像,然后相应地修改它们周围的 pango 布局。

这似乎也有人可能以前做过。

我专门寻找这些问题的答案:

  1. pango+cairo 是否已经解决了这个问题,而我只是误读了文档?
  2. 以前有过这样的事情吗,参考文献在哪里?
  3. 这是一种合理的方法,还是我应该尝试其他方法,以及什么?

(还要注意我使用的是 ruby​​,所以这可能会影响我的选择)

0 投票
1 回答
144 浏览

gtk - 从 Gtk.FontButton 设置 Pango.FontDescription

在我的首选项对话框中,我有一个 Gtk.FontButton 供用户选择字体,稍后我从 get_font_name () 字符串创建一个新的 Pango.FontDescription。问题是从未设置字体的大小。

这打印Font: Sans 12, Size: 0

from_string的文档说“SIZE 是一个十进制数(大小以磅为单位)或可选地后跟单位修饰符“px”表示绝对大小。” 这似乎表明 in 的大小Sans 12格式错误。但是 FontButton 的文档说“如果你想用字体渲染某些东西,请将此字符串与 from_string 一起使用”。

我在这里想念什么?

0 投票
2 回答
1223 浏览

gtk - 如何使用 Pango 在 Clutter.Text 中设置行高

我想要一个Clutter.Text 使用 Gtk.Pango显示具有双行距的文本。

注意:在 css 中,我们会使用line-height: 200%I think。

我尝试了这段代码,但它没有用:

显然,Clutter.Text保留了Pango.Layout的缓存版本

有没有办法做到这一点?

0 投票
3 回答
3125 浏览

freetype - undefined reference to `hb_ft_font_create' on linux

When compiling pango I get this error:

I've compiled freetype and harfbuzz; also I pass -lfreetype and -lharfbuzz in LIBS variable.

0 投票
1 回答
360 浏览

utf-8 - Pango 选择多种字体

我想在我的 pango 软件中使用三种字体:

  • 字体 1:拉丁文、Crylic 字符
  • Font2:韩文字符
  • Font3:日文字符

Pango 正确渲染文本,但我想选择一种字体

有什么方法可以表明这种偏好 pango 字体?

我使用:linux和pango 1.29