# Pango

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Pango
> Markdown URL: https://mediated.wiki/source/Pango.md
> Source: https://en.wikipedia.org/wiki/Pango
> Source revision: 1355180621
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

{{short description|Library for text rendering}}
{{Other uses}}
{{use DMY dates|date=July 2025}}
{{Infobox software
| name         = Pango
| title        =
| logo         = Pango-name.svg
| logo size    = 200px
| logo alt     = Pango name written as intended, it consist of Greek ''pan'' (παν, "all") and Japanese ''go'' (語, "language")
| logo caption = Pango name written as intended
| collapsible  = 
| author       = Owen Taylor<ref>[https://www.osnews.com/story/5453 Interview: Red Hat's Owen Taylor on GTK+], '' also known for his contributions on Pango.'', by Eugenia Loli, 19th Dec 2003</ref><br />[Raph Levien](/source/Raph_Levien)
| developer            = [Behdad Esfahbod](/source/Behdad_Esfahbod)
| released             = {{Start date and age|1999|07|11|df=yes}}<ref>[https://people.redhat.com/otaylor/pango-mirror/download.shtml Pango], Made version 0.2, Owen Taylor, redhat.com</ref>
| latest release version = {{wikidata|property|edit|reference|P348}}
| latest release date    = {{start date and age|{{wikidata|qualifier|P348|P577}}}}
| programming language = [C](/source/C_(programming_language))
| operating system     = [Unix-like](/source/Unix-like), [Microsoft Windows](/source/Microsoft_Windows), Other
| platform             =
| size                 =
| language             =
| language count       =
| language footnote    = 
| genre                = [Software development library](/source/Library_(computing))
| license              = [LGPL](/source/LGPL)
| alexa                =
| website              = {{URL|https://www.gtk.org/docs/architecture/pango}}
| standard             =
| AsOf                 =
}}

'''Pango''' (stylized as Παν語) is a text (i.e. [glyph](/source/glyph)) layout engine [library](/source/library_(computing)) which works with the [HarfBuzz](/source/HarfBuzz) shaping engine for displaying multi-language text.<ref>{{cite web|url=https://www.gtk.org/docs/architecture/pango|title=Pango website|access-date=19 July 2025}}</ref>

Full-function rendering of text and cross-platform support is achieved when Pango is used with platform APIs or third-party libraries, such as [Uniscribe](/source/Uniscribe) and [FreeType](/source/FreeType), as text rendering [backend](/source/Front_and_back_ends)s. Pango-processed text will appear similar under different operating systems.{{clarify|date=November 2012}}

Pango is a special-purpose library for text and not a general-purpose graphics rendering library such as [Cairo](/source/Cairo_(graphics)), with which Pango can be used. The Cairo documentation recommends Pango be used to "render" text rather than Cairo for all but the simplest text "rendering".<ref>{{cite web|url=https://cairographics.org/manual/cairo-text.html|title=Cairo: A Vector Graphics Library: text|access-date=27 November 2015}}</ref>

== History and naming ==
The name pango comes from Greek ''pan'' (παν, {{gloss|all}}) and Japanese ''go'' (語, {{gloss|language}}).<ref>{{cite web|url=https://www.ibm.com/developerworks/library/l-u-pango1/|title=The Pango connection: Part 1|website=[IBM](/source/IBM)|archive-url=https://web.archive.org/web/20090627223318/http://www.ibm.com/developerworks/library/l-u-pango1/|archive-date=27 June 2009|access-date=19 July 2025|url-status=dead}}</ref>

In January 2000, the merger of the GScript and GnomeText projects was named Pango.<ref>{{cite web|url=https://people.redhat.com/otaylor/pango-mirror/status-000114.shtml|title=Pango - Status - 2017-11-30|author=Owen Taylor|publisher=Redhat}}</ref><ref>{{cite web|url=https://linuxdevcenter.com/pub/a/linux/2000/03/21/guadec/guadec.html?page=2|title=GNOMEs in Paris: A Report from GUADEC|quote=''The most impressive part of their presentation was the discussion on Pango (the result of the GScript and GnomeText merger)''|date=21 March 2000|author=Chuck Toporek|publisher=O'Reilly Media|url-status=dead|access-date=19 July 2025|archive-date=1 December 2017|archive-url=https://web.archive.org/web/20171201031331/http://www.linuxdevcenter.com/pub/a/linux/2000/03/21/guadec/guadec.html?page=2}}</ref><ref>{{cite web|url=https://www.levien.com/gnome/pango-0.1.html|title=Pango proposal, rev 0.1|author=Raph Levien|date=28 July 1999|access-date=19 July 2025}}</ref><ref>{{cite web|url=https://people.redhat.com/otaylor/gscript/|archive-url=https://web.archive.org/web/20000815092557/http://people.redhat.com/otaylor/gscript/|url-status=live|archive-date=15 August 2000|access-date=21 July 2025|title=GScript - Unicode and Complex Text Processing|quote=''The GScript project has been merged with the GnomeText project. For information about the result, named Pango, see:https://www.pango.org If you have trouble accessing that site, there is a mirror here. By Owen Taylor''}}</ref><ref>{{cite web|url=https://www.levien.com/gnome/gnome-text.html|title=Gnome-Text API documentation|author=Raph Levien|date=10 Jul 1999|quote=''Owen Taylor is working on gscript, which has some overlap with the functions described in this interface. We're working on unifying the two api's as much as possible.''}}</ref><ref>{{cite web|url=http://beast.testbit.eu/_mirror/gnome-news/946276088.html|title=GNOME Developer's Interview Follow-up|first=Ali|last=Abdin|date=1999|website=beast.testbit.eu|url-status=dead|archive-url=https://web.archive.org/web/20130602195924/http://beast.testbit.eu/_mirror/gnome-news/946276088.html|archive-date=2 June 2013|quote=''Pango (which is the code name for a merger of my Gscript project and Raph Levien's GnomeText project) is a modular set of libraries for doing layout and rendering of international text. It's a bit similar to Microsoft's Uniscript or Apple's ATSUI.''}}</ref>

Pango version 1.0.0 was released 11 March 2002.<ref>{{cite web|url=http://gtk.org/pango-1.0.0-announce.html|title=Pango 1.0.0 released|access-date=20 February 2013|url-status=dead|archive-url=https://web.archive.org/web/20020402201452/http://gtk.org/pango-1.0.0-announce.html|archive-date=2 April 2002}}</ref><ref>{{cite web|url=https://mail.gnome.org/archives/gnome-announce-list/2002-March/msg00022.html|title=GTK user interface libraries, version 2.0|access-date= 19 July 2025}}</ref>

==Support for OpenType features==
thumb|250px|Default rendering above, localized Romanian rendering below

Pango 1.17 and newer support the '{{not a typo|locl}}' feature tag that allows localized glyphs to be used for the same Unicode code point. Assuming you have [Verdana](/source/Verdana) version 5.01 installed, which supports the 'locl' feature for the latn/ROM (Romanian) script, a quick demonstration (on Linux) is:
<syntaxhighlight lang="bash">
for lang in en ro
do
    pango-view \
        --font="Verdana 64" \
        --text "şţ vs. șț in $lang" \
        --language=$lang
done
</syntaxhighlight>

For an explanation of the substitutions rules for Romanian, see this [discussion](/source/Romanian_alphabet).

Setting the locale via the POSIX environment variable, e.g. LANG=ro_RO.UTF-8 will also cause Pango to use 'locl' font feature. Finally, you can change the language on the fly in the same text using [https://docs.gtk.org/Pango/pango_markup.html Pango markup], e.g.:
<syntaxhighlight lang="bash">
pango-view \
    --font="Verdana 24" \
    --markup \
    --text 'In the same text: şţ(en) and <span lang="ro">şţ(ro).</span>'
</syntaxhighlight>

Since 1.37.1, Pango added more attributes to provide complete support for processing OpenType feature.<ref>{{cite web
 | url        = https://ftp.gnome.org/pub/GNOME/sources/pango/1.37/pango-1.37.1.news
 | title      = Overview of changes between 1.37.0 and 1.37.1
 | access-date = 18 August 2015}}</ref><ref>{{cite web
 | url        = https://bugzilla.gnome.org/show_bug.cgi?id=738505
 | title      = Bug 738505 - Add fontfeatures support in PangoAttributes and markup
 | publisher  = GNOME Bugzilla
 | access-date = 18 August 2015}}</ref><ref>{{cite web
 | url        = http://tavmjong.free.fr/blog/?p=1442
 | title      = Font Features Land in Inkscape Trunk
 | publisher  = Tavmjong Bah's Blog
 | date       = 23 June 2015
 | access-date = 18 August 2015}}</ref>

==Major users==
[[File:GTK+ software architecture.svg|thumb|Simplified software architecture of [GTK](/source/GTK). Pango, [GDK](/source/GDK), [ATK](/source/Accessibility_Toolkit), [GIO](/source/GIO_(software)), [Cairo](/source/Cairo_(graphics)) and [GLib](/source/GLib).]]

Pango has been integrated into most Linux distributions. The [GTK](/source/GTK) UI toolkit uses Pango for all of its text rendering.<ref>{{cite web|title=Download for GNU/Linux and Unix|url=http://www.gtk.org/download/linux.php|website=gtk.org|access-date=2017-11-30|url-status=dead|archive-url=https://web.archive.org/web/20160818111012/http://www.gtk.org/download/linux.php|archive-date=18 August 2016}}</ref> The [Linux](/source/Linux) versions of the [Mozilla Firefox](/source/Mozilla_Firefox) web browser and [Mozilla Thunderbird](/source/Mozilla_Thunderbird) mail client use Pango for text rendering.<ref>{{cite web|title=Thunderbird 52.1.0 System Requirements|url=https://www.mozilla.org/en-US/thunderbird/52.1.0/system-requirements/|website=mozilla.org|access-date=31 July 2017|url-status=live|archive-url=https://web.archive.org/web/20170510012333/https://www.mozilla.org/en-US/thunderbird/52.1.0/system-requirements/|archive-date=10 May 2017}}</ref>

==See also==
{{Portal|Free and open-source software}}
* [HarfBuzz](/source/HarfBuzz) (text shaping engine which is incorporated into Pango itself but can be also used stand-alone)
* [Core Text](/source/Core_Text) (modern multilingual text rendering engine introduced in [Mac OS X 10.5](/source/Mac_OS_X_10.5))
* [Graphite](/source/Graphite_(smart_font_technology)) (multiplatform open source smart-font renderer)
* [WorldScript](/source/WorldScript) (Old Macintosh multilingual text rendering engine)
* [Typographic ligature](/source/Typographic_ligature)
* [Computer font](/source/Computer_font)

==References==
{{Reflist|30em}}

==External links==
* {{Official website}}
* {{webarchive |url=https://web.archive.org/web/20180112034541/http://www.pango.org/ScriptGallery |title=Script Gallery - Pango |date=2018-01-12}}
* [https://fishsoup.net/bib/PangoIuc25-paper.pdf Pango, an open-source Unicode text layout engine. by Owen Taylor in Twenty fifth Internationalization and unicode conference, April 2004]. {{Webarchive|url=https://web.archive.org/web/20200706025551/http://fishsoup.net/bib/PangoIuc25-paper.pdf|date=2020-07-06}}.
* [https://web.archive.org/web/20120227064838/http://ols.fedoraproject.org/OLS/Reprints-2001/taylor.pdf "Pango: internationalized text handling" Owen Taylor in Ottawa linux symposium 2001]
* [https://docs.gtk.org/Pango/ Pango Reference Manual]
* {{YouTube|Is4PW6f4Pk4|The journey of a word: how text ends up on a page}}, at [linux.conf.au](/source/linux.conf.au) 2017 Simon Cozens explained the rendering of fonts

{{Free and open-source typography}}
{{Freedesktop.org}}

Category:1999 software
Category:C (programming language) libraries
Category:Free computer libraries
Category:Free software programmed in C
Category:Freedesktop.org libraries
Category:GNOME libraries
Category:GTK
Category:Software that uses Meson
Category:Text rendering libraries

---
Adapted from the Wikipedia article [Pango](https://en.wikipedia.org/wiki/Pango) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Pango?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
