$npx skillfedfor your agent

uharfbuzz

Streamlined Cython bindings for the harfbuzz shaping engine

Worth itPyPI LinguisticReleased Jul 2026960.3K downloads / moApache License 2.0Platform wheel

Decision gist · record as of 2026-08-14

platform wheels — uharfbuzz-0.56.0-cp310-abi3-macosx_10_9_universal2.whl · uharfbuzz-0.56.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl · uharfbuzz-0.56.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
v0.56.0 · released 2026-07-31 · Python >=3.10

Yes. The package is actively maintained, has no known vulnerabilities, offers permissive licensing, and provides prebuilt wheels for common platforms. Install friction is moderate but manageable. Choose it if you need direct, low-level control over text shaping and glyph positioning; it's the standard Python binding for HarfBuzz.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Requires Python 3.10 or later.
  • If building from source against system HarfBuzz, pkg-config and HarfBuzz development headers must be available.
  • Medium install friction due to compiled C extensions.

License · maintenance · safety

Apache License 2.0 (permissive) — Apache License 2.0 is permissive; you may use, modify, and distribute this package freely in commercial or private projects provided you include the license notice.

last release 2026-07-31 (14 days) · last repo commit 2026-08-13 · 108 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 960,306 downloads/mo, #4,636 on PyPI

Verify before relying

import uharfbuzz as hb

blob = hb.Blob.from_file_path('font.ttf')
face = hb.Face(blob)
font = hb.Font(face)
buf = hb.Buffer()
buf.add_str('Hello')
buf.guess_segment_properties()
hb.shape(font, buf, {"kern": True})
for info, pos in zip(buf.glyph_infos, buf.glyph_positions):
    print(f"glyph {info.codepoint}: x_advance={pos.x_advance}")
  • Whether prebuilt wheels cover all deployment targets you need beyond the listed platforms (macOS, Linux, Windows, WebAssembly).
  • Performance characteristics when shaping large volumes of text or complex scripts.
Same gist for agents: .md · .json

What it is and what it does

uharfbuzz is a Python wrapper around the HarfBuzz text shaping engine, a C library that converts Unicode text and font files into positioned glyphs. It handles complex typography tasks like kerning (adjusting spacing between letter pairs), ligature substitution (combining characters like 'fi' into a single glyph), and script-specific shaping rules. The package bundles minimal HarfBuzz sources by default, so installation requires no separate system dependency—though you can opt into using a system-provided HarfBuzz build if needed.

You load a font file, create a buffer with text, apply shaping with optional features, then iterate over the resulting glyph infos and positions to extract advance widths, offsets, and glyph IDs. It's a thin, direct binding to HarfBuzz's core API, exposing the shaping pipeline without abstraction layers. The package is actively maintained, supports current Python versions (3.10+), and offers prebuilt wheels for major platforms.

Use it for

  • Render text to screen or image with proper kerning and ligatures in graphics or game engines.
  • Build font inspection tools that need to map characters to glyphs and measure their positions.
  • Implement complex script support (Arabic, Devanagari, etc.) where character-to-glyph mapping is non-trivial.
  • Generate PDF or vector output with correct text layout and glyph positioning.
  • Validate font behavior by programmatically shaping test strings and inspecting glyph metrics.

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

Worth it

Yes.

The package is actively maintained, has no known vulnerabilities, offers permissive licensing, and provides prebuilt wheels for common platforms. Install friction is moderate but manageable. Choose it if you need direct, low-level control over text shaping and glyph positioning; it's the standard Python binding for HarfBuzz.

Install

uharfbuzz on PyPI

Before you install

Medium install friction due to compiled C extensions. Prebuilt wheels available for common platforms (CPython 3.10+, PyPy 3.11) and architectures. Alternatively, can build against system HarfBuzz via USE_SYSTEM_LIBS=1 if pkg-config is available. Package is actively maintained with recent releases.

Requires Python 3.10 or later. If building from source against system HarfBuzz, pkg-config and HarfBuzz development headers must be available.

License in practice

Apache License 2.0 is permissive; you may use, modify, and distribute this package freely in commercial or private projects provided you include the license notice.

Quickstart

import uharfbuzz as hb

blob = hb.Blob.from_file_path('font.ttf')
face = hb.Face(blob)
font = hb.Font(face)
buf = hb.Buffer()
buf.add_str('Hello')
buf.guess_segment_properties()
hb.shape(font, buf, {"kern": True})
for info, pos in zip(buf.glyph_infos, buf.glyph_positions):
    print(f"glyph {info.codepoint}: x_advance={pos.x_advance}")

