From 0c96a2fbc06f0a7769c3f3f1083af7b91a4aecc8 Mon Sep 17 00:00:00 2001 From: "xiaozhuai, Weihang Ding" <798047000@qq.com> Date: Tue, 7 Jun 2022 21:32:49 +0800 Subject: [PATCH] Fix break Regional_Indicator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Before `RS::Unicorn::grapheme_range("🇨🇳🇨🇳🇨🇳").size()` is `1` * After: `RS::Unicorn::grapheme_range("🇨🇳🇨🇳🇨🇳").size()` is `3` --- unicorn/segment.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/unicorn/segment.cpp b/unicorn/segment.cpp index 0ee4c7b..b58cf6c 100644 --- a/unicorn/segment.cpp +++ b/unicorn/segment.cpp @@ -51,8 +51,13 @@ namespace RS::Unicorn { continue; // Do not break between regional indicator symbols. // GB8a. Regional_Indicator × Regional_Indicator - if (prev == P::Regional_Indicator && next == P::Regional_Indicator) - continue; + if (prev == P::Regional_Indicator && next == P::Regional_Indicator){ + if (i >= 2) { + return i; + } else { + continue; + } + } // Do not break before extending characters. // GB9. × Extend // Do not break before SpacingMarks, or after Prepend characters.