textshaping
Bindings to the HarfBuzz library for Text Shaping. Contribute to r-lib/textshaping development by creating an account on GitHub.
Rewrote its shaping engine for bidirectional text, then spent a year fixing what that broke.
◆Recent moves
- 5mo ago
Fixes reverting between font fallbacks
A single fix in the fallback chain when reverting from one fallback font to the previous one. The fallback path introduced in the 0.4.0 rewrite continues to be where the residual bugs live.
View source ↗ - 9mo ago
Guards against freetype version mismatches with systemfonts
Defensive handling for incompatible freetype versions between textshaping and systemfonts, a failure mode users would otherwise hit as an unexplained crash. Purely protective, with no change to shaping behaviour.
View source ↗ - 11mo ago
Fixes a signed integer overflow in the previous fix
A follow-up to the shape cache hash fix shipped one day earlier. Notable mainly as evidence of how tightly this package is coupled to ragg's rendering behaviour.
View source ↗ - 11mo ago
Fixes bidi single-line shaping and a weak shape-cache hash
Three real defects from the 1.0.0 rewrite: bidi embedding arrangement on single lines, a weak vector hash causing shape cache collisions, and line positioning when a line mixes text sizes. All three arrived as bug reports from ggplot2 and ragg, which is how layout defects usually reach this package.
View source ↗ - 1y ago
Fixes hard line breaks across multiple embeddings
Hard line breaks were ignored when a line consisted of multiple embeddings, and newline characters were inflating line width enough to insert spurious empty lines. Both were reported through marquee, the rich-text package that sits directly on top of this one.
View source ↗ - 1y ago
Shaping engine rewritten to honour global text direction
⚡ SPARKThe release that changes what the R graphics stack can typeset: direction-aware shaping, direction-resolving alignment, and ICU-based break locations for ideographic scripts. Every release since has been correctness work on this engine, which is the usual shape of a layout rewrite landing in production.
View source ↗