[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-2d-dev
Subject:    [OpenJDK 2D-Dev] FYI CFV and Project Proposal: HarfBuzz Integration Project
From:       "Steven R. Loomis" <steven.loomis () oracle ! com>
Date:       2013-07-25 21:13:01
Message-ID: 51F194DD.5010805 () oracle ! com
[Download RAW message or body]

FYI: This was sent to the discuss@openjdk.java.net mailing list.
It has not been approved for posting yet, but I wanted this list to be
aware of it.

-s


-------- Original Message --------
Subject:     CFV and Project Proposal: HarfBuzz Integration Project
Date:     Thu, 25 Jul 2013 13:56:23 -0700
From:     Steven R. Loomis <steven.loomis@oracle.com>
To:     discuss@openjdk.java.net
CC:     Behdad Esfahbod <behdad@behdad.org>, Omair Majid <omajid@redhat.com>




I hereby propose the creation of the HarfBuzz Integration Project with

Steven R. Loomis as the Lead and 2d-dev@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.


What are some reasons JDK should switch to HarfBuzz?

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

LibreOffice agrees.

* Significantly better compatibility with Uniscribe - extensively tested

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

* Actively maintained, active development community.

* Written from the ground up to be secure.

* It's rapidly becoming the only important OpenType layout engine used by

other projects. If you aren't using Microsoft's Uniscribe, Apple, or Adobeā€¦

you are probably using HarfBuzz.

* The maintainer of the ICU Layout Engine currently in the JDK (me)
recommends

it.

* Independently tested by Mozilla, Android, ChromeOS.

* In use by Android 4.3 (released today), 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. ")



What is being proposed:

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. The goal would be to integrate this into mainstream JDK (building against

 HarfBuzz by default) in JDK 9.

3. Future goals could include:

  a. HarfBuzz-specific code optimizations (calling into HB instead of
the ICU wrapper)

  b. HarfBuzz-specific API?

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: 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


[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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic