icu4x icon indicating copy to clipboard operation
icu4x copied to clipboard

Provide glue code for HarfBuzz

Open hsivonen opened this issue 1 year ago • 1 comments

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.

hsivonen avatar Sep 05 '22 07:09 hsivonen

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 avatar Sep 05 '22 07:09 hsivonen

@hsivonen Can you set an assignee (or "help wanted") and a milestone (or "backlog")?

sffc avatar Oct 17 '22 21:10 sffc

I intend to write a draft for this and then move this to help wanted for end-to-end polish.

hsivonen avatar Oct 18 '22 11:10 hsivonen

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.

hsivonen avatar Nov 18 '22 06:11 hsivonen

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.

hsivonen avatar Nov 22 '22 08:11 hsivonen