[Tizen] Add IsSpace in TextAbstraction
[platform/core/uifw/dali-adaptor.git] / dali / devel-api / text-abstraction / script.cpp
index 62dfaa9..bac6f8d 100644 (file)
@@ -24,7 +24,9 @@ namespace TextAbstraction
 {
 namespace
 {
+//TODO: Move the below defined characters to "defined-characters.h"
 constexpr unsigned int WHITE_SPACE_THRESHOLD = 0x21;   ///< All characters below 0x21 are considered white spaces.
+constexpr unsigned int CHAR_SPACE            = 0x20;   ///< Space.
 constexpr unsigned int CHAR_LF               = 0x000A; ///< NL Line feed, new line.
 constexpr unsigned int CHAR_VT               = 0x000B; ///< Vertical tab.
 constexpr unsigned int CHAR_FF               = 0x000C; ///< NP Form feed, new page.
@@ -33,7 +35,6 @@ constexpr unsigned int CHAR_NEL              = 0x0085; ///< Next line.
 constexpr unsigned int CHAR_LS               = 0x2028; ///< Line separator.
 constexpr unsigned int CHAR_PS               = 0x2029; ///< Paragraph separator
 
-constexpr unsigned int CHAR_ZWS  = 0x200B; ///< Zero width space.
 constexpr unsigned int CHAR_ZWNJ = 0x200C; ///< Zero width non joiner.
 constexpr unsigned int CHAR_ZWJ  = 0x200D; ///< Zero width joiner.
 constexpr unsigned int CHAR_LTRM = 0x200E; ///< Left to Right Mark.
@@ -863,6 +864,7 @@ inline Script GetScriptAboveArabicPresentationFormsA(Character character)
   }
   // U+1f170 4. Enclosed characters: negative squared latin capital letter A
   // U+1f6ff 6b. Additional transport and map symbols
+  // Exclude U+1f170 ~ U+1f189. They are SYMBOLS_NSLCL (negative squared latin capital letter)
   else if((0x1f170 <= character) && (character <= 0x1f6ff))
   {
     script = EMOJI;
@@ -941,7 +943,23 @@ Script GetCharacterScript(Character character)
 {
   Script script = UNKNOWN;
 
-  if(IsCommonScript(character))
+  if(IsTextPresentationSelector(character))
+  {
+    script = EMOJI_TEXT;
+  }
+  else if(IsEmojiPresentationSelector(character))
+  {
+    script = EMOJI_COLOR;
+  }
+  else if(IsEmojiItem(character))
+  {
+    script = EMOJI;
+  }
+  else if(IsNegativeSquaredLatinCapitalLetter(character))
+  {
+    script = SYMBOLS_NSLCL;
+  }
+  else if(IsCommonScript(character))
   {
     script = COMMON;
   }
@@ -976,6 +994,11 @@ bool IsWhiteSpace(Character character)
   return character < WHITE_SPACE_THRESHOLD;
 }
 
+bool IsSpace(Character character)
+{
+  return CHAR_SPACE == character;
+}
+
 bool IsNewParagraph(Character character)
 {
   return ((CHAR_LF == character) ||
@@ -1035,6 +1058,11 @@ bool HasLigatureMustBreak(Script script)
           (ARABIC == script));
 }
 
+Length GetNumberOfScripts()
+{
+  return SYMBOLS_NSLCL + 1;
+}
+
 } // namespace TextAbstraction
 
 } // namespace Dali