[HarfBuzz] ICU and NMake build

Khaled Hosny khaledhosny at eglug.org
Mon Dec 5 18:27:36 UTC 2016

On Mon, Dec 05, 2016 at 03:15:04PM +0000, Elmar Braun wrote:
> Hello,
> I've built HarfBuzz 1.3.3 with Visual Studio using the provided NMake build
> files. I have two questions though:
> Building with "ICU=1" produces two DLLs: harfbuzz-vs14.dll, which, as far as
> I can tell, uses ucdn for Unicode data, and does not depend on ICU; and
> harfbuzz-icu-vs14.dll, which isn't a complete HarfBuzz DLL. (It exports just
> three symbols: hb_icu_get_unicode_funcs, hb_icu_script_from_script, and
> hb_icu_script_to_script.) I'm sure there's a perfectly good explanation for
> that, but that explanation is not obvious to me. Why doesn't it simply build
> HarfBuzz in a single DLL that depends directly on ICU?

That is to avoid having HarfBuzz depend on ICU and thus every HarfBuzz
client depending on ICU, which can be problematic for Linux distribution
and other systems with package managers. The autoconf build supports
--with-icu=builtin which does what you need, not sure if the NMake build
has such an option, but if it doesn’t then that would be a good
thing to have (or even be the default when ICU=1), please open an issue
on GitHub.

> Secondly, in win32\README.txt it describes the "ICU" option as follows:
>  > ICU: Enables the build HarfBuzz-ICU, which is now the recommended layout
> engine
>  >     for ICU (International Components for Unicode), which deprecated ICU
> LE.
> That reads like a description of icu-le-hb to me. But my understanding is
> that icu-le-hb is separate, and not included with HarfBuzz. So isn't that
> text plain wrong?

Right, that sounds wrong. Thanks for spotting this.


More information about the HarfBuzz mailing list