/usr/share/gtk-doc/html/harfbuzz
NameSizeModeActions
a-clustering-example-for-levels-0-and-1.html53070644editdlrm
aat-shaping.html23590644editdlrm
adding-text-to-the-buffer.html58000644editdlrm
annotation-glossary.html56440644editdlrm
api-index-0-9-2.html444470644editdlrm
api-index-0-9-5.html33390644editdlrm
api-index-0-9-7.html123060644editdlrm
api-index-0-9-8.html20880644editdlrm
api-index-0-9-10.html32000644editdlrm
api-index-0-9-11.html20700644editdlrm
api-index-0-9-20.html23030644editdlrm
api-index-0-9-22.html21150644editdlrm
api-index-0-9-28.html20620644editdlrm
api-index-0-9-30.html25250644editdlrm
api-index-0-9-31.html29320644editdlrm
api-index-0-9-38.html38220644editdlrm
api-index-0-9-39.html20580644editdlrm
api-index-0-9-41.html20670644editdlrm
api-index-0-9-42.html25870644editdlrm
api-index-1-0-5.html27370644editdlrm
api-index-1-1-2.html23740644editdlrm
api-index-1-1-3.html29570644editdlrm
api-index-1-2-3.html28720644editdlrm
api-index-1-3-3.html55360644editdlrm
api-index-1-4-0.html23470644editdlrm
api-index-1-4-2.html53690644editdlrm
api-index-1-4-3.html20290644editdlrm
api-index-1-5-0.html29000644editdlrm
api-index-1-6-0.html22660644editdlrm
api-index-1-7-5.html17010644editdlrm
api-index-1-7-7.html55500644editdlrm
api-index-1-8-0.html26620644editdlrm
api-index-1-8-1.html24850644editdlrm
api-index-1-8-5.html20880644editdlrm
api-index-1-8-6.html31870644editdlrm
api-index-1-9-0.html34600644editdlrm
api-index-2-0-0.html59260644editdlrm
api-index-2-1-0.html80690644editdlrm
api-index-2-2-0.html53260644editdlrm
api-index-2-3-0.html26500644editdlrm
api-index-2-4-0.html20870644editdlrm
api-index-2-5-0.html21080644editdlrm
api-index-2-6-0.html52400644editdlrm
api-index-2-7-3.html28240644editdlrm
api-index-full.html1403400644editdlrm
buffers-language-script-and-direction.html49510644editdlrm
building.html153460644editdlrm
ch01s03.html44950644editdlrm
ch03s02.html60780644editdlrm
ch03s03.html45800644editdlrm
ch12.html35570644editdlrm
ch13.html30780644editdlrm
ch14.html18760644editdlrm
ch15.html30440644editdlrm
clusters.html64990644editdlrm
complex-scripts.html30010644editdlrm
customizing-unicode-functions.html64000644editdlrm
deprecated-api-index.html62230644editdlrm
fonts-and-faces-custom-functions.html73980644editdlrm
fonts-and-faces-native-opentype.html51960644editdlrm
fonts-and-faces-variable.html53040644editdlrm
fonts-and-faces.html76710644editdlrm
getting-started.html50430644editdlrm
graphite-shaping.html23080644editdlrm
harfbuzz-hb-aat-layout.html1393450644editdlrm
harfbuzz-hb-blob.html359020644editdlrm
harfbuzz-hb-buffer.html1954910644editdlrm
harfbuzz-hb-common.html653230644editdlrm
harfbuzz-hb-coretext.html113710644editdlrm
harfbuzz-hb-deprecated.html253280644editdlrm
harfbuzz-hb-directwrite.html61550644editdlrm
harfbuzz-hb-face.html521000644editdlrm
harfbuzz-hb-font.html2626960644editdlrm
harfbuzz-hb-ft.html287190644editdlrm
harfbuzz-hb-gdi.html43100644editdlrm
harfbuzz-hb-glib.html100860644editdlrm
harfbuzz-hb-gobject.html29530644editdlrm
harfbuzz-hb-graphite2.html58280644editdlrm
harfbuzz-hb-icu.html79690644editdlrm
harfbuzz-hb-map.html291880644editdlrm
harfbuzz-hb-ot-color.html399490644editdlrm
harfbuzz-hb-ot-font.html46300644editdlrm
harfbuzz-hb-ot-layout.html1450880644editdlrm
harfbuzz-hb-ot-math.html528860644editdlrm
harfbuzz-hb-ot-meta.html102860644editdlrm
harfbuzz-hb-ot-metrics.html179270644editdlrm
harfbuzz-hb-ot-name.html196030644editdlrm
harfbuzz-hb-ot-shape.html62570644editdlrm
harfbuzz-hb-ot-var.html367080644editdlrm
harfbuzz-hb-set.html594230644editdlrm
harfbuzz-hb-shape-plan.html384120644editdlrm
harfbuzz-hb-shape.html117020644editdlrm
harfbuzz-hb-unicode.html1067010644editdlrm
harfbuzz-hb-uniscribe.html60990644editdlrm
harfbuzz-hb-version.html104150644editdlrm
harfbuzz.devhelp21794570644editdlrm
HarfBuzz.png62540644editdlrm
HarfBuzz.svg67450644editdlrm
home.png1690644editdlrm
index.html195660644editdlrm
install-harfbuzz.html37870644editdlrm
integration-coretext.html64830644editdlrm
integration-freetype.html92930644editdlrm
integration-icu.html41860644editdlrm
integration-python.html31810644editdlrm
integration-uniscribe.html67250644editdlrm
integration.html99360644editdlrm
left-insensitive.png3340644editdlrm
left.png1850644editdlrm
level-2.html70090644editdlrm
object-model-blobs.html29020644editdlrm
object-model-lifecycle.html49780644editdlrm
object-model-object-types.html41110644editdlrm
object-model-user-data.html32550644editdlrm
object-model.html39780644editdlrm
opentype-shaping-models.html44630644editdlrm
pt01.html94170644editdlrm
pt02.html126740644editdlrm
reordering-in-levels-0-and-1.html31020644editdlrm
right-insensitive.png2330644editdlrm
right.png1840644editdlrm
setting-buffer-properties.html78300644editdlrm
shaping-and-shape-plans.html81960644editdlrm
shaping-concepts.html38690644editdlrm
shaping-opentype-features.html66630644editdlrm
shaping-operations.html45370644editdlrm
shaping-plans-and-caching.html46410644editdlrm
shaping-shaper-selection.html34060644editdlrm
style.css116060644editdlrm
text-runs.html25330644editdlrm
the-distinction-between-levels-0-and-1.html48640644editdlrm
unicode-character-categories.html42040644editdlrm
up-insensitive.png2880644editdlrm
up.png1860644editdlrm
utilities-common-types-apis.html43650644editdlrm
utilities-ucdn.html26320644editdlrm
utilities.html92740644editdlrm
what-harfbuzz-doesnt-do.html55350644editdlrm
what-is-harfbuzz.html55030644editdlrm
why-do-i-need-a-shaping-engine.html81240644editdlrm
why-is-it-called-harfbuzz.html21710644editdlrm
working-with-harfbuzz-clusters.html100830644editdlrm
Edit: /usr/share/gtk-doc/html/harfbuzz/building.html (15346B)
Building HarfBuzz: HarfBuzz Manual

