Skip to content

C API: expose AAT feature and selector metadata - #525

Merged
behdad merged 3 commits into
capi/chromium-axis-namesfrom
capi/chromium-aat-features
Oct 9, 2026
Merged

behdad merged 3 commits into
capi/chromium-axis-namesfrom
capi/chromium-aat-features

Conversation

@behdad

@behdad behdad commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

Chromium probes AAT small-caps support through feat-table metadata even when HarfRust performs shaping. Add hr_aat_layout_get_feature_types and hr_aat_layout_feature_type_get_selector_infos, their ABI types and feature/selector constants, and a generated hr-hb-aat.h compatibility header. The combined header includes the AAT aliases for existing consumers.

Queries use read-fonts, support callback faces, and preserve pagination/null-query conventions. Exclusive selectors disable to the global default selector; non-exclusive selectors expose enable/disable pairs and report no default index.

Stacked on #524. Completes the 12 uncovered Chromium metadata functions listed in #520 together with #521, #523, and #524; Chromium build/behavioral integration work remains.

Validation: 146 C API tests; 116,180 metadata comparisons against HarfBuzz 14.5.1 across 500 faces, including synthetic exclusive/non-exclusive AAT features; Clippy 1.99; Rust 1.85 checking; GCC/Clang C99 linking and C++17 header checks, including selector struct layout.

The Chromium build experiment additionally exposed signed integer macros in Blink's unsigned feature-vector comparisons. The generated AAT constants now retain unsigned literal types, with a C++11 CI regression check. The updated 146 C API tests, Clippy, and C++ check pass locally.

@behdad
behdad merged commit 5844796 into capi/chromium-axis-names Oct 9, 2026
3 checks passed
@behdad
behdad deleted the capi/chromium-aat-features branch October 9, 2026 19:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants