Imported Upstream version 8.2.2
[platform/upstream/harfbuzz.git] / src / hb-ot-shaper-vowel-constraints.cc
similarity index 91%
rename from src/hb-ot-shape-complex-vowel-constraints.cc
rename to src/hb-ot-shaper-vowel-constraints.cc
index d2cca10..d1ed894 100644 (file)
  * # Date: 2015-03-12, 21:17:00 GMT [AG]
  * # Date: 2019-11-08, 23:22:00 GMT [AG]
  *
- * # Scripts-14.0.0.txt
- * # Date: 2021-07-10, 00:35:31 GMT
+ * # Scripts-15.1.0.txt
+ * # Date: 2023-07-28, 16:01:07 GMT
  */
 
 #include "hb.hh"
 
 #ifndef HB_NO_OT_SHAPE
 
-#include "hb-ot-shape-complex-vowel-constraints.hh"
+#include "hb-ot-shaper-vowel-constraints.hh"
 
 static void
 _output_dotted_circle (hb_buffer_t *buffer)
@@ -39,7 +39,7 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
                                       hb_buffer_t              *buffer,
                                       hb_font_t                *font HB_UNUSED)
 {
-#ifdef HB_NO_OT_SHAPE_COMPLEX_VOWEL_CONSTRAINTS
+#ifdef HB_NO_OT_SHAPER_VOWEL_CONSTRAINTS
   return;
 #endif
   if (buffer->flags & HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE)
@@ -342,6 +342,40 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
       }
       break;
 
+    case HB_SCRIPT_KHOJKI:
+      for (buffer->idx = 0; buffer->idx + 1 < count && buffer->successful;)
+      {
+       bool matched = false;
+       switch (buffer->cur ().codepoint)
+       {
+         case 0x11200u:
+           switch (buffer->cur (1).codepoint)
+           {
+             case 0x1122Cu: case 0x11231u: case 0x11233u:
+               matched = true;
+               break;
+           }
+           break;
+         case 0x11206u:
+           matched = 0x1122Cu == buffer->cur (1).codepoint;
+           break;
+         case 0x1122Cu:
+           switch (buffer->cur (1).codepoint)
+           {
+             case 0x11230u: case 0x11231u:
+               matched = true;
+               break;
+           }
+           break;
+         case 0x11240u:
+           matched = 0x1122Eu == buffer->cur (1).codepoint;
+           break;
+       }
+       (void) buffer->next_glyph ();
+       if (matched) _output_with_dotted_circle (buffer);
+      }
+      break;
+
     case HB_SCRIPT_KHUDAWADI:
       for (buffer->idx = 0; buffer->idx + 1 < count && buffer->successful;)
       {