Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/harfbuzz/docs/usermanual-install-harfbuzz.xml @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 1 <?xml version="1.0"?> | |
| 2 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" | |
| 3 "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [ | |
| 4 <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'"> | |
| 5 <!ENTITY version SYSTEM "version.xml"> | |
| 6 ]> | |
| 7 <chapter id="install-harfbuzz"> | |
| 8 <title>Installing HarfBuzz</title> | |
| 9 | |
| 10 <section id="download"> | |
| 11 <title id="download.title">Downloading HarfBuzz</title> | |
| 12 <para> | |
| 13 The HarfBuzz source code is hosted at <ulink | |
| 14 url="https://github.com/harfbuzz/harfbuzz">github.com/harfbuzz/harfbuzz</ulink>. | |
| 15 </para> | |
| 16 <para> | |
| 17 Tarball releases and Win32 binary bundles (which include the | |
| 18 libharfbuzz DLL, hb-view.exe, hb-shape.exe, and all | |
| 19 dependencies) of HarfBuzz can be downloaded from <ulink | |
| 20 url="https://github.com/harfbuzz/harfbuzz/releases">github.com/harfbuzz/harfbuzz/releases</ulink>. | |
| 21 </para> | |
| 22 <para> | |
| 23 Release notes are posted with each new release to provide an | |
| 24 overview of the changes. The project <ulink url="https://github.com/harfbuzz/harfbuzz/issues">tracks bug | |
| 25 reports and other issues</ulink> on GitHub. Discussion and | |
| 26 questions are welcome on <ulink | |
| 27 url="https://github.com/harfbuzz/harfbuzz/discussions">GitHub</ulink> as well. | |
| 28 </para> | |
| 29 <para> | |
| 30 The API included in the <filename | |
| 31 class='headerfile'>hb.h</filename> file will not change in a | |
| 32 compatibility-breaking way in any release. However, other, | |
| 33 peripheral headers are more likely to go through minor | |
| 34 modifications. We will do our best to never change APIs in an | |
| 35 incompatible way. We will <emphasis>never</emphasis> break the ABI. | |
| 36 </para> | |
| 37 </section> | |
| 38 | |
| 39 <section id="building"> | |
| 40 <title>Building HarfBuzz</title> | |
| 41 | |
| 42 <section id="building.linux"> | |
| 43 <title>Building on Linux</title> | |
| 44 <para> | |
| 45 <emphasis>(1)</emphasis> To build HarfBuzz on Linux, you must first install the | |
| 46 development packages for FreeType, Cairo, and GLib. The exact | |
| 47 commands required for this step will vary depending on | |
| 48 the Linux distribution you use. | |
| 49 </para> | |
| 50 <para> | |
| 51 For example, on an Ubuntu or Debian system, you would run: | |
| 52 <programlisting><command>sudo apt install</command> <package>gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev</package></programlisting> | |
| 53 On Fedora, RHEL, CentOS, or other Red-Hat–based systems, you would run: | |
| 54 <programlisting><command>sudo yum install</command> <package>gcc gcc-c++ freetype-devel glib2-devel cairo-devel</package></programlisting> | |
| 55 | |
| 56 </para> | |
| 57 | |
| 58 <para> | |
| 59 <emphasis>(2)</emphasis> The next step depends on whether you | |
| 60 are building from the source in a downloaded release tarball or | |
| 61 from the source directly from the git repository. | |
| 62 </para> | |
| 63 <para> | |
| 64 <emphasis>(2)(a)</emphasis> If you downloaded the HarfBuzz | |
| 65 source code in a tarball, you can now extract the source. | |
| 66 </para> | |
| 67 <para> | |
| 68 From a shell in the top-level directory of the extracted source | |
| 69 code, you can run <command>meson build</command> followed by | |
| 70 <command>meson compile -C build</command> as with any other standard package. | |
| 71 </para> | |
| 72 <para> | |
| 73 This should leave you with a shared | |
| 74 library in the <filename>src/</filename> directory, and a few | |
| 75 utility programs including <command>hb-view</command> and | |
| 76 <command>hb-shape</command> under the <filename>util/</filename> | |
| 77 directory. | |
| 78 </para> | |
| 79 <para> | |
| 80 <emphasis>(2)(b)</emphasis> If you are building from the source in the HarfBuzz git | |
| 81 repository, rather than installing from a downloaded tarball | |
| 82 release, then you must install two more auxiliary tools before you | |
| 83 can build for the first time: <package>pkg-config</package>. | |
| 84 </para> | |
| 85 <para> | |
| 86 On Ubuntu or Debian, run: | |
| 87 <programlisting><command>sudo apt-get install</command> <package>meson pkg-config gtk-doc-tools</package></programlisting> | |
| 88 On Fedora, RHEL, CentOS, run: | |
| 89 <programlisting><command>sudo yum install</command> <package>meson pkgconfig gtk-doc</package></programlisting> | |
| 90 | |
| 91 </para> | |
| 92 <para> | |
| 93 With <package>pkg-config</package> installed, you can now run | |
| 94 <command>meson build</command> then | |
| 95 <command>meson compile -C build</command> to build HarfBuzz. | |
| 96 </para> | |
| 97 </section> | |
| 98 | |
| 99 | |
| 100 <section id="building.windows"> | |
| 101 <title>Building on Windows</title> | |
| 102 | |
| 103 <para> | |
| 104 <ulink url="https://mesonbuild.com/Getting-meson.html">Install meson</ulink> | |
| 105 and run (from the console) <command>meson build</command> (by default | |
| 106 bundled dependencies are not built, <command>--wrap-mode=default</command> | |
| 107 overrides this), then <command>meson compile -C build</command> to | |
| 108 build HarfBuzz. | |
| 109 </para> | |
| 110 </section> | |
| 111 | |
| 112 | |
| 113 <section id="building.macos"> | |
| 114 <title>Building on macOS</title> | |
| 115 | |
| 116 <para> | |
| 117 There are two ways to build HarfBuzz on Mac systems: MacPorts | |
| 118 and Homebrew. The process is similar to the process used on a | |
| 119 Linux system. | |
| 120 </para> | |
| 121 <para> | |
| 122 <emphasis>(1)</emphasis> You must first install the | |
| 123 development packages for FreeType, Cairo, and GLib. If you are | |
| 124 using MacPorts, you should run: | |
| 125 <programlisting><command>sudo port install</command> <package>freetype glib2 cairo</package></programlisting> | |
| 126 </para> | |
| 127 <para> | |
| 128 If you are using Homebrew, you should run: | |
| 129 <programlisting><command>brew install</command> <package>freetype glib cairo</package></programlisting> | |
| 130 </para> | |
| 131 <para> | |
| 132 <emphasis>(2)</emphasis> The next step depends on whether you are building from the | |
| 133 source in a downloaded release tarball or from the source directly | |
| 134 from the git repository. | |
| 135 </para> | |
| 136 <para> | |
| 137 <emphasis>(2)(a)</emphasis> If you are installing HarfBuzz | |
| 138 from a downloaded tarball release, extract the tarball and | |
| 139 open a Terminal in the extracted source-code directory. Run: | |
| 140 <programlisting><command>meson build</command></programlisting> | |
| 141 followed by: | |
| 142 <programlisting><command>meson compile -C build</command></programlisting> | |
| 143 to build HarfBuzz. | |
| 144 </para> | |
| 145 <para> | |
| 146 <emphasis>(2)(b)</emphasis> Alternatively, if you are building | |
| 147 HarfBuzz from the source in the HarfBuzz git repository, then | |
| 148 you must install several built-time dependencies before | |
| 149 proceeding. | |
| 150 </para> | |
| 151 <para>If you are | |
| 152 using MacPorts, you should run: | |
| 153 <programlisting><command>sudo port install</command> <package>meson pkgconfig gtk-doc</package></programlisting> | |
| 154 to install the build dependencies. | |
| 155 </para> | |
| 156 <para>If you are using Homebrew, you should run: | |
| 157 <programlisting><command>brew install</command> <package>meson pkgconfig gtk-doc</package></programlisting> | |
| 158 Finally, you can run: | |
| 159 <programlisting><command>meson build</command></programlisting> | |
| 160 </para> | |
| 161 <para> | |
| 162 <emphasis>(3)</emphasis> You can now build HarfBuzz (on either | |
| 163 a MacPorts or a Homebrew system) by running: | |
| 164 <programlisting><command>meson build</command></programlisting> | |
| 165 followed by: | |
| 166 <programlisting><command>meson compile -C build</command></programlisting> | |
| 167 </para> | |
| 168 <para> | |
| 169 This should leave you with a shared | |
| 170 library in the <filename>src/</filename> directory, and a few | |
| 171 utility programs including <command>hb-view</command> and | |
| 172 <command>hb-shape</command> under the <filename>util/</filename> | |
| 173 directory. | |
| 174 </para> | |
| 175 | |
| 176 </section> | |
| 177 | |
| 178 <section id="configuration"> | |
| 179 <title>Configuration options</title> | |
| 180 | |
| 181 <para> | |
| 182 The instructions in the "Building HarfBuzz" section will build | |
| 183 the source code under its default configuration. If needed, | |
| 184 the following additional configuration options are available. | |
| 185 </para> | |
| 186 | |
| 187 <variablelist> | |
| 188 <?dbfo list-presentation="blocks"?> | |
| 189 <varlistentry> | |
| 190 <term><command>-Dglib=enabled</command></term> | |
| 191 <listitem> | |
| 192 <para> | |
| 193 Use <ulink url="https://developer.gnome.org/glib/">GLib</ulink>. <emphasis>(Default = auto)</emphasis> | |
| 194 </para> | |
| 195 <para> | |
| 196 This option enables or disables usage of the GLib | |
| 197 library. The default setting is to check for the | |
| 198 presence of GLib and, if it is found, build with | |
| 199 GLib support. GLib is native to GNU/Linux systems but is | |
| 200 available on other operating system as well. | |
| 201 </para> | |
| 202 </listitem> | |
| 203 </varlistentry> | |
| 204 | |
| 205 <varlistentry> | |
| 206 <term><command>-Dgobject=enabled</command></term> | |
| 207 <listitem> | |
| 208 <para> | |
| 209 Use <ulink url="https://developer.gnome.org/gobject/stable/">GObject</ulink>. <emphasis>(Default = no)</emphasis> | |
| 210 </para> | |
| 211 <para> | |
| 212 This option enables or disables usage of the GObject | |
| 213 library. The default setting is to check for the | |
| 214 presence of GObject and, if it is found, build with | |
| 215 GObject support. GObject is native to GNU/Linux systems but is | |
| 216 available on other operating system as well. | |
| 217 </para> | |
| 218 </listitem> | |
| 219 </varlistentry> | |
| 220 | |
| 221 <varlistentry> | |
| 222 <term><command>-Dcairo=enabled</command></term> | |
| 223 <listitem> | |
| 224 <para> | |
| 225 Use <ulink url="https://cairographics.org/">Cairo</ulink>. <emphasis>(Default = auto)</emphasis> | |
| 226 </para> | |
| 227 <para> | |
| 228 This option enables or disables usage of the Cairo | |
| 229 graphics-rendering library. The default setting is to | |
| 230 check for the presence of Cairo and, if it is found, | |
| 231 build with Cairo support. | |
| 232 </para> | |
| 233 <para> | |
| 234 Note: Cairo is used only by the HarfBuzz | |
| 235 command-line utilities, and not by the HarfBuzz library. | |
| 236 </para> | |
| 237 </listitem> | |
| 238 </varlistentry> | |
| 239 | |
| 240 <varlistentry> | |
| 241 <term><command>-Dicu=enabled</command></term> | |
| 242 <listitem> | |
| 243 <para> | |
| 244 Use the <ulink url="http://site.icu-project.org/home">ICU</ulink> library. <emphasis>(Default = auto)</emphasis> | |
| 245 </para> | |
| 246 <para> | |
| 247 This option enables or disables usage of the | |
| 248 <emphasis>International Components for | |
| 249 Unicode</emphasis> (ICU) library, which provides access | |
| 250 to Unicode Character Database (UCD) properties as well | |
| 251 as normalization and conversion functions. The default | |
| 252 setting is to check for the presence of ICU and, if it | |
| 253 is found, build with ICU support. | |
| 254 </para> | |
| 255 </listitem> | |
| 256 </varlistentry> | |
| 257 | |
| 258 <varlistentry> | |
| 259 <term><command>-Dgraphite=enabled</command></term> | |
| 260 <listitem> | |
| 261 <para> | |
| 262 Use the <ulink url="http://graphite.sil.org/">Graphite2</ulink> library. <emphasis>(Default = no)</emphasis> | |
| 263 </para> | |
| 264 <para> | |
| 265 This option enables or disables usage of the Graphite2 | |
| 266 library, which provides support for the Graphite shaping | |
| 267 model. | |
| 268 </para> | |
| 269 </listitem> | |
| 270 </varlistentry> | |
| 271 | |
| 272 <varlistentry> | |
| 273 <term><command>-Dfreetype=enabled</command></term> | |
| 274 <listitem> | |
| 275 <para> | |
| 276 Use the <ulink url="https://www.freetype.org/">FreeType</ulink> library. <emphasis>(Default = auto)</emphasis> | |
| 277 </para> | |
| 278 <para> | |
| 279 This option enables or disables usage of the FreeType | |
| 280 font-rendering library. The default setting is to check for the | |
| 281 presence of FreeType and, if it is found, build with | |
| 282 FreeType support. | |
| 283 </para> | |
| 284 </listitem> | |
| 285 </varlistentry> | |
| 286 | |
| 287 <varlistentry> | |
| 288 <term><command>-Dgdi=enabled</command></term> | |
| 289 <listitem> | |
| 290 <para> | |
| 291 Use the <ulink | |
| 292 url="https://docs.microsoft.com/en-us/windows/desktop/intl/uniscribe">Uniscribe</ulink> | |
| 293 library (experimental). <emphasis>(Default = no)</emphasis> | |
| 294 </para> | |
| 295 <para> | |
| 296 This option enables or disables usage of the Uniscribe | |
| 297 font-rendering library. Uniscribe is available on | |
| 298 Windows systems. Uniscribe support is used only for | |
| 299 testing purposes and does not need to be enabled for | |
| 300 HarfBuzz to run on Windows systems. | |
| 301 </para> | |
| 302 </listitem> | |
| 303 </varlistentry> | |
| 304 | |
| 305 <varlistentry> | |
| 306 <term><command>-Ddirectwrite=enabled</command></term> | |
| 307 <listitem> | |
| 308 <para> | |
| 309 Use the <ulink url="https://docs.microsoft.com/en-us/windows/desktop/directwrite/direct-write-portal">DirectWrite</ulink> library (experimental). <emphasis>(Default = no)</emphasis> | |
| 310 </para> | |
| 311 <para> | |
| 312 This option enables or disables usage of the DirectWrite | |
| 313 font-rendering library. DirectWrite is available on | |
| 314 Windows systems. DirectWrite support is used only for | |
| 315 testing purposes and does not need to be enabled for | |
| 316 HarfBuzz to run on Windows systems. | |
| 317 </para> | |
| 318 </listitem> | |
| 319 </varlistentry> | |
| 320 | |
| 321 <varlistentry> | |
| 322 <term><command>-Dcoretext=enabled</command></term> | |
| 323 <listitem> | |
| 324 <para> | |
| 325 Use the <ulink url="https://developer.apple.com/documentation/coretext">CoreText</ulink> library. <emphasis>(Default = no)</emphasis> | |
| 326 </para> | |
| 327 <para> | |
| 328 This option enables or disables usage of the CoreText | |
| 329 library. CoreText is available on macOS and iOS systems. | |
| 330 </para> | |
| 331 </listitem> | |
| 332 </varlistentry> | |
| 333 | |
| 334 <varlistentry> | |
| 335 <term><command>-Ddocs=enabled</command></term> | |
| 336 <listitem> | |
| 337 <para> | |
| 338 Use <ulink url="https://github.com/GNOME/gtk-doc">GTK-Doc</ulink>. <emphasis>(Default = no)</emphasis> | |
| 339 </para> | |
| 340 <para> | |
| 341 This option enables the building of the documentation. | |
| 342 </para> | |
| 343 </listitem> | |
| 344 </varlistentry> | |
| 345 </variablelist> | |
| 346 </section> | |
| 347 | |
| 348 </section> | |
| 349 </chapter> |
