RSS Feed

Lisp Project of the Day

pango-markup

You can support this project by donating at:

Donate using PatreonDonate using Liberapay

pango-markuptext

This library allows processing a text with Pango Markup.

Pango Markup used by GTK to render attributed text. It is a simple SGML-like language. It looks like a subset of HTML but uses custom attributes.

Gnome's Pango library contains a parser for this format:

https://developer.gnome.org/pango/stable/pango-Markup.html

But :pango-markup is not a parser, it's purpose is to render text and attributes into this format.

You should provide it a plain text and a separate list of regions with attributes.

For example, is we would like to make the word "Bob" in "Hello Bob!", then we need to do:

POFTHEDAY> (pango-markup:markup-regions
            "Hello Bob!"
            '((6 9 :font (:weight :bold))))
"Hello <span font_weight='bold'>Bob</span>!"

;; Attributed ranges can be nested. Here we want
;; to underline the whole sentence and make "Bob" bold:

POFTHEDAY> (pango-markup:markup-regions
            "Hello Bob!"
            '((6 9 :font (:weight :bold))
              (0 10 :underline t)))
"<span underline='single'>Hello <span font_weight='bold'>Bob</span>!</span>"

If you want to use GTK from Common Lisp and output attributed text, :pango-markup will help you.

Here is full documentation to this library:

https://shinmera.github.io/pango-markup/

@shinmera's libraries have very nicely rendered documentation. Go, read it!


Brought to you by 40Ants under Creative Commons License