Verify before relying

  • Whether prebuilt wheels cover all deployment targets you need beyond the listed platforms (macOS, Linux, Windows, WebAssembly).
  • Performance characteristics when shaping large volumes of text or complex scripts.

Package facts

LicenseApache License 2.0 permissive
Python supportSupports the current Python release >=3.10
Install frictionMedium. Platform-specific wheel
Runtime dependenciesNone
MaintenanceActively maintained 14 days since the last release
Last repo commit
First released
Downloads960,306 / month, #4,636 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14

Evidence: uharfbuzz-0.56.0-cp310-abi3-macosx_10_9_universal2.whl; uharfbuzz-0.56.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; uharfbuzz-0.56.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; uharfbuzz-0.56.0-cp310-abi3-musllinux_1_2_aarch64.whl; uharfbuzz-0.56.0-cp310-abi3-musllinux_1_2_x86_64.whl; uharfbuzz-0.56.0-cp310-abi3-pyemscripten_2025_0_wasm32.whl; uharfbuzz-0.56.0-cp310-abi3-pyemscripten_2026_0_wasm32.whl; uharfbuzz-0.56.0-cp310-abi3-win32.whl; uharfbuzz-0.56.0-cp310-abi3-win_amd64.whl; uharfbuzz-0.56.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl; uharfbuzz-0.56.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl; uharfbuzz-0.56.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; uharfbuzz-0.56.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; uharfbuzz-0.56.0-pp311-pypy311_pp73-win_amd64.whl

Tags

Capabilities
text shaping harfbuzzfont glyph positioningtext rendering with fontsharfbuzz python bindingskerning ligature shapingfont layout engineunicode text layout
Topics
text-shapingtypographyfont-rendering

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “text shaping harfbuzz”

  • uharfbuzzCython bindings for HarfBuzz that shape text using font files,…
  • pictexPicTex generates high-quality PNG, JPEG, WebP, and SVG images…
  • arabic-reshaperReshapes Arabic text characters into their correct contextual forms…

Give your agent the search over MCP, or paste the wish link into any chat.

More Linguistic packages

charset-normalizer Worth it
PyPI · Utilities · released Aug 2026

Detects and normalizes text encoding from unknown or ambiguous sources, supporting all IANA character sets that Python's core library provides codecs for, with the ability to register custom codecs.

permissive licensepure Python · 3.7+
1.7Bdownloads / mo
tiktoken Worth it
PyPI · Linguistic · released May 2026

tiktoken is a fast BPE tokenizer that converts text into token sequences compatible with OpenAI models, supporting multiple encoding schemes including o200k_base and model-specific encodings.

Install it if you work with OpenAI APIs or need to understand token boundaries in GPT-family models.

permissive licensecompiled wheel · 3.9+
233.0Mdownloads / mo
chardet Worth it
PyPI · Python Modules · released Aug 2026

Detects character encoding and language in byte sequences with high accuracy, supporting 99 encodings and returning confidence scores, language tags, and MIME types.

Install it if you need to detect character encoding or language in byte data; the rewrite makes it substantially faster and more accurate than its predecessors.

0BSDpure Python · 3.10+
199.0Mdownloads / mo
text-unidecode With conditions
PyPI · Python Modules · released Aug 2019

Converts Unicode text to ASCII by transliterating non-ASCII characters into their closest ASCII equivalents, with no runtime dependencies.

However, if transliteration quality or ongoing maintenance matters, consider unidecode instead despite its GPL-only license.

GPL-2.0-or-laterpure Pythonabandoned
89.0Mdownloads / mo
lark Worth it
PyPI · Python Modules · released Oct 2025

Lark is a parsing library that builds abstract syntax trees from context-free grammars, supporting multiple parsing algorithms (Earley, LALR(1), CYK) with automatic line and column tracking.

MITpure Python · 3.8+
79.7Mdownloads / mo
tree-sitter Worth it
PyPI · Linguistic · released Jun 2026

Python bindings to the tree-sitter parsing library, enabling incremental parsing and syntax tree analysis for source code.

MITcompiled wheel · 3.10+
79.0Mdownloads / mo

See also freetype-py · pyfiglet · pictex · cffsubr · rendercv-fonts · esphome-glyphsets · pymupdf-fonts · fonttools · arabic-reshaper · ManimPango