icu4x
icu4x copied to clipboard
Provide glue code for HarfBuzz
icu_normalizer::properties has API surface whose purpose is to cater to HarfBuzz. Additionally, icu_properties has functionality required by HarfBuzz.
hb-unicode.h defines the callbacks that need implementations. These are C-linkage function pointers, so makes sense to provide these functions manually in Rust without C++ and Diplomat as a layer in between.
Since any app using ICU4X with HarfBuzz will need the same thing, we should provide manually-written Rust code that takes an ICU4X data provider and sets up the callbacks defined in hb-unicode.h with routing to the appropriate ICU4X facilities using that data provider.
If I'm reading the sources right, the semantics of the decomposition callback appear to be that singleton decomposition reports the second character of a decomposition as U+0000.
@hsivonen Can you set an assignee (or "help wanted") and a milestone (or "backlog")?
I intend to write a draft for this and then move this to help wanted for end-to-end polish.
Previously, I didn't read the HarfBuzz API carefully enough. This is blocked on #2833 and #2832, both of which are thematically close to what ICU4X already has but, upon closer look, not exactly.
I intend to write a draft for this and then move this to help wanted for end-to-end polish.
Unassigning from self to signal that it's OK for others to continue after #2839.