| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- <?xml version="1.0"?>
- <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
- "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
- <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
- <!ENTITY version SYSTEM "version.xml">
- ]>
- <chapter id="install-harfbuzz">
- <title>Installing HarfBuzz</title>
-
- <section id="download">
- <title id="download.title">Downloading HarfBuzz</title>
- <para>
- The HarfBuzz source code is hosted at <ulink
- url="https://github.com/harfbuzz/harfbuzz">github.com/harfbuzz/harfbuzz</ulink>.
- </para>
- <para>
- Tarball releases and Win32 binary bundles (which include the
- libharfbuzz DLL, hb-view.exe, hb-shape.exe, and all
- dependencies) of HarfBuzz can be downloaded from <ulink
- url="https://github.com/harfbuzz/harfbuzz/releases">github.com/harfbuzz/harfbuzz/releases</ulink>.
- </para>
- <para>
- Release notes are posted with each new release to provide an
- overview of the changes. The project <ulink url="https://github.com/harfbuzz/harfbuzz/issues">tracks bug
- reports and other issues</ulink> on GitHub. Discussion and
- questions are welcome on <ulink
- url="https://github.com/harfbuzz/harfbuzz/discussions">GitHub</ulink> as well.
- </para>
- <para>
- The API included in the <filename
- class='headerfile'>hb.h</filename> file will not change in a
- compatibility-breaking way in any release. However, other,
- peripheral headers are more likely to go through minor
- modifications. We will do our best to never change APIs in an
- incompatible way. We will <emphasis>never</emphasis> break the ABI.
- </para>
- </section>
-
- <section id="building">
- <title>Building HarfBuzz</title>
- <section id="building.linux">
- <title>Building on Linux</title>
- <para>
- <emphasis>(1)</emphasis> To build HarfBuzz on Linux, you must first install the
- development packages for FreeType, Cairo, and GLib. The exact
- commands required for this step will vary depending on
- the Linux distribution you use.
- </para>
- <para>
- For example, on an Ubuntu or Debian system, you would run:
- <programlisting><command>sudo apt install</command> <package>gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev</package></programlisting>
- On Fedora, RHEL, CentOS, or other Red-Hat–based systems, you would run:
- <programlisting><command>sudo yum install</command> <package>gcc gcc-c++ freetype-devel glib2-devel cairo-devel</package></programlisting>
- </para>
-
- <para>
- <emphasis>(2)</emphasis> The next step depends on whether you
- are building from the source in a downloaded release tarball or
- from the source directly from the git repository.
- </para>
- <para>
- <emphasis>(2)(a)</emphasis> If you downloaded the HarfBuzz
- source code in a tarball, you can now extract the source.
- </para>
- <para>
- From a shell in the top-level directory of the extracted source
- code, you can run <command>meson build</command> followed by
- <command>meson compile -C build</command> as with any other standard package.
- </para>
- <para>
- This should leave you with a shared
- library in the <filename>src/</filename> directory, and a few
- utility programs including <command>hb-view</command> and
- <command>hb-shape</command> under the <filename>util/</filename>
- directory.
- </para>
- <para>
- <emphasis>(2)(b)</emphasis> If you are building from the source in the HarfBuzz git
- repository, rather than installing from a downloaded tarball
- release, then you must install two more auxiliary tools before you
- can build for the first time: <package>pkg-config</package>.
- </para>
- <para>
- On Ubuntu or Debian, run:
- <programlisting><command>sudo apt-get install</command> <package>meson pkg-config gtk-doc-tools</package></programlisting>
- On Fedora, RHEL, CentOS, run:
- <programlisting><command>sudo yum install</command> <package>meson pkgconfig gtk-doc</package></programlisting>
-
- </para>
- <para>
- With <package>pkg-config</package> installed, you can now run
- <command>meson build</command> then
- <command>meson compile -C build</command> to build HarfBuzz.
- </para>
- </section>
-
- <section id="building.windows">
- <title>Building on Windows</title>
- <para>
- <ulink url="https://mesonbuild.com/Getting-meson.html">Install meson</ulink>
- and run (from the console) <command>meson build</command> (by default
- bundled dependencies are not built, <command>--wrap-mode=default</command>
- overrides this), then <command>meson compile -C build</command> to
- build HarfBuzz.
- </para>
- </section>
-
- <section id="building.macos">
- <title>Building on macOS</title>
- <para>
- There are two ways to build HarfBuzz on Mac systems: MacPorts
- and Homebrew. The process is similar to the process used on a
- Linux system.
- </para>
- <para>
- <emphasis>(1)</emphasis> You must first install the
- development packages for FreeType, Cairo, and GLib. If you are
- using MacPorts, you should run:
- <programlisting><command>sudo port install</command> <package>freetype glib2 cairo</package></programlisting>
- </para>
- <para>
- If you are using Homebrew, you should run:
- <programlisting><command>brew install</command> <package>freetype glib cairo</package></programlisting>
- </para>
- <para>
- <emphasis>(2)</emphasis> The next step depends on whether you are building from the
- source in a downloaded release tarball or from the source directly
- from the git repository.
- </para>
- <para>
- <emphasis>(2)(a)</emphasis> If you are installing HarfBuzz
- from a downloaded tarball release, extract the tarball and
- open a Terminal in the extracted source-code directory. Run:
- <programlisting><command>meson build</command></programlisting>
- followed by:
- <programlisting><command>meson compile -C build</command></programlisting>
- to build HarfBuzz.
- </para>
- <para>
- <emphasis>(2)(b)</emphasis> Alternatively, if you are building
- HarfBuzz from the source in the HarfBuzz git repository, then
- you must install several built-time dependencies before
- proceeding.
- </para>
- <para>If you are
- using MacPorts, you should run:
- <programlisting><command>sudo port install</command> <package>meson pkgconfig gtk-doc</package></programlisting>
- to install the build dependencies.
- </para>
- <para>If you are using Homebrew, you should run:
- <programlisting><command>brew install</command> <package>meson pkgconfig gtk-doc</package></programlisting>
- Finally, you can run:
- <programlisting><command>meson build</command></programlisting>
- </para>
- <para>
- <emphasis>(3)</emphasis> You can now build HarfBuzz (on either
- a MacPorts or a Homebrew system) by running:
- <programlisting><command>meson build</command></programlisting>
- followed by:
- <programlisting><command>meson compile -C build</command></programlisting>
- </para>
- <para>
- This should leave you with a shared
- library in the <filename>src/</filename> directory, and a few
- utility programs including <command>hb-view</command> and
- <command>hb-shape</command> under the <filename>util/</filename>
- directory.
- </para>
-
- </section>
- <section id="configuration">
- <title>Configuration options</title>
- <para>
- The instructions in the "Building HarfBuzz" section will build
- the source code under its default configuration. If needed,
- the following additional configuration options are available.
- </para>
- <variablelist>
- <?dbfo list-presentation="blocks"?>
- <varlistentry>
- <term><command>-Dglib=enabled</command></term>
- <listitem>
- <para>
- Use <ulink url="https://developer.gnome.org/glib/">GLib</ulink>. <emphasis>(Default = auto)</emphasis>
- </para>
- <para>
- This option enables or disables usage of the GLib
- library. The default setting is to check for the
- presence of GLib and, if it is found, build with
- GLib support. GLib is native to GNU/Linux systems but is
- available on other operating system as well.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>-Dgobject=enabled</command></term>
- <listitem>
- <para>
- Use <ulink url="https://developer.gnome.org/gobject/stable/">GObject</ulink>. <emphasis>(Default = no)</emphasis>
- </para>
- <para>
- This option enables or disables usage of the GObject
- library. The default setting is to check for the
- presence of GObject and, if it is found, build with
- GObject support. GObject is native to GNU/Linux systems but is
- available on other operating system as well.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>-Dcairo=enabled</command></term>
- <listitem>
- <para>
- Use <ulink url="https://cairographics.org/">Cairo</ulink>. <emphasis>(Default = auto)</emphasis>
- </para>
- <para>
- This option enables or disables usage of the Cairo
- graphics-rendering library. The default setting is to
- check for the presence of Cairo and, if it is found,
- build with Cairo support.
- </para>
- <para>
- Note: Cairo is used only by the HarfBuzz
- command-line utilities, and not by the HarfBuzz library.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>-Dicu=enabled</command></term>
- <listitem>
- <para>
- Use the <ulink url="http://site.icu-project.org/home">ICU</ulink> library. <emphasis>(Default = auto)</emphasis>
- </para>
- <para>
- This option enables or disables usage of the
- <emphasis>International Components for
- Unicode</emphasis> (ICU) library, which provides access
- to Unicode Character Database (UCD) properties as well
- as normalization and conversion functions. The default
- setting is to check for the presence of ICU and, if it
- is found, build with ICU support.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>-Dgraphite=enabled</command></term>
- <listitem>
- <para>
- Use the <ulink url="http://graphite.sil.org/">Graphite2</ulink> library. <emphasis>(Default = no)</emphasis>
- </para>
- <para>
- This option enables or disables usage of the Graphite2
- library, which provides support for the Graphite shaping
- model.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>-Dfreetype=enabled</command></term>
- <listitem>
- <para>
- Use the <ulink url="https://www.freetype.org/">FreeType</ulink> library. <emphasis>(Default = auto)</emphasis>
- </para>
- <para>
- This option enables or disables usage of the FreeType
- font-rendering library. The default setting is to check for the
- presence of FreeType and, if it is found, build with
- FreeType support.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>-Dgdi=enabled</command></term>
- <listitem>
- <para>
- Use the <ulink
- url="https://docs.microsoft.com/en-us/windows/desktop/intl/uniscribe">Uniscribe</ulink>
- library (experimental). <emphasis>(Default = no)</emphasis>
- </para>
- <para>
- This option enables or disables usage of the Uniscribe
- font-rendering library. Uniscribe is available on
- Windows systems. Uniscribe support is used only for
- testing purposes and does not need to be enabled for
- HarfBuzz to run on Windows systems.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>-Ddirectwrite=enabled</command></term>
- <listitem>
- <para>
- Use the <ulink url="https://docs.microsoft.com/en-us/windows/desktop/directwrite/direct-write-portal">DirectWrite</ulink> library (experimental). <emphasis>(Default = no)</emphasis>
- </para>
- <para>
- This option enables or disables usage of the DirectWrite
- font-rendering library. DirectWrite is available on
- Windows systems. DirectWrite support is used only for
- testing purposes and does not need to be enabled for
- HarfBuzz to run on Windows systems.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><command>-Dcoretext=enabled</command></term>
- <listitem>
- <para>
- Use the <ulink url="https://developer.apple.com/documentation/coretext">CoreText</ulink> library. <emphasis>(Default = no)</emphasis>
- </para>
- <para>
- This option enables or disables usage of the CoreText
- library. CoreText is available on macOS and iOS systems.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><command>-Ddocs=enabled</command></term>
- <listitem>
- <para>
- Use <ulink url="https://github.com/GNOME/gtk-doc">GTK-Doc</ulink>. <emphasis>(Default = no)</emphasis>
- </para>
- <para>
- This option enables the building of the documentation.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </section>
-
- </section>
- </chapter>
|