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

Jeff Dinkins jeff.dinkins at oracle.com
Mon Jul 29 15:15:10 UTC 2013


Vote: yes

On Jul 26, 2013, at 12:02 PM, Steven Loomis <steven.loomis at oracle.com> wrote:
> CFV and Project Proposal: HarfBuzz Integration Project (#2)
> 
> PROPOSAL
> 
> I hereby propose the creation of the HarfBuzz Integration Project
> with Steven R. Loomis as the Lead and 2d-dev at openjdk.java.net 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.
> 
> WHY SHOULD OPENJDK SWITCH TO HARFBUZZ?
> 
> * 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. ")
> 
> SCOPE OF PROJECT AND ROADMAP
> 
> 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.
> 
> WHO WOULD BE INVOLVED IN THIS PROJECT?
> 
> 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)
> 
> 
> REFERENCES
> 
> [1]https://ssl.icu-project.org/docs/papers/international_text_in_jdk_1.2/ (1997)
> [2]http://www.freedesktop.org/wiki/Software/HarfBuzz/
> [3]http://openjdk.java.net/census#members
> [4]http://openjdk.java.net/projects/#new-project-vote




More information about the discuss mailing list