[HarfBuzz] Building and testing HarfBuzz 2.3.0 on MinGW

Eli Zaretskii eliz at gnu.org
Fri Feb 8 09:22:03 UTC 2019


> From: Nathan Willis <nwillis at glyphography.com>
> Date: Mon, 4 Feb 2019 12:28:02 +0000
> Cc: harfbuzz at lists.freedesktop.org
> 
> On Sat, Jan 26, 2019 at 5:35 PM Eli Zaretskii <eliz at gnu.org> wrote:
> 
> > 1) It would be good to have some guidance in some README or in the
> > HTML docs regarding the optional dependencies and configuration
> > options, and their significance.  For example, it turns out Glib is
> > needed to run a large portion of the test suite, something that wasn't
> > clear (I initially concluded that I didn't need Glib at all).  Also,
> > hb-shape is not built if Glib isn't available.  Similarly, hb-view is
> > not build unless both Cairo and cairo-ft are available.
> >
> >
> I added https://harfbuzz.github.io/building.html#configuration a few weeks
> ago; would you mind elaborating on what is missing there from your POV?

Thanks for adding this, and sorry for the long delay in responding.

The information you added tells when to use the optional configure
switches.  That is important, but there's a more general issue of what
optional dependencies are needed for which parts of HarfBuzz's
functionalities.  This is important for someone who wants to build
HarfBuzz with the minimal set of dependencies, but without losing any
functionality important for one's use case.  Without a good
understanding of these issues, one cannot easily decide on which of
the configure switches to use, and more importantly what packages need
to be installed before building HarfBuzz.

In response to my questions, Khaled once provided some of the
information about that.  I now combine that below with what I learned
while building HarfBuzz:

  . ICU is needed for accessing Unicode character properties; UCDN is
    the built-in alternative to that which has no external
    dependencies.  My conclusion was that ICU is not needed, but maybe
    it has some advantages, in which case it would be good to describe
    them.

  . Cairo is needed for command-line tools (so can be skipped if one
    only wants the library).  Note that Cairo alone is not enough for
    building the command-line tools, you also need cairo-ft, and for
    hb-shape one also needs Glib.

  . Freetype is one of two font callbacks; the other is built-in and
    has no external dependencies.  The decision whether to use
    Freetype largely depends on whether the program(s) to be linked
    against HarfBuzz already use Freetype.

  . Fontconfig is only needed for command-line tools.

  . Graphite2 is becoming less and less important, as fonts which
    require that are rare, and their importance for minority scripts
    is diminishing with recent OpenType developments.

  . Glib is needed for running a large part of the test suite, so if
    one decides not to build with Glib, a separate build with Glib
    just for running the test suite is a good idea.

  . Python is required (and should be on PATH) for most of the test
    suite.

  . It is not clear to me what are GObject and Introspection needed
    for; it would be good to clarify that.

Btw, the information about "Building on Windows" is IMO outdated:
nowadays one can use the "normal" Unix configure/make steps assuming
one has MSYS and MinGW installed.  That's what I did.  There should be
no need anymore for any Windows-specific build procedures.

Thanks, and let me know if I can help more with this documentation
effort.


More information about the HarfBuzz mailing list