linebender / linebender/parley

Shaper Driven Itemisation

Open
#462 5 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
736
Forks
120
Avg merge
1d 3h
Merged PRs (30d)
53

Description

Today, the text pipeline is dominated by 2 stages: shaping and font selection as shown in the below profile:

Image

Per @behdad's comment (see 2. in https://github.com/harfbuzz/harfrust/issues/297#issuecomment-3524469810), it appears that a more correct and, likely, faster approach is to perform shaper-driven itemization where:

> you simply shape the text with your primary font, then look for unshaped holes in the middle and reshape those holes with the next font, and next font, etc. This sidesteps the classic font fallback itemization.

The hope is that this strategy could consolidate the redundant work happening in shaping and font selection (`charmap` lookups and normalisation). Moreover, it could help us be more correct since, as Behdad states, it's unlikely for us to succeed in making our itemizer match the same normalisation applied by the shaper.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the text pipeline profile and the linked HarfRust discussion, then trace how shaping and font selection currently divide the work. Compare the existing stages with shaper-driven itemisation and establish measurable correctness and performance criteria; the issue does not name files, tests, or a concrete completion condition.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
computer-graphics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.