Metadata-Version: 2.4
Name: pyusp
Version: 0.3.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Rust
Classifier: Topic :: Text Processing :: Fonts
License-File: LICENSE
Summary: Uniscribe (usp10) OpenType shaping tracer (babelsoft /api/opentype/shape compatible). WINDOWS ONLY.
Keywords: uniscribe,usp10,opentype,shaping,trace,babelmap
Author-email: Kushim-Jiang <kushim_jiang@outlook.com>
License-Expression: MIT
Requires-Python: >=3.9
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Bug Tracker, https://github.com/Kushim-Jiang/pyusp/issues
Project-URL: Homepage, https://github.com/Kushim-Jiang/pyusp
Project-URL: Source, https://github.com/Kushim-Jiang/pyusp

# pyusp — Uniscribe (usp10) OpenType shaping tracer (Windows-only wheel)

PyO3 abi3 wheel (`pyusp-…-py3-none-win_amd64.whl`) wrapping the `pyusp` Rust
engine. Shapes in-process via a Uniscribe implementation and returns the
babelsoft `/api/opentype/shape` engine dict.

```python
from pyusp import shape_with_uniscribe
res = shape_with_uniscribe(font_bytes, text)          # script auto-detected
res = shape_with_uniscribe(font_bytes, text, script="mong")
```

**Engines.** The wheel ships `wineusp.dll`, Wine's open-source Uniscribe port
(LGPL), which also provides a real per-lookup trace (`trace=True`). It drives
the OS `usp10.dll` (Microsoft Uniscribe) as the authoritative reference — the
Microsoft DLL is *not* bundled in the published wheel (it is an OS component
and not redistributable); the engine loads it from the system at runtime. A
dev/test-only build (`python/build_wheel.ps1`) may additionally pin an
app-local copy of `usp10.dll`; see `python/pyusp/NOTICE.md` and
`python/pyusp/NOTICE-wineusp.md`.

**Scope note**: usp10 only recognises legacy OpenType script tags. Fonts that
use only modern tags (e.g. Devanagari faces exposing `dev2`, not `deva`) are
not shaped by Uniscribe at all — this matches what old Win32 apps that rely on
usp10 actually experience.

