CFV and Project Proposal: HarfBuzz Integration Project (#2)

Steven Loomis steven.loomis at
Fri Jul 26 19:02:23 UTC 2013

CFV and Project Proposal: HarfBuzz Integration Project (#2)


I hereby propose the creation of the HarfBuzz Integration Project
with Steven R. Loomis as the Lead and 2d-dev at as the
sponsoring Group(s).

I am the maintainer of the ICU Layout Engine, which is used for complex text
rendering since Java 1.2 ([1]). This package has not been actively developed in
quite some time, as is evidenced by recent performance, stability, and security
issues that have been corrected. Although it is used in a number of other
projects (both open source and otherwise), it has been a long standing dream of
many (or at least, several) to have a single open source layout engine building
on the legacy of FreeType, Qt, Pango and ICU’s layout engines. This has been
realized by the HarfBuzz [2] project.


 * Significantly faster.
   Khaled Hosny reports 10x for his Amiri font, and LibreOffice agrees.

 * More compatible with Uniscribe.
   Extensively tested with a wide variety of fonts and data.

 * Much better script coverage.
   Including new-spec Indic and others.

 * Actively maintained, active development community.

 * Written from the ground up to be secure.

 * Rapidly becoming the standard reusable OpenType layout engine.
   If a project isn’t using an in-house engine such as Microsoft’s Uniscribe, or
   those by Apple, Adobe, etc., it is probably using or will use HarfBuzz.

 * I, the maintainer of the ICU Layout Engine currently in the OpenJDK (srl)
   recommend it. I’m also already involved in the HarfBuzz project and so can
   make sure that OpenJDK’s use is well supported moving forward.

 * Independently tested by Mozilla, Android, ChromeOS.

 * In use by Android 4.3 (released this week), Qt, Pango (GNOME),  Firefox,
   Chromium, LibreOffice, XeTeX and others.

 * HarfBuzz has an ICU compatibility library which will make it easier to switch
   back and forth between ICU and HarfBuzz. It involves dropping in different
   headers and recompiling/relinking.

 * HarfBuzz has licenses compatible with both OpenJDK and commercial uses
   ("HarfBuzz is licensed under the so-called "Old MIT" license. ")


1. The first step is to add configure switches which allow HarfBuzz’s ICU
   compatibility layer to be chosen instead of ICU at build time.  This can be
   done as a prototype against JDK 8.

2. This would allow side-by-side comparisons of HB vs. ICU behavior from
   functional, performance, and platform compatibility perspectives.

3. Next, we would integrate this into mainstream (building against HarfBuzz by
   default) in JDK 9.

3. Future work could include HarfBuzz-specific code optimizations, including
   calling into HarfBuzz directly instead of via the ICU wrapper.
4. Also to be explored would be any new API and features in the JDK which might
   be possible because of the HarfBuzz engine.

Note: there are some issues right now with dropping in different ICU versions -
see the “libicu” discussion currently on 2d-dev for details.


Initial authors: Steven R. Loomis, Omair Majid, Phil Race
Initial reviewers: Phil Race
Votes are due by: Thu Aug 1 12:00 GMT 2013.

Only current OpenJDK Members [3] are eligible to vote on this motion.  Votes
must be cast in the open on the discuss list.  Replying to this message is
sufficient if your mail program honors the Reply-To header, by replying to to
this mailing list.

For Lazy Consensus voting instructions, see [4].

Steven R. Loomis (IBM)


[1] (1997)

More information about the discuss mailing list