feat: Arabic/Farsi/Urdu bidi reordering and contextual shaping — PR 1/3 (#2541)
Co-authored-by: Uri Tauber <uritaube@gmail.com>
This commit is contained in:
co-authored by
Uri Tauber
parent
552b2683e6
commit
932a472835
@@ -13,6 +13,14 @@ bool startsWithRtl(const char* utf8, int maxStrongChars = RTL_PARAGRAPH_PROBE_DE
|
||||
|
||||
int detectParagraphLevel(const char* utf8, int fallbackLevel = 0, int maxStrongChars = 64);
|
||||
|
||||
// True for RTL-script non-spacing marks (Hebrew niqqud/cantillation, Arabic
|
||||
// harakat and Quranic annotation): zero-width for measurement, transparent for
|
||||
// Arabic joining, and rendered as overlays on the preceding base glyph when
|
||||
// the active font carries their glyphs (SD fonts; built-in fonts don't).
|
||||
// Latin combining marks (U+0300-U+036F) intentionally return false — they are
|
||||
// handled by the utf8IsCombiningMark() rendering path.
|
||||
bool isTransparentMark(uint32_t cp);
|
||||
|
||||
// paragraphLevel: -1 = auto-detect, 0 = LTR, 1 = RTL
|
||||
bool applyBidiVisual(const char* utf8, std::string& out, int paragraphLevel = -1);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user