Pango: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>SchlurcherBot
m Bot: http → https
 
imported>InternetArchiveBot
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
 
Line 1: Line 1:
{{short description|Library for text rendering}}
{{short description|Library for text rendering}}
{{Other uses}}
{{Other uses}}
{{use DMY dates|date=July 2025}}
{{Infobox software
{{Infobox software
| name                 = Pango
| name         = Pango
| title               =  
| title       =
| logo           = Pango-name.svg
| logo         = Pango-name.svg
| logo size     = 200px
| logo size   = 200px
| logo caption             = Pango name written as intended, Greek ''pan'' (παν, "all") and Japanese ''go'' (語, "language")
| logo caption = Pango name written as intended, Greek ''pan'' (παν, "all") and Japanese ''go'' (語, "language")
| collapsible         =  
| 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]]
| 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]]
| developer            = [[Behdad Esfahbod]]
| developer            = [[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>
| 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>
Line 15: Line 16:
| programming language = [[C (programming language)|C]]
| programming language = [[C (programming language)|C]]
| operating system    = [[Unix-like]], [[Microsoft Windows]], Other
| operating system    = [[Unix-like]], [[Microsoft Windows]], Other
| platform            =  
| platform            =
| size                =  
| size                =
| language            =  
| language            =
| language count      = <!-- DO NOT include this parameter unless you know what it does -->
| language count      =
| language footnote    =  
| language footnote    =  
| genre                = [[Library (computing)|Software development library]]
| genre                = [[Library (computing)|Software development library]]
| license              = [[LGPL]]
| license              = [[LGPL]]
| alexa                =  
| alexa                =
| website              = {{URL|https://www.pango.org}}
| website              = {{URL|https://www.gtk.org/docs/architecture/pango}}
| standard            =  
| standard            =
| AsOf                =  
| AsOf                =
}}
}}


'''Pango''' (stylized as Παν語) is a text (i.e. [[glyph]]) layout engine [[library (computing)|library]] which works with the [[HarfBuzz]] shaping engine for displaying multi-language text.<ref>{{cite web
'''Pango''' (stylized as Παν語) is a text (i.e. [[glyph]]) layout engine [[library (computing)|library]] which works with the [[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>
| url       = https://www.pango.org/
| title     = Pango website
| access-date = 7 July 2011}}</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]] and [[FreeType]], as text rendering [[Front and back ends|backend]]s. Pango-processed text will appear similar under different operating systems.{{clarify|date=November 2012}}
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]] and [[FreeType]], as text rendering [[Front and back ends|backend]]s. Pango-processed text will appear similar under different operating systems.{{clarify|date=November 2012}}
Line 38: Line 36:


