Name harfbuzz
Description OpenType text shaping engine
Version 12.3.2-1
Package Base harfbuzz
Homepage https://harfbuzz.github.io/
Maintainers ['Caleb Maclennan <alerque@archlinux.org>', 'Caleb Maclennan <caleb@alerque.com>', 'Jan Alexander Steffens (heftig) <heftig@archlinux.org>']
Contributors ['Jan de Groot <jgc@archlinux.org>']
Distro-repo https://gitlab.archlinux.org/archlinux/packaging/packages/harfbuzz
Sources ['git+https://github.com/harfbuzz/harfbuzz?signed#tag=12.3.2']
Dependencies ['freetype2', 'glib2', 'glibc', 'graphite', 'libfreetype.so', 'libglib-2.0.so', 'libgobject-2.0.so', 'libgraphite2.so']
Optional-Dependencies ['harfbuzz-utils']
Build-Dependencies ['cairo', 'chafa', 'git', 'glib2-devel', 'gobject-introspection', 'gtk-doc', 'help2man', 'icu', 'meson', 'python', 'ragel']
Provides ['libharfbuzz.so', 'libharfbuzz-subset.so', 'libharfbuzz-gobject.so']
Builddate 24-01-2026 15:49:52
Architecture x86_64
Distro-Version
Licenses ['MIT']
Hash a7f5b98e12c62533c48b111664ec5e9910a898943a7167e4d01149fadeb4efff
# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
# Maintainer: Caleb Maclennan <caleb@alerque.com>
# Contributor: Jan de Groot <jgc@archlinux.org>

pkgbase=harfbuzz
pkgname=(
  harfbuzz
  harfbuzz-cairo
  harfbuzz-icu
  harfbuzz-utils
  harfbuzz-docs
)
pkgver=12.3.2
pkgrel=1
pkgdesc="OpenType text shaping engine"
url="https://harfbuzz.github.io/"
arch=(x86_64)
license=(MIT)
depends=(
  freetype2
  glib2
  glibc
  graphite
)
makedepends=(
  cairo
  chafa
  git
  glib2-devel
  gobject-introspection
  gtk-doc
  help2man
  icu
  meson
  python
  ragel
)
checkdepends=(
  python-fonttools
  python-setuptools
)
source=("git+https://github.com/harfbuzz/harfbuzz?signed#tag=$pkgver")
b2sums=('d6f26fe614aeea8f84e5be74b1cb4fd8212aa285b2a951f2dee3a39e1ad1be14524ce0b2c1d02b3307d63610e58510a2345b5b2619ea078bd820a07edcac1893')
validpgpkeys=(
  053D20F17CCCA9651B2C6FCB9AB24930C0B997A2 # Khaled Hosny <khaled@aliftype.com> (@khaledhosny)
  9F377DDB6D3153A48EB3EB1E63CC496475267693 # Caleb Maclennan <caleb@alerque.com> (@alerque)
  2277650A4E8BDFE4B7F6BE419FEE04E5D3531115 # Ebrahim Byagowi <ebrahim@gnu.org> (@ebraminio)
  EACF64F53455E2771BA661A4803B21859F015E4E # Behdad Esfahbod <behdad@behdad.org> (@behdad)
)

prepare() {
  cd harfbuzz
}

build() {
  local meson_options=(
    -D cpp_std=c++17
    -D graphite2=enabled
  )

  # Harfbuzz wants no exceptions
  CFLAGS="${CFLAGS/-fexceptions/}"
  CXXFLAGS="${CXXFLAGS/-fexceptions/}"

  arch-meson harfbuzz build "${meson_options[@]}"
  meson compile -C build
}

check() {
  mkdir -p tmp
  TMPDIR="$PWD/tmp" meson test -C build --print-errorlogs
  rm -r tmp
}

_pick() {
  local p="$1" f d; shift
  for f; do
    d="$srcdir/$p/${f#$pkgdir/}"
    mkdir -p "$(dirname "$d")"
    mv "$f" "$d"
    rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
  done
}

package_harfbuzz() {
  depends+=(
    libfreetype.so
    libgraphite2.so
    libg{lib,object}-2.0.so
  )
  optdepends=('harfbuzz-utils: utilities')
  provides=(libharfbuzz{,-subset,-gobject}.so)

  meson install -C build --destdir "$pkgdir"

  ( cd "$pkgdir"

    _pick hb-cairo usr/lib/libharfbuzz-cairo*
    _pick hb-cairo usr/lib/pkgconfig/harfbuzz-cairo.pc
    _pick hb-cairo usr/include/harfbuzz/hb-cairo.h

    _pick hb-icu usr/lib/libharfbuzz-icu*
    _pick hb-icu usr/lib/pkgconfig/harfbuzz-icu.pc
    _pick hb-icu usr/include/harfbuzz/hb-icu.h

    _pick hb-utils usr/bin
    _pick hb-utils usr/share/man/man1

    _pick hb-docs usr/share/gtk-doc
  )

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 harfbuzz/COPYING
}

package_harfbuzz-cairo() {
  pkgdesc+=" - Cairo integration"
  depends=(
    cairo
    freetype2
    glib2
    glibc
    graphite
    harfbuzz
    libcairo.so
    libharfbuzz.so
  )
  provides=(libharfbuzz-cairo.so)

  mv hb-cairo/* "$pkgdir"

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 harfbuzz/COPYING
}

package_harfbuzz-icu() {
  pkgdesc+=" - ICU integration"
  depends=(
    glibc
    harfbuzz
    icu
    libharfbuzz.so
    libicuuc.so
  )
  provides=(libharfbuzz-icu.so)

  mv hb-icu/* "$pkgdir"

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 harfbuzz/COPYING
}

package_harfbuzz-utils() {
  pkgdesc+=" - Utilities"
  depends=(
    cairo
    chafa
    freetype2
    glib2
    glibc
    harfbuzz
    harfbuzz-cairo
    libcairo.so
    libchafa.so
    libfreetype.so
    libglib-2.0.so
    libgobject-2.0.so
    libharfbuzz-cairo.so
    libharfbuzz-gobject.so
    libharfbuzz-subset.so
    libharfbuzz.so
  )

  mv hb-utils/* "$pkgdir"

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 harfbuzz/COPYING
}

package_harfbuzz-docs() {
  pkgdesc+=" - Documentation"
  depends=()

  mv hb-docs/* "$pkgdir"

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 harfbuzz/COPYING
}

# vim:set sw=2 sts=-1 et: