Behdad Esfahbod's daily notes on GNOME, Pango, Fedora, Persian Computing, Bob Dylan, and Dan Bern!

My Photo
Location: Toronto, Ontario, Canada

Ask Google.

Contact info
Hacker Emblem Become a Friend of GNOME I Power Blogger
follow me on Twitter
July 2003
August 2003
October 2003
November 2003
December 2003
March 2004
April 2004
May 2004
July 2004
August 2004
September 2004
November 2004
March 2005
April 2005
May 2005
June 2005
July 2005
August 2005
September 2005
October 2005
November 2005
December 2005
January 2006
February 2006
March 2006
April 2006
May 2006
June 2006
July 2006
August 2006
September 2006
October 2006
November 2006
December 2006
January 2007
February 2007
March 2007
April 2007
May 2007
June 2007
July 2007
August 2007
September 2007
October 2007
November 2007
December 2007
January 2008
February 2008
March 2008
April 2008
May 2008
June 2008
July 2008
August 2008
October 2008
November 2008
December 2008
January 2009
March 2009
April 2009
May 2009
June 2009
July 2009
August 2009
November 2009
December 2009
March 2010
April 2010
May 2010
June 2010
July 2010
October 2010
November 2010
April 2011
May 2011
August 2011
September 2011
October 2011
November 2011
November 2012
June 2013
January 2014
May 2015
Current Posts
McEs, A Hacker Life
Monday, May 14, 2007
 Advanced OpenType Features in Pango

Last week I worked on bringing Pango's OpenType engine into shape. Something that has been long overdue. Not anymore.

Pango can now select arbitrary OpenType script and language systems, and in near future arbitrary OpenType features too. The basic, arabic, and syriac modules are ported to use these features. More modules to follow.

Finishing off that feature is addition of another one, that pango will read env vars PANGO_LANGUAGE or LANGUAGE and use that for making better guesses to tag runs of text with languages.


First window is rendering of Pango's test-mixed.txt using the command line pango-view tool.

Second window is the same, but with env var PANGO_LANGUAGE="en:ur". As you can notice, an Arabic font more suitable in style for Urdu is selected instead of my default Persian fonts.

Third window is vertical rendering of the same text. If you look at the last, Japanese, line, in the vertical window, the brackets around the text are correctly rotated, unlike previous versions of Pango.

This and previous works are all in Pango 1.17.0.

Labels: ,

Nice work.

But why is the one kanji character in the last sentence rendered with a different font?
Behdad, it's nice to see some results with Pango. Could you please demonstrate the new functionalities with different Chinese fonts?
Looks like it's getting that character from the Chinese font.
Clare, I really like to, but I need some help as I can't really tell much difference.

As for that character in the Japanese text, yes, it's taking it from the Chinese font. If I set PANGO_LANGUAGE=ja, that will be fixed, but the Chinese text takes half of its glyphs from the Japanese font. This is a known problem with Unicode's encoding of East Asian character sets: you can't have both rendered correctly using a single font unless you assign language tags to them. In Pango speak, it's possible to set their language (using Pango markup or attributes) to get both runs correct. I will go on and do that in my test file for the future.
Oh man, you are clearly on a roll :), keep it rolling. Many thanks.
Hi Behdad,

I noticed a couple of issues with the Japanese sentence. Besides the font issue with the kanji character mentioned already, the period should be '。', not the English '.'. The っ (tsu) should be the smaller one; the one you have looks like the larger one.

Anyway, nice work on the feature! :)

Thanks Ben, committed the fix.
The punctuation looks misaligned to me. I don't know about Chinese, but in Japanese the "end of sentence marker" (small circle) and "comma" (chinese character comma, not western one) should be placed just below the preceding glyph, and should be on the right of the column of text, not centred.
Post a Comment

Links to this post:

Create a Link

<< Archive
<< Home