== History and naming ==
== History and naming ==
The name pango comes from Greek ''pan'' ([[wikt:παν|παν]], {{gloss|all}}) and Japanese ''go'' ([[wikt:語|語]], {{gloss|language}}).<ref>{{cite web
The name pango comes from Greek ''pan'' ([[wikt:παν|παν]], {{gloss|all}}) and Japanese ''go'' ([[wikt:語|語]], {{gloss|language}}).<ref>{{cite web|url=https://www.ibm.com/developerworks/library/l-u-pango1/|title=The Pango connection: Part 1|website=[[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>
| url         = http://www.ibm.com/developerworks/library/l-u-pango1/
| title       = The Pango connection: Part 1
| website = [[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 = 7 July 2011
| url-status = live}}</ref>


In January 2000, the merger of the GScript and GnomeText projects was named Pango.<ref>[https://people.redhat.com/otaylor/pango-mirror/status-000114.shtml Pango - Status - 2017-11-30], Owen Taylor, Redhat</ref><ref>[http://linuxdevcenter.com/pub/a/linux/2000/03/21/guadec/guadec.html?page=2 GNOMEs in Paris: A Report from GUADEC], ''The most impressive part of their presentation was the discussion on Pango (the result of the GScript and GnomeText merger)'', 2000/03/21, By Chuck Toporek - O'Reilly Media</ref><ref>[http://www.levien.com/gnome/pango-0.1.html Pango proposal, rev 0.1], Raph Levien, 28 July 1999</ref><ref>[https://web.archive.org/web/20000815092557/http://people.redhat.com/otaylor/gscript/ GScript - Unicode and Complex Text Processing], ''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>[http://www.levien.com/gnome/gnome-text.html Gnome-Text API documentation], Raph Levien, 10 Jul 1999, ''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=2013-06-02}} ''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>
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=2013-02-20 |url-status=dead |archive-url=https://web.archive.org/web/20020402201452/http://gtk.org/pango-1.0.0-announce.html |archive-date=April 2, 2002 }}</ref><ref>[https://mail.gnome.org/archives/gnome-announce-list/2002-March/msg00022.html GTK user interface libraries, version 2.0]</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==
==Support for OpenType features==
Line 110: Line 101:
==External links==
==External links==
* {{Official website}}
* {{Official website}}
* [http://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://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://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://developer.gnome.org/pango/stable/ Pango Reference Manual]
* [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]] 2017 Simon Cozens explained the rendering of fonts
* {{YouTube|Is4PW6f4Pk4|The journey of a word: how text ends up on a page}}, at [[linux.conf.au]] 2017 Simon Cozens explained the rendering of fonts



Latest revision as of 11:43, 30 July 2025

Template:Short description Script error: No such module "other uses". Template:Use DMY dates Script error: No such module "Infobox".Template:Template other Script error: No such module "Check for unknown parameters".Script error: No such module "Check for conflicting parameters".

Pango (stylized as Παν語) is a text (i.e. glyph) layout engine library which works with the HarfBuzz shaping engine for displaying multi-language text.[1]

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 and FreeType, as text rendering backends. Pango-processed text will appear similar under different operating systems.Script error: No such module "Unsubst".

Pango is a special-purpose library for text and not a general-purpose graphics rendering library such as Cairo, 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".[2]

History and naming

The name pango comes from Greek pan (παν, Template:Gloss) and Japanese go (, Template:Gloss).[3]

In January 2000, the merger of the GScript and GnomeText projects was named Pango.[4][5][6][7][8][9]

Pango version 1.0.0 was released 11 March 2002.[10][11]

Support for OpenType features

File:Pango locl demo.png
Default rendering above, localized Romanian rendering below.

Pango 1.17 and newer support the 'Template:Not a typo' feature tag that allows localized glyphs to be used for the same Unicode code point. Assuming you have Verdana version 5.01 installed, which supports the 'locl' feature for the latn/ROM (Romanian) script, a quick demonstration (on Linux) is:

for lang in en ro
do
    pango-view \
        --font="Verdana 64" \
        --text "şţ vs. șț in $lang" \
        --language=$lang
done

For an explanation of the substitutions rules for Romanian, see this discussion.

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 Pango markup, e.g.:

pango-view \
    --font="Verdana 24" \
    --markup \
    --text 'In the same text: şţ(en) and <span lang="ro">şţ(ro).</span>'

Since 1.37.1, Pango added more attributes to provide complete support for processing OpenType feature.[12][13][14]

The official showcase of Pango's script-aware features is here.

Major users

File:GTK+ software architecture.svg
Simplified software architecture of GTK. Pango, GDK, ATK, GIO, Cairo and GLib.

Pango has been integrated into most Linux distributions. The GTK UI toolkit uses Pango for all of its text rendering.[15] The Linux versions of the Mozilla Firefox web browser and Mozilla Thunderbird mail client use Pango for text rendering.[16]

See also

Script error: No such module "Portal".

References

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "citation/CS1".
  2. Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1".
  4. Script error: No such module "citation/CS1".
  5. Script error: No such module "citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".
  8. Script error: No such module "citation/CS1".
  9. Script error: No such module "citation/CS1".
  10. Script error: No such module "citation/CS1".
  11. Script error: No such module "citation/CS1".
  12. Script error: No such module "citation/CS1".
  13. Script error: No such module "citation/CS1".
  14. Script error: No such module "citation/CS1".
  15. Script error: No such module "citation/CS1".
  16. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

External links

Template:Free and open-source typography Script error: No such module "Navbox".