Implement the Indic grapheme breaking rules

This commit is contained in:
Alejandro Alonso
2022-01-05 16:18:54 -08:00
parent a0693c4649
commit 4a451829f8
7 changed files with 495 additions and 98 deletions

View File

@@ -12,6 +12,7 @@
#include "Common/GraphemeData.h"
#include "../SwiftShims/UnicodeData.h"
#include <limits>
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_uint8_t _swift_stdlib_getGraphemeBreakProperty(__swift_uint32_t scalar) {
@@ -57,3 +58,16 @@ __swift_uint8_t _swift_stdlib_getGraphemeBreakProperty(__swift_uint32_t scalar)
// property). Return the max value here to indicate .any.
return 0xFF;
}
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_bool _swift_stdlib_isLinkingConsonant(__swift_uint32_t scalar) {
auto idx = _swift_stdlib_getScalarBitArrayIdx(scalar,
_swift_stdlib_linkingConsonant,
_swift_stdlib_linkingConsonant_ranks);
if (idx == std::numeric_limits<__swift_intptr_t>::max()) {
return false;
}
return true;
}