tree a86ac74ec4d4fce3403137b3d47eef7e7cfea8e3
parent 77e30a69ce0807fbee01d43eebedda34b54f41af
author Laslo Hunhold <dev@frign.de> 1685086810 +0200
committer Laslo Hunhold <dev@frign.de> 1685087504 +0200
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEZ7KGJhX1XJt/mkfnaVdr0kz8uYAFAmRwZRQACgkQaVdr0kz8
 uYDR+g/+M1X3m23bT6M/Zp+fSwGt4l7g4eCTTIeHDcGzqj4EgU5RGZt1nqHf0bqc
 5tcoVZysNB6DX4eGhNMMDZ6ZmhGU/6WwXPYk5vXY4KoUglzNWIx6hhG5zcruMmUY
 fJcWsuF5F1DKLYZEMKjbqT8XLugffKwS05KhMrOgj2KRJh9F8X2axPsCHpWVc9N7
 R4YP+ZgoUc9u3nyzGYeEOU73vLQQ5jAk5a3ycfG1K1TQLqC1vLIaQf+vrW1q2ZK6
 F7jhsatNIkXa3GWBPowWpYguOwQGBnxRispVzb+l6SdP5T7lZDweSJCqWzW0cy3k
 IHqDCt123d+FuRciRmzPz8mKrJWO6zhto0TXBzpT8Mv3OLiCHwjM5H/jq+6hZ6tt
 aA9iWD2Mm1kjMeDDNktcZIfGiSDdumwReM18OtbApMVGoc83302IR87iBHi1XgL+
 kVZDrhvwjQ/p5NMJdTGMa7r0FnShsfGUw6O2G7bnavpffHqCxYGfpIrIFPpaSzuG
 ew1Spxb3TXWZVAqeqHa++gADp8uKDsspp5bnEusWo2hQxJgyrKP0bDgwT1MO0ZDZ
 k+/c/65hliBTtTvaWRqJtomQlt3IBPUqKBxvek66zBqaTSs2e9Xm5RAMUnpZmSmt
 ZyvmsRO/7M3nt0tcVvtut+0mmusgCcyvkP7QbECcz2ZuTqBZ8TM=
 =rWO7
 -----END PGP SIGNATURE-----

Refactor bidi and add reordering function

- Rename bidi-override enum to bidi-direction, including entries. This
  better reflects the general nature of it.
- Remove UTF-8-related bidi-functions, given it would be too complicated
  to reflect in an API and opens up some very difficult challenges.
- Rename *_preprocess to *_preprocess_paragraph and return the resolved
  paragraph embedding level as an optional out-parameter. This is the
  only way to meaningfully handle large chunks of text with paragraphs
  of different embedding levels.
- Separate the get_paragraph_level() function into two for
  isolated-paragraphs and whole paragraphs. This simplifies it a lot, as
  we don't have the crazy bool-flag-mess any more.
- Add a grapheme_bidirectional_reorder_line function that directly
  operates on preprocessed data and returns the reordered string without
  any additionally necessary buffering. For this the
  get_line_embedding_levels had to be made a bit more general to allow
  different ways of writing the levels into the output.
  This function makes use of the mirror-LUT and has a small section
  still commented out regarding the proper inversion of grapheme
  clusters that will need more investigation.

Signed-off-by: Laslo Hunhold <dev@frign.de>
