HTTP/2 200
content-type: text/html
last-modified: Thu, 05 Jun 2025 17:23:09 GMT
vary: Accept-Encoding
etag: "6841d27d-2e95"
content-security-policy-report-only: default-src 'self' *.openjdk.java.net feedburner.google.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' feeds.feedburner.com *.statcounter.com statcounter.com; img-src 'self' data: *.statcounter.com *.openjdk.java.net feedburner.google.com; frame-ancestors 'none'; report-uri https://openjdk.report-uri.io/r/default/csp/reportOnly
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
accept-ranges: bytes
x-akamai-transformed: 0 - 0 -
content-encoding: gzip
date: Fri, 01 Aug 2025 14:39:17 GMT
content-length: 3439
set-cookie: _abck=C9510E2E8AFB5AF82CFF3B3AE9B6A9E2~-1~YAAQNAHARRtyND2YAQAA3a4SZg4BrmHKld6ooOhUvmXwHFrpVljL4tej7LHhLNGMIBwWFv/BS4iokaSFs7C2Z/ZQrizu5m94nOmRcvs/WYRyKQKr26iOI1fwgrNQc1lrgLtpGgvFlghGBsOHQ6sfuDtYxn6L1lYSI51ke5yPtc6v161CbkBux/Vp8s57z2ufoZXnStqt3hN5LUgkCE8GEovxPIT0wpaomXs6OGAZ/LScjGX3l+vBVa/5SanaHDdXCAEhEA0CwRfRrbRLO2Dz6t55B4W3XWCIV1OdXxxcWGC8sQuP+OuyOEpRjfqahbgWZeAZl++kzkkUD8/jj2kHR6JBXBz7BBXhoii7H7xJx5y8g9o4kJoocu//VlNsAT16C6PVBzDZpWPkvnodD95cB6m999c+iRriOg/V3LhRpf46iIyt7WIhff4sctQz/EnBo/NPWzg=~-1~-1~-1; Domain=.openjdk.org; Path=/; Expires=Sat, 01 Aug 2026 14:39:17 GMT; Max-Age=31536000; Secure
set-cookie: bm_sz=7CA13296F641AC73DB18E9E57CD8217E~YAAQNAHARRxyND2YAQAA3a4SZhy0ksxoCXgS8Ceyr3iItAWeJ/BtxvJ6aLF5GRJgostpD6qOktr7hwDFRuQREuiEQiP+eC9jwDao/+4/W0J5IRT5+pDa7F8NnetsuSFmTfH3eLPtgT6uFIDSTGKr8PXVAsRgPQ5jofL9FyK/cE+fNWb4UlVZv9trOMJSj6Z+PJA2UIdm+KXA2cfB7ru2h3H41l6Wijd1/OUthEKPY69KHeWOdCxWG8M+GTwATR4OT5kqYE/kju7LdesfHn8XXLRR85lJzn0zi81s2z+o54yui0w8My++MwLtZpaY2smshQFCJU0boiF4bwmrzVEBt5ClkDiM5DPKscKFD0vcEkmXeKveUE9HG4c=~4534585~3753008; Domain=.openjdk.org; Path=/; Expires=Fri, 01 Aug 2025 18:39:16 GMT; Max-Age=14399
JEP 258: HarfBuzz Font-Layout Engine
Author | Steven R. Loomis |
Owner | Philip Race |
Type | Feature |
Scope | Implementation |
Status | Closed / Delivered |
Release | 9 |
Component | client-libs / 2d |
Discussion | harfbuzz dash dev at openjdk dot java dot net |
Effort | M |
Duration | M |
Reviewed by | Kevin Rushforth, Philip Race |
Endorsed by | Kevin Rushforth |
Created | 2014/11/11 00:31 |
Updated | 2019/10/25 05:20 |
Issue | 8064530 |
Summary
Replace the existing ICU OpenType font-layout engine with HarfBuzz.
Motivation
An OpenType layout engine,
such as ICU or
HarfBuzz, provides script-aware code to process
certain font tables required for the correct rendering of text for
scripts such as Arabic and Indic. Without that support the rendering of
text in those scripts is not just incorrect, but illegible.
The ICU OpenType layout engine is no longer actively developed and IBM,
the project owner, intends to replace it with HarfBuzz in the
ICU project. The JDK must follow suit,
or else be left using an unsupported and out-dated library.
Description
Incorporate into the JDK a copy of the HarfBuzz library in the same
manner as is done for ICU and other open-source libraries in the JDK such
as libpng
. Integrate that native library to support the Java APIs and
implementation required for the layout of complex text as a replacement
for ICU.
Alternatives
There are no viable open-source alternatives to HarfBuzz. Libraries such
as Pango are now being re-implemented as wrappers around HarfBuzz.
Risks and Assumptions
There may be some minor rendering differences between the libraries, as a
result of different implementations and a use of more up-to-date OpenType
specifications.