Building HarfBuzz

Building on Linux

(1) 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.

For example, on an Ubuntu or Debian system, you would run:

sudo apt install gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev

On Fedora, RHEL, CentOS, or other Red-Hat–based systems, you would run:

sudo yum install gcc gcc-c++ freetype-devel glib2-devel cairo-devel

(2) 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.

(2)(a) If you downloaded the HarfBuzz source code in a tarball, you can now extract the source.

From a shell in the top-level directory of the extracted source code, you can run meson build followed by meson compile -C build as with any other standard package.

This should leave you with a shared library in the src/ directory, and a few utility programs including hb-view and hb-shape under the util/ directory.

(2)(b) 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: pkg-config.

On Ubuntu or Debian, run:

sudo apt-get install meson pkg-config gtk-doc-tools

On Fedora, RHEL, CentOS, run:

sudo yum install meson pkgconfig gtk-doc

With pkg-config installed, you can now run meson build then meson compile -C build to build HarfBuzz.

Building on Windows

Install meson and run (from the console) meson build (by default bundled dependencies are not built, --wrap-mode=default overrides this), then meson compile -C build to build HarfBuzz.

Building on macOS

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.

(1) You must first install the development packages for FreeType, Cairo, and GLib. If you are using MacPorts, you should run:

sudo port install freetype glib2 cairo

If you are using Homebrew, you should run:

brew install freetype glib cairo

(2) 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.

(2)(a) If you are installing HarfBuzz from a downloaded tarball release, extract the tarball and open a Terminal in the extracted source-code directory. Run:

meson build

followed by:

meson compile -C build

to build HarfBuzz.

(2)(b) Alternatively, if you are building HarfBuzz from the source in the HarfBuzz git repository, then you must install several built-time dependencies before proceeding.

If you are using MacPorts, you should run:

sudo port install meson pkgconfig gtk-doc

to install the build dependencies.

If you are using Homebrew, you should run:

brew install meson pkgconfig gtk-doc

Finally, you can run:

meson build

(3) You can now build HarfBuzz (on either a MacPorts or a Homebrew system) by running:

meson build

followed by:

meson compile -C build

This should leave you with a shared library in the src/ directory, and a few utility programs including hb-view and hb-shape under the util/ directory.

Configuration options

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.

-Dglib=enabled

Use GLib. (Default = auto)

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.

-Dgobject=enabled

Use GObject. (Default = no)

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.

-Dcairo=enabled

Use Cairo. (Default = auto)

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.

Note: Cairo is used only by the HarfBuzz command-line utilities, and not by the HarfBuzz library.

-Dfontconfig=enabled

Use Fontconfig. (Default = auto)

This option enables or disables usage of the Fontconfig library, which provides font-matching functions and provides access to font properties. The default setting is to check for the presence of Fontconfig and, if it is found, build with Fontconfig support.

Note: Fontconfig is used only by the HarfBuzz command-line utilities, and not by the HarfBuzz library.

-Dicu=enabled

Use the ICU library. (Default = auto)

This option enables or disables usage of the International Components for Unicode (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.

-Dgraphite=enabled

Use the Graphite2 library. (Default = no)

This option enables or disables usage of the Graphite2 library, which provides support for the Graphite shaping model.

-Dfreetype=enabled

Use the FreeType library. (Default = auto)

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.

-Dgdi=enabled

Use the Uniscribe library (experimental). (Default = no)

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.

-Ddirectwrite=enabled

Use the DirectWrite library (experimental). (Default = no)

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.

-Dcoretext=enabled

Use the CoreText library. (Default = no)

This option enables or disables usage of the CoreText library. CoreText is available on macOS and iOS systems.

-Ddocs=enabled

Use GTK-Doc. (Default = no)

This option enables the building of the documentation.