10
66
Fork
You've already forked fcft
13

Shaping of text runs #12

Closed
opened 2020年09月15日 20:03:00 +02:00 by dnkl · 1 comment
Owner
Copy link

Fcft now supports "grapheme" shaping (see #7).

This means we can now render e.g. emoji ZWJ sequences and other emoji modifier sequences, as well as combining marks.

We cannot, however, render entire text runs, which means no ligatures, and other more complex text shaping features.

Fcft now supports "grapheme" shaping (see https://codeberg.org/dnkl/fcft/issues/7). This means we can now render e.g. emoji ZWJ sequences and other emoji modifier sequences, as well as combining marks. We cannot, however, render entire text runs, which means no ligatures, and other more complex text shaping features.
Author
Owner
Copy link

Suggested algorithm:

  1. Start with the primary font
  2. Scan string until we hit a codepoint not in the primary font. Shape everything up to this point.
  3. Find fallback font that has the codepoint, and then scan string until we a) find a codepoint that is in the primary font. Shape everything since 2) and up to this point, or b) find a codepoint that is neither in the primary font, nor the first fallback font. Goto 3)

In other words, strive to use the primary font - only use fallback fonts when necessary (pretty obvious really).

fcft will not cache runs. The calling application will have to do it on it's own if it's needed.

Question: how do we handle presentation selectors?

Suggested algorithm: 1. Start with the primary font 2. Scan string until we hit a codepoint **not** in the primary font. Shape everything up to this point. 3. Find fallback font that has the codepoint, and then scan string until we a) find a codepoint that **is** in the primary font. Shape everything since 2) and up to this point, or b) find a codepoint that is neither in the primary font, nor the first fallback font. Goto 3) In other words, strive to use the primary font - only use fallback fonts when necessary (pretty obvious really). fcft will **not** cache runs. The calling application will have to do it on it's own if it's needed. Question: how do we handle presentation selectors?
dnkl added this to the 2.4 milestone 2021年04月17日 12:23:06 +02:00
Sign in to join this conversation.
No Branch/Tag specified
master
colrv1
releases/3.3
rasterize-utf8
spacing
releases/3.2
releases/3.1
releases/3.0
releases/2.5
releases/2.4
releases/2.3
releases/2.2
releases/2.1
releases/2.0
releases/1.0
3.3.3
3.3.2
3.3.1
3.3.0
3.2.0
3.1.10
3.1.9
3.1.8
3.1.7
3.1.6
3.1.5
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
3.0.1
3.0.0
2.5.1
2.5.0
2.4.6
2.4.5
2.4.4
2.4.3
2.4.2
2.4.1
2.4.0
2.3.3
2.3.2
2.3.1
2.3.0
2.2.92
2.2.91
2.2.90
2.2.7
2.2.6
2.2.5
2.2.4
2.2.3
2.2.2
2.2.1
2.2.0
2.1.3
2.1.2
2.1.1
2.1.0
2.0.0
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.1
0.1.0
0.0.0
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
dnkl/fcft#12
Reference in a new issue
dnkl/fcft
No description provided.
Delete branch "%!s()"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?