<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8068910263155547348</id><updated>2012-02-16T05:53:07.871-08:00</updated><category term='gsoc'/><category term='libass'/><title type='text'>ssadev</title><subtitle type='html'>GSoC 2011 diary</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-1061326125701863061</id><published>2011-09-25T09:25:00.000-07:00</published><updated>2011-09-25T09:25:47.330-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>libass 0.10.0 released</title><content type='html'>I just released libass 0.10.0, which finally wraps up bidirectional layout and shaping support and makes it available to many users. Get it from the Google Code &lt;a href="http://code.google.com/p/libass/downloads/list"&gt;download page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-1061326125701863061?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/1061326125701863061/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/09/libass-0100-released.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/1061326125701863061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/1061326125701863061'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/09/libass-0100-released.html' title='libass 0.10.0 released'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-947021695554835760</id><published>2011-08-22T11:16:00.000-07:00</published><updated>2011-08-22T11:40:48.102-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>GSoc 2011 Wrap-up</title><content type='html'>&lt;b&gt;Complex text layout&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;With this year's GSoC, libass gained solid complex text layout support, with help of the FriBidi and HarfBuzz-ng libraries. In practice that means Arabic, Hebrew, Devanagari and many other scripts that are non-trivial to render display correctly (and &lt;a href="http://code.google.com/p/libass/issues/detail?id=13#c11"&gt;without side effects or bugs&lt;/a&gt;). Additionally, for latin text, &amp;nbsp;ligatures, combining marks and language-specific features should work as expected. Vertical CJK text layout is also improved, now it can use proper vertical glyphs variants, if available.&amp;nbsp;The work on complex text layout progressed quickly, and shortly after the midterms most text rendered without major problems.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-0OCYscuE3qY/TlKcWRR3EcI/AAAAAAAAAB8/TSO7HBysQEQ/s1600/conan.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="179" src="http://2.bp.blogspot.com/-0OCYscuE3qY/TlKcWRR3EcI/AAAAAAAAAB8/TSO7HBysQEQ/s320/conan.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;A real-life example of Arabic subtitles.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;New font handling code (without fontconfig)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Since there was quite a lot of time left in GSoC, I started focusing on a completely different problem: font matching. libass used fontconfig for that, but fontconfig is a pain on Windows. Moreover, the font sorter/matcher of fontconfig isn't very suitable for libass, since it does not match names the way Windows, and therefore VSFilter does.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-HSusyoyvYNk/TlKbOiVdX4I/AAAAAAAAAB4/Q_XYM2-O8qM/s1600/fontcache.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-HSusyoyvYNk/TlKbOiVdX4I/AAAAAAAAAB4/Q_XYM2-O8qM/s1600/fontcache.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I completely ripped out fontconfig and replaced it by my own font sorting/matching code. Various backends can provide font meta information to the font sorter. Currently, three such backends exist:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;FreeType backend, mostly useful for embedded fonts&lt;/li&gt;&lt;li&gt;fontconfig backend, to access system fonts on Unix&lt;/li&gt;&lt;li&gt;Windows GDI backend, to access system fonts on Windows&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In the end, in practice the most important advantage is that there's no hard dependency on fontconfig anymore. Even without any additional platform-specific backend, libass can now render embedded Matroska subtitles correctly, as the long as the required fonts are attached. The Windows GDI backend gets rid of the fontconfig cache building, which bothers many users.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What's cooking&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Performance Improvements to the Windows GDI font backend.&lt;br /&gt;&lt;br /&gt;The GDI interface is very bad and awkward to use for collecting font metadata. The new DirectWrite API is much more sane and I'll likely implement a backend for this. It is supported on Windows Vista and up.&lt;br /&gt;&lt;br /&gt;I have half-finished SSE2-accelerated versions of the blur filters (\be, \blur) lying around, these should be &amp;nbsp;completed.&lt;br /&gt;&lt;br /&gt;Rendering quality will be improved with an internal compositor. Especially if alpha transparency is in use, results are less than optimal at the moment.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-947021695554835760?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/947021695554835760/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/08/gsoc-2011-wrap-up.html#comment-form' title='4 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/947021695554835760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/947021695554835760'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/08/gsoc-2011-wrap-up.html' title='GSoc 2011 Wrap-up'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-0OCYscuE3qY/TlKcWRR3EcI/AAAAAAAAAB8/TSO7HBysQEQ/s72-c/conan.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-8043346067747055151</id><published>2011-08-21T22:14:00.000-07:00</published><updated>2011-08-21T22:37:33.831-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>System fonts without fontconfig</title><content type='html'>I've uploaded a new version of my win32 VLC test build. This new download includes an experimental Windows GDI font collector (&lt;a href="http://pastebin.com/tqvAy2Ta"&gt;patch&lt;/a&gt;), so system fonts can be used now! The interface for that (FontProvider) is now publicly exposed in the libass library as well.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PxiUlG_vrxY/TlHlW6sa89I/AAAAAAAAAB0/gfiBbhvJ4zo/s1600/zszs.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="223" src="http://3.bp.blogspot.com/-PxiUlG_vrxY/TlHlW6sa89I/AAAAAAAAAB0/gfiBbhvJ4zo/s320/zszs.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Not actually &lt;i&gt;that&lt;/i&gt; horrible.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;GDI is a bad API for what I need to do, so there are some limitations. I can't get all "full names" for a font, only the localized or often English name. More importantly, fonts are accessed with the GetFontData call that buffers them into memory. This can be quite slow, especially for big CJK fonts or Unicode fonts like "Arial Unicode MS".&lt;br /&gt;&lt;br /&gt;Still, for most purposes, this should work fine.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://libass.googlecode.com/files/vlc-1.2.0-git-win32.7z"&gt;Download the test build&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-8043346067747055151?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/8043346067747055151/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/08/system-fonts-without-fontconfig.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/8043346067747055151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/8043346067747055151'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/08/system-fonts-without-fontconfig.html' title='System fonts without fontconfig'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-PxiUlG_vrxY/TlHlW6sa89I/AAAAAAAAAB0/gfiBbhvJ4zo/s72-c/zszs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-3369257014967654571</id><published>2011-08-19T17:37:00.000-07:00</published><updated>2011-08-20T03:45:25.843-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>VLC win32 test build</title><content type='html'>I've built VLC for Windows against the latest code of the fonts branch, and of course with the FriBidi and HarfBuzz support from mainline. This means:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Arabic and Hebrew text works correctly &lt;strike&gt;(but no HarfBuzz support)&lt;/strike&gt;&lt;/li&gt;&lt;li&gt;OpenType shaping works&lt;/li&gt;&lt;li&gt;The annoying "Building font cache" message is gone&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;However, currently only embedded fonts are supported. Usually most fonts are embedded in Matroska files, so this often is not a big issue.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://libass.googlecode.com/files/vlc-1.2.0-git-win32.7z"&gt;Download the test build&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Update: Download replaced by a new build with HarfBuzz support.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-3369257014967654571?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/3369257014967654571/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/08/vlc-win32-test-build.html#comment-form' title='9 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/3369257014967654571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/3369257014967654571'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/08/vlc-win32-test-build.html' title='VLC win32 test build'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-8006275783216074404</id><published>2011-08-18T09:17:00.000-07:00</published><updated>2011-08-18T09:17:21.057-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>--disable-fontconfig</title><content type='html'>With the latest commits to the fonts branch, I can say with some excitement that libass does reasonably work without fontconfig now. Embedded fonts work perfectly, and so does the fallback font (if specified).&lt;br /&gt;&lt;br /&gt;Next stop: a public interface for providing information about system fonts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-8006275783216074404?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/8006275783216074404/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/08/disable-fontconfig.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/8006275783216074404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/8006275783216074404'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/08/disable-fontconfig.html' title='--disable-fontconfig'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-1798441548742999416</id><published>2011-08-08T13:01:00.000-07:00</published><updated>2011-08-08T13:01:10.912-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>Font handling: it's hard!</title><content type='html'>So far libass uses FontConfig for collecting font metadata and matching fonts. However, fontconfig isn't ideal for matching fonts in the way the ASS/SSA formats need it. These formats primarily use the "full name" for matching the font, that is, a name including style, such as "Arial Bold Italic". FontConfig does not match against this name at all, and there are various hacks in libass to work around that (badly).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you &lt;a href="http://www.microsoft.com/typography/otspec/name.htm"&gt;dig deeper into it&lt;/a&gt;, you'll find out that font naming is a big and complicated mess. Let's sum up the facts:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Various different names exist, such as family name, full name, PostScript name, subfamily name, etc.&lt;/li&gt;&lt;li&gt;Most of these can be localized&lt;/li&gt;&lt;li&gt;Different platforms (such as Windows or Mac) can have individual names&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So there's no such thing as a single name for a font at all! Gladly we don't really need to support all of these names (family name and full name seems to be good enough).&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a first step to get away from the FontConfig dependency I've implemented my own font sorter and matcher that is optimized for the needs of ASS/SSA. I've also begun to work on an interface (FontProvider) that allows various font sources (such as Windows DirectWrite or container-embedded fonts) to plug into libass. At the moment, this already allows libass to work without fontconfig when only embedded fonts are needed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are still some problems to solve with this new code, but in the meantime, it will live in the &lt;a href="http://code.google.com/p/libass/source/list?name=fonts"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;fonts&lt;/span&gt; branch&lt;/a&gt;, until it is ready for general consumption.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-1798441548742999416?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/1798441548742999416/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/08/font-handling-its-hard.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/1798441548742999416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/1798441548742999416'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/08/font-handling-its-hard.html' title='Font handling: it&apos;s hard!'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-176034696474445726</id><published>2011-07-31T08:37:00.000-07:00</published><updated>2011-08-04T02:35:27.033-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>libass 0.9.13 released</title><content type='html'>A few days ago FreeType 2.4.6 was released, which contains the new stroker code, which unfortunately crashes with libass 0.9.12 under some circumstances. I've released a new bugfix release, 0.9.13, to remedy this. &lt;a href="http://code.google.com/p/libass/downloads/list"&gt;Get it at Google Code&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Note: this release does not contain the recent complex text layout work. It's 0.9.12 plus bugfixes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-176034696474445726?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/176034696474445726/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/07/libass-0913-released.html#comment-form' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/176034696474445726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/176034696474445726'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/07/libass-0913-released.html' title='libass 0.9.13 released'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-7654718243619400689</id><published>2011-07-28T14:06:00.000-07:00</published><updated>2011-07-28T14:06:25.272-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>libass git repo on Google Code</title><content type='html'>Google Code recently introduced Git support, and at the same time repo.or.cz suffered from some reliability problems. Thus I've &lt;a href="http://code.google.com/p/libass/source/checkout"&gt;mirrored the repository&lt;/a&gt; at Google Code now. I will keep both repositories up to date.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-7654718243619400689?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/7654718243619400689/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/07/libass-git-repo-on-google-code.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/7654718243619400689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/7654718243619400689'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/07/libass-git-repo-on-google-code.html' title='libass git repo on Google Code'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-2926717221608417298</id><published>2011-07-17T09:17:00.000-07:00</published><updated>2011-07-17T09:17:27.405-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>New outline stroker from FreeType</title><content type='html'>FreeType recently received an update to its stroker, which supposedly fixes many rendering issues. And indeed it does! However, first I needed to fix the outline preprocessing in libass, since it wasn't very cleanly handling outline modifications. Now that this is fixed, here's a quick comparison of old vs. new stroker.&lt;br /&gt;&lt;br /&gt;One font that has been very problematic for FreeType's stroker is Comiquita Sans. Previously, the outlines generated by the stroker were broken in pretty funny ways and this was clearly visible in the rendering:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-S0hjM4bSxD0/TiMKvJIN5mI/AAAAAAAAABs/nURA19-Ju6Q/s1600/border-broken.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://2.bp.blogspot.com/-S0hjM4bSxD0/TiMKvJIN5mI/AAAAAAAAABs/nURA19-Ju6Q/s400/border-broken.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The new stroker fixes these issues completely:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-wq0snVkzHYc/TiMKvfVny_I/AAAAAAAAABw/tfR79uIQyVg/s1600/border-fixed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://4.bp.blogspot.com/-wq0snVkzHYc/TiMKvfVny_I/AAAAAAAAABw/tfR79uIQyVg/s400/border-fixed.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The new stroker is available in &lt;a href="http://git.savannah.gnu.org/cgit/freetype/freetype2.git/"&gt;FreeType git master&lt;/a&gt; and will appear in the next FreeType release (2.4.6).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-2926717221608417298?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/2926717221608417298/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/07/new-outline-stroker-from-freetype.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/2926717221608417298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/2926717221608417298'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/07/new-outline-stroker-from-freetype.html' title='New outline stroker from FreeType'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-S0hjM4bSxD0/TiMKvJIN5mI/AAAAAAAAABs/nURA19-Ju6Q/s72-c/border-broken.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-3876471226826679615</id><published>2011-07-12T17:15:00.000-07:00</published><updated>2011-07-12T17:17:58.585-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>Vertical writing</title><content type='html'>VSFilter, pretty much the reference renderer for SSA/ASS, can make use of an obscure Windows feature, often called "@font". When a font name is prefixed with an "@" symbol, Windows switches to a pseudo-vertical writing mode for CJK. Latin characters are written as usual, but CJK characters are rotated and substituted by their vertical forms, if possible. Until now, libass wasn't able to do these substitutions, that especially means punctuation, brackets, parentheses and so on were wrong and and/or wrongly positioned.&lt;br /&gt;&lt;br /&gt;With HarfBuzz shaping in place, it is easy to do these substitutions. The OpenType features &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;vert&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;vkna&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; are responsible for them. &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;vert&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; enables support for vertical writing in general (substitution of brackets, punctuation, et cetera) and &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;vkna&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; enables alternate forms for Kana, if available.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-naLinddwlnc/Thzi3QujomI/AAAAAAAAABo/-Oji68Bhxvg/s1600/vertical-old.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-naLinddwlnc/Thzi3QujomI/AAAAAAAAABo/-Oji68Bhxvg/s1600/vertical-old.png" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-f3OdtMFMozE/Thzi2j4RUxI/AAAAAAAAABk/Ox07SxYw5jg/s1600/vertical-new.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-f3OdtMFMozE/Thzi2j4RUxI/AAAAAAAAABk/Ox07SxYw5jg/s1600/vertical-new.png" /&gt;&lt;/a&gt;&lt;br /&gt;Here's a side-by-side comparison of some random Japanese text. On the left a rendering without substitutions, on the right with both features enabled. The Meiryo font was used.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-3876471226826679615?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/3876471226826679615/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/07/vertical-writing.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/3876471226826679615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/3876471226826679615'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/07/vertical-writing.html' title='Vertical writing'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-naLinddwlnc/Thzi3QujomI/AAAAAAAAABo/-Oji68Bhxvg/s72-c/vertical-old.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-779043583107601230</id><published>2011-07-11T13:02:00.000-07:00</published><updated>2011-07-11T13:02:45.956-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>HarfBuzz shaping support</title><content type='html'>Yeah, it's pretty much working now... after hunting down a few of stupid bugs. libass can now render text without all kinds of OpenType features. Here are a few samples.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Arabic text with diacritics (&lt;a href="http://code.google.com/p/libass/issues/detail?id=13#c11"&gt;buggy with FriBidi's shaper&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-nX7Wp-IZ44k/ThtV8ZuPXOI/AAAAAAAAABY/Dziqdzl6UzA/s1600/arabic-diacritics.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-nX7Wp-IZ44k/ThtV8ZuPXOI/AAAAAAAAABY/Dziqdzl6UzA/s320/arabic-diacritics.png" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Connected handwriting (using the &lt;a href="http://www.schoolhousefonts.com/fonts_opentype.htm"&gt;Zaner-Bloser Schoolhouse&lt;/a&gt; font)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-D7B8THFehFo/ThtV8637a9I/AAAAAAAAABc/XjD7dZd-pio/s1600/connected-handwriting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-D7B8THFehFo/ThtV8637a9I/AAAAAAAAABc/XjD7dZd-pio/s1600/connected-handwriting.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Automatic fractions (&lt;a href="http://people.mozilla.org/~jdaggett/webfonts/tiramisu.html"&gt;using the Calluna font&lt;/a&gt;)&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-kxeH48k2iu4/ThtV9E-OFJI/AAAAAAAAABg/9QTjNu8Wwos/s1600/fractions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="92" src="http://2.bp.blogspot.com/-kxeH48k2iu4/ThtV9E-OFJI/AAAAAAAAABg/9QTjNu8Wwos/s320/fractions.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-779043583107601230?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/779043583107601230/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/07/harfbuzz-shaping-support.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/779043583107601230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/779043583107601230'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/07/harfbuzz-shaping-support.html' title='HarfBuzz shaping support'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-nX7Wp-IZ44k/ThtV8ZuPXOI/AAAAAAAAABY/Dziqdzl6UzA/s72-c/arabic-diacritics.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-1642176781788572865</id><published>2011-07-09T17:41:00.000-07:00</published><updated>2011-07-09T17:43:02.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>Simple Arabic shaping</title><content type='html'>FriBidi contains a simple Arabic shaper. This shaper is based around the fact that Unicode contains codepoints for presentational forms of many Arabic characters, for traditional reasons. This can be great, as it allows very easy and simple shaping by analyzing the text, without doing any font-specific lookups. However, more advanced shaping features are not possible.&lt;br /&gt;&lt;br /&gt;Just now I added support for FriBidi's simple Arabic shaper to libass. The &lt;a href="http://code.google.com/p/libass/issues/detail?id=13"&gt;bug about Arabic support&lt;/a&gt; contains a test case, and this renders great now.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-QG2KG-EIb1I/Thj04BNPYQI/AAAAAAAAABI/chpn2VFJxdc/s1600/arabic-shaping.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-QG2KG-EIb1I/Thj04BNPYQI/AAAAAAAAABI/chpn2VFJxdc/s1600/arabic-shaping.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Work to use a "real" shaper, i.e. HarfBuzz, is already under way, of course. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-1642176781788572865?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/1642176781788572865/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/07/simple-arabic-shaping.html#comment-form' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/1642176781788572865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/1642176781788572865'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/07/simple-arabic-shaping.html' title='Simple Arabic shaping'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-QG2KG-EIb1I/Thj04BNPYQI/AAAAAAAAABI/chpn2VFJxdc/s72-c/arabic-shaping.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-4843256989257150766</id><published>2011-07-06T14:52:00.000-07:00</published><updated>2011-07-06T16:27:38.619-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>libass now supports bidi</title><content type='html'>After a rather long phase of refactoring and cleaning up libass, I finally started with the BiDi implementation, using FriBidi. This turned out to be easier than expected! Well, at least a buggy first implementation was easy. Let's see where we can go from here.&lt;br /&gt;&lt;br /&gt;Here's a sample. Latin text with a bit of Hebrew in it that is rendered right-to-left (RTL).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;for example, the Hebrew name Sarah (שרה) is spelled\Nshin (ש) resh (ר) heh (ה) from right to left.&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-4uXro0nWEYM/ThTYUsRIxvI/AAAAAAAAAA8/ZGFe3VnblDc/s1600/sample1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="80" src="http://1.bp.blogspot.com/-4uXro0nWEYM/ThTYUsRIxvI/AAAAAAAAAA8/ZGFe3VnblDc/s400/sample1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here's a more complex one. Hebrew text (RTL) with numbers in it (LTR) and brackets, which are mirrored by FriBidi's rather simple shaper (Later, HarfBuzz is going to do mirroring, and a lot more). Note that the dots are incorrectly positioned, that's because I'm forcing the pararaph text direction to LTR at the moment.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;דייטשלאנד געהערט צו דער שענגען זאנע (אן גרענעצן) און האט אדאפטירט די איירא (די בשותפותדיקע אייראפעישע וואלוטע) אום 1999...&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VD1srOhX1vI/ThTYbI25KfI/AAAAAAAAABA/VdE05cP3yuE/s1600/sample2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-VD1srOhX1vI/ThTYbI25KfI/AAAAAAAAABA/VdE05cP3yuE/s1600/sample2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Directional overrides using special Unicode characters are supported, too.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Hallo wie geht?\N‮Hallo wie geht?&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-JSQ252CAJsU/ThTY0DuTwnI/AAAAAAAAABE/_zKvEJEzK9M/s1600/sample3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-JSQ252CAJsU/ThTY0DuTwnI/AAAAAAAAABE/_zKvEJEzK9M/s1600/sample3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The code will be available in the libass repo soon. There's still some cleanup to do.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-4843256989257150766?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/4843256989257150766/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/07/libass-now-supports-bidi.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/4843256989257150766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/4843256989257150766'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/07/libass-now-supports-bidi.html' title='libass now supports bidi'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-4uXro0nWEYM/ThTYUsRIxvI/AAAAAAAAAA8/ZGFe3VnblDc/s72-c/sample1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-5468759727626408318</id><published>2011-06-20T14:33:00.000-07:00</published><updated>2011-06-20T15:23:37.552-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>libass is now a whole lot less hacky...</title><content type='html'>...and &lt;a href="http://repo.or.cz/w/libass.git/commit/e5704aa76a2712782442156986f74b8766077ee1"&gt;manipulates vector outlines directly&lt;/a&gt; instead of wrapping these through FreeType glyphs, which provides a bit more flexibility.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-5468759727626408318?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/5468759727626408318/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/06/libass-is-now-whole-lot-less-hacky.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/5468759727626408318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/5468759727626408318'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/06/libass-is-now-whole-lot-less-hacky.html' title='libass is now a whole lot less hacky...'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-6668029817514617267</id><published>2011-06-05T18:43:00.000-07:00</published><updated>2011-06-06T14:35:39.098-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>Standalone renderer</title><content type='html'>I &lt;a href="http://78.47.72.107/layouter.tar.gz"&gt;just uploaded sources&lt;/a&gt; of the standalone renderer with some additional fixes. The archive contains the Git history as well as some sample files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-6668029817514617267?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/6668029817514617267/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/06/standalone-renderer.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/6668029817514617267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/6668029817514617267'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/06/standalone-renderer.html' title='Standalone renderer'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-1948621097196015306</id><published>2011-06-03T19:39:00.000-07:00</published><updated>2011-06-03T19:42:02.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>Finally: Bidi, shaping and line wrapping</title><content type='html'>It turned out to be more tricky than I imagined, but now it works: a simple, but full text layout engine, that supports bidirectional text with full shaping (where needed) and is capable of wrapping bidirectional text correctly. The code is probably horrible and very inefficient, though.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-oXmy61xlCqU/TemaBaFfuKI/AAAAAAAAAA0/bYZqfqLMeUo/s1600/Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="202" src="http://1.bp.blogspot.com/-oXmy61xlCqU/TemaBaFfuKI/AAAAAAAAAA0/bYZqfqLMeUo/s400/Screenshot.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the bottom you can see the reference rendering (rendered by a GTK app, i.e. Pango), in the top is my rendering. Note that I have no idea what the Arabic text actually means, I don't know any Arabic language. &amp;nbsp;I can read the script a bit, but that's all. The text was copy &amp;amp; pasted together from somewhere.&lt;br /&gt;&lt;br /&gt;Now it's time to start digging into libass, cleaning up some of the mess and preparing it for inclusion of this functionality.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-1948621097196015306?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/1948621097196015306/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/06/finally-bidi-shaping-and-line-wrapping.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/1948621097196015306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/1948621097196015306'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/06/finally-bidi-shaping-and-line-wrapping.html' title='Finally: Bidi, shaping and line wrapping'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-oXmy61xlCqU/TemaBaFfuKI/AAAAAAAAAA0/bYZqfqLMeUo/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-394140292225285558</id><published>2011-05-30T14:31:00.000-07:00</published><updated>2011-05-30T14:31:00.205-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>libass 0.9.12 released</title><content type='html'>I released libass 0.9.12 just now. There are no surprises, this is just a bugfix release that further improves compatibility with VSFilter. Tarballs are available from the project page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-394140292225285558?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/394140292225285558/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/05/libass-0912-released.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/394140292225285558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/394140292225285558'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/05/libass-0912-released.html' title='libass 0.9.12 released'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-3719378773343887633</id><published>2011-05-26T01:20:00.000-07:00</published><updated>2011-06-01T04:04:31.988-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><title type='text'>Vertical shaper in Harfbuzz</title><content type='html'>Looks like support for vertical layouts and the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;vert&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;vrt2&lt;/span&gt;&amp;nbsp;tables became usable in Harfbuzz &lt;a href="http://cgit.freedesktop.org/harfbuzz/commit/?id=7403e055cd1463f38215ad9faedd61c3e1b66ac5"&gt;now, just in time&lt;/a&gt;! This will definitely make proper vertical CJK layout easier in libass. I still need to test it, though...&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;After &lt;a href="http://lists.freedesktop.org/archives/harfbuzz/2011-May/001294.html"&gt;a little bit of trouble&lt;/a&gt;, this worked just fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-3719378773343887633?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/3719378773343887633/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/05/vertical-shaper-in-harfbuzz.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/3719378773343887633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/3719378773343887633'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/05/vertical-shaper-in-harfbuzz.html' title='Vertical shaper in Harfbuzz'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-9031973089426064932</id><published>2011-05-24T16:03:00.000-07:00</published><updated>2011-06-03T19:46:49.270-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>Getting complex text layout into libass</title><content type='html'>Unfortunately, libass's rendering model doesn't make it easy to plug-in contextual transforms that are needed for complex text layout. Currently, for every subtitle event, a lot of &amp;nbsp;processing is done&amp;nbsp;per-glyph&amp;nbsp;before line breaking, positioning, etc. take place. However, the complex text layout engine needs runs of text. Let's look again at the text layout pipeline:&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Split up text into runs according to style (font, size, decoration).&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Split up runs further according to text direction (depending on script and language).&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Shape runs that need it.&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Break lines.&lt;/li&gt;&lt;li style="margin-bottom: 0.25em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;"&gt;Reorder lines into visual order&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Step 1 is currently not done with runs, style is strictly applied per glyph. This is not without problems, for example it makes text decorations (underline, strike-through) hard to implement correctly and positioning after certain style changes is hard to get right (from italic to non-italic style). Moreover, this requires inter-glyph blending later on in the rendering pipeline.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My plan is to completely refactor the main rendering loop from individual glyphs to runs to get rid of these problems. Obviously, the other advantage of it is that it makes plugging complex text layout into rendering much easier.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What about the next steps? Steps 2 and 5, BiDi transformation, will be handled by &lt;a href="http://www.fribidi.org/"&gt;fribidi&lt;/a&gt;. Step 3, text shaping, will be handled by the new &lt;a href="http://www.freedesktop.org/wiki/Software/HarfBuzz"&gt;harfbuzz-ng&lt;/a&gt; library. Step 4 is going to be handled by &lt;a href="http://vimgadgets.sourceforge.net/liblinebreak/"&gt;liblinebreak&lt;/a&gt;&amp;nbsp;plus support code in libass.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a first step, I will implement a simple standalone renderer for steps 2-5. I'm using the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;hb-view&lt;/span&gt; program from harfbuzz-ng as the base.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Update: added step 5, reordering.&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-9031973089426064932?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/9031973089426064932/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/05/getting-complex-text-layout-into-libass.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/9031973089426064932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/9031973089426064932'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/05/getting-complex-text-layout-into-libass.html' title='Getting complex text layout into libass'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-1117987214948836001</id><published>2011-05-24T06:02:00.000-07:00</published><updated>2011-05-24T06:02:03.228-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><title type='text'>GSoC welcome package</title><content type='html'>It just arrived. I like the glowing sticker!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6g1ezmjNEyo/Tdur-9_zkiI/AAAAAAAAAAw/ZRBzzQJzTuY/s1600/Bild005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/-6g1ezmjNEyo/Tdur-9_zkiI/AAAAAAAAAAw/ZRBzzQJzTuY/s400/Bild005.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-1117987214948836001?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/1117987214948836001/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/05/gsoc-welcome-package.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/1117987214948836001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/1117987214948836001'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/05/gsoc-welcome-package.html' title='GSoC welcome package'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-6g1ezmjNEyo/Tdur-9_zkiI/AAAAAAAAAAw/ZRBzzQJzTuY/s72-c/Bild005.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-5552457874390759375</id><published>2011-05-23T16:40:00.000-07:00</published><updated>2011-05-26T06:22:38.380-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='libass'/><title type='text'>Introduction to complex text layout</title><content type='html'>Complex text layout is, as the name says, a pretty complicated process. The term stands for various text transformations that need to be done to render scripts that require more than trivial codepoint-to-glyph mapping.&lt;br /&gt;&lt;br /&gt;Generally, the following transformations are complex text layout:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BiDi. Many languages do not write from left to right, but from right to left (e.g. Hebrew). Usually, numbers are still written from left to right, though. Sometimes you need to mix right to left text into left to right text. When there's any mix between directions, and that can happen quite quickly, the text needs to be split up into so-called&amp;nbsp;&lt;i&gt;runs&lt;/i&gt; with the same direction, and rendered accordingly&lt;i&gt;. &lt;/i&gt;Unicode specifies such an algorithm, the &lt;a href="http://unicode.org/reports/tr9/"&gt;Unicode Bidirectional Algorithm&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Text shaping. Many scripts, especially cursive scripts (most importantly Arabic and derivatives) require contextual glyph substitutions. Depending on the position of a glyph inside a word, a certain variant needs to be used. Moreover, as it is a cursive script, the letters need to be repositioned so that they connect cleanly to each other. There are a lot more features referred to as shaping. Shaping requires runs of text with the same direction and script.&lt;/li&gt;&lt;li&gt;Line breaking. Mixing text direction, language and script complicates line breaking. Unicode specifies the &lt;a href="http://unicode.org/reports/tr14/"&gt;Unicode Line Breaking Algorithm&lt;/a&gt;&amp;nbsp;to deal with that.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;According to that, a full complex text layout engine needs to do a lot of work.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Split up text into runs according to style (font, size, decoration).&lt;/li&gt;&lt;li&gt;Split up runs further according to text direction (depending on script and language).&lt;/li&gt;&lt;li&gt;Shape runs that need it.&lt;/li&gt;&lt;li&gt;Break lines.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Complete and easy to use cross-platform engines already exist and work well. One example is the popular Pango library. However, Pango only offers a very high-level API for the complete engine. It's not flexible enough for libass, which does a lot of rather low-level font manipulations, and it's said to be slow, while performance is critical for libass.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So there's no way around doing all steps yourself. Fortunately, stable libraries for all of the critical steps are available. I'm going to describe the plans for the libass implementation in the next posts.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-5552457874390759375?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/5552457874390759375/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/05/introduction-to-complex-text-layout-in.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/5552457874390759375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/5552457874390759375'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/05/introduction-to-complex-text-layout-in.html' title='Introduction to complex text layout'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8068910263155547348.post-3692931796491617558</id><published>2011-05-20T14:13:00.000-07:00</published><updated>2011-05-23T16:43:49.346-07:00</updated><title type='text'>Let's get this started</title><content type='html'>This blog is mostly dedicated for Google Summer of Code 2011, where I am going to implement complex text layout support for the libass subtitle rendering library, under mentorship of the VideoLAN project.&lt;br /&gt;&lt;br /&gt;I'll probably also blog about some topics only mildly related to GSOC. Anyway, let's get this started!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8068910263155547348-3692931796491617558?l=ssadev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssadev.blogspot.com/feeds/3692931796491617558/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://ssadev.blogspot.com/2011/05/lets-get-this-started.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/3692931796491617558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8068910263155547348/posts/default/3692931796491617558'/><link rel='alternate' type='text/html' href='http://ssadev.blogspot.com/2011/05/lets-get-this-started.html' title='Let&apos;s get this started'/><author><name>greg</name><uri>http://www.blogger.com/profile/14086258802610979755</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
