shithub: freetype+ttf2subf

Download patch

ref: 40479fad93fd939450f1c0efb54a99074cb1b5d3
parent: e8ee98e669c25d0b8e67cdaace9a6b7e49c7a0c0
author: Werner Lemberg <wl@gnu.org>
date: Fri Sep 25 13:44:00 EDT 2020

[autofit] Synchronize with ttfautohint.

This corresponds to the following commits in the ttfautohint git
repository:

  bb6842bd3bd437b7b4a7921b0376c860f5e73d18  Typo, formatting.
  d5c91ddb1cb310257a3dfe9a8e20e1fc51335faa  Add Medefaidrin script.

* src/autofit/afblue.dat: Add blue zone data for Medefaidrin.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

* src/autofit/afscript.h: Add Medefaidrin standard characters.

* src/autofit/afranges.c, src/autofit/afstyles.h: Add Medefaidrin
data.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,23 @@
 2020-09-25  Werner Lemberg  <wl@gnu.org>
 
+	[autofit] Synchronize with ttfautohint.
+
+	This corresponds to the following commits in the ttfautohint git
+	repository:
+
+	  bb6842bd3bd437b7b4a7921b0376c860f5e73d18  Typo, formatting.
+	  d5c91ddb1cb310257a3dfe9a8e20e1fc51335faa  Add Medefaidrin script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Medefaidrin.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Medefaidrin standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Medefaidrin
+	data.
+
+2020-09-25  Werner Lemberg  <wl@gnu.org>
+
 	Move `scripts/make_distribution_archives.py` to `src/tools`.
 
 	* scr/tools/scripts/make_distribution_archives.py: (_TOP_DIR,
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -19,7 +19,7 @@
     `docwriter'  (Python >= 3.5 is required for targets  `make refdoc'
     and `make refdoc-venv').
 
-  - Auto-hinter support for Hanifi Rohingya.
+  - Auto-hinter support for Hanifi Rohingya and Medefaidrin.
 
   - Document the `FT2_KEEP_ALIVE' debugging environment variable.
 
--- a/src/autofit/afblue.c
+++ b/src/autofit/afblue.c
@@ -134,7 +134,7 @@
     '\0',
     '\xF0', '\x90', '\x90', '\xA8', ' ', '\xF0', '\x90', '\x90', '\xAA', ' ', '\xF0', '\x90', '\x90', '\xAC', ' ', '\xF0', '\x90', '\x90', '\xBF', ' ', '\xF0', '\x90', '\x91', '\x83',  /* 𐐨 𐐪 𐐬 𐐿 𐑃 */
     '\0',
-    '\xE0', '\xA4', '\x95', ' ', '\xE0', '\xA4', '\xAE', ' ', '\xE0', '\xA4', '\x85', ' ', '\xE0', '\xA4', '\x86', ' ', '\xE0', '\xA4', '\xA5', ' ', '\xE0', '\xA4', '\xA7', ' ', '\xE0', '\xA4', '\xAD', ' ', '\xE0', '\xA4', '\xB6',  /* क म अ आ थ ध भ श */
+    '\xE0', '\xA4', '\x95', ' ', '\xE0', '\xA4', '\xA8', ' ', '\xE0', '\xA4', '\xAE', ' ', '\xE0', '\xA4', '\x89', ' ', '\xE0', '\xA4', '\x9B', ' ', '\xE0', '\xA4', '\x9F', ' ', '\xE0', '\xA4', '\xA0', ' ', '\xE0', '\xA4', '\xA1',  /* क न म उ छ ट ठ ड */
     '\0',
     '\xE0', '\xA4', '\x88', ' ', '\xE0', '\xA4', '\x90', ' ', '\xE0', '\xA4', '\x93', ' ', '\xE0', '\xA4', '\x94', ' ', '\xE0', '\xA4', '\xBF', ' ', '\xE0', '\xA5', '\x80', ' ', '\xE0', '\xA5', '\x8B', ' ', '\xE0', '\xA5', '\x8C',  /* ई ऐ ओ औ ि ी ो ौ */
     '\0',
@@ -296,6 +296,20 @@
     '\0',
     '\xE0', '\xB4', '\x9F', ' ', '\xE0', '\xB4', '\xA0', ' ', '\xE0', '\xB4', '\xA7', ' ', '\xE0', '\xB4', '\xB6', ' ', '\xE0', '\xB4', '\x98', ' ', '\xE0', '\xB4', '\x9A', ' ', '\xE0', '\xB4', '\xA5', ' ', '\xE0', '\xB4', '\xB2',  /* ട ഠ ധ ശ ഘ ച ഥ ല */
     '\0',
+    '\xF0', '\x96', '\xB9', '\x80', ' ', '\xF0', '\x96', '\xB9', '\x81', ' ', '\xF0', '\x96', '\xB9', '\x82', ' ', '\xF0', '\x96', '\xB9', '\x83', ' ', '\xF0', '\x96', '\xB9', '\x8F', ' ', '\xF0', '\x96', '\xB9', '\x9A', ' ', '\xF0', '\x96', '\xB9', '\x9F',  /* 𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹟 */
+    '\0',
+    '\xF0', '\x96', '\xB9', '\x80', ' ', '\xF0', '\x96', '\xB9', '\x81', ' ', '\xF0', '\x96', '\xB9', '\x82', ' ', '\xF0', '\x96', '\xB9', '\x83', ' ', '\xF0', '\x96', '\xB9', '\x8F', ' ', '\xF0', '\x96', '\xB9', '\x9A', ' ', '\xF0', '\x96', '\xB9', '\x92', ' ', '\xF0', '\x96', '\xB9', '\x93',  /* 𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹒 𖹓 */
+    '\0',
+    '\xF0', '\x96', '\xB9', '\xA4', ' ', '\xF0', '\x96', '\xB9', '\xAC', ' ', '\xF0', '\x96', '\xB9', '\xA7', ' ', '\xF0', '\x96', '\xB9', '\xB4', ' ', '\xF0', '\x96', '\xB9', '\xB6', ' ', '\xF0', '\x96', '\xB9', '\xBE',  /* 𖹤 𖹬 𖹧 𖹴 𖹶 𖹾 */
+    '\0',
+    '\xF0', '\x96', '\xB9', '\xA0', ' ', '\xF0', '\x96', '\xB9', '\xA1', ' ', '\xF0', '\x96', '\xB9', '\xA2', ' ', '\xF0', '\x96', '\xB9', '\xB9', ' ', '\xF0', '\x96', '\xB9', '\xB3', ' ', '\xF0', '\x96', '\xB9', '\xAE',  /* 𖹠 𖹡 𖹢 𖹹 𖹳 𖹮 */
+    '\0',
+    '\xF0', '\x96', '\xB9', '\xA0', ' ', '\xF0', '\x96', '\xB9', '\xA1', ' ', '\xF0', '\x96', '\xB9', '\xA2', ' ', '\xF0', '\x96', '\xB9', '\xB3', ' ', '\xF0', '\x96', '\xB9', '\xAD', ' ', '\xF0', '\x96', '\xB9', '\xBD',  /* 𖹠 𖹡 𖹢 𖹳 𖹭 𖹽 */
+    '\0',
+    '\xF0', '\x96', '\xB9', '\xA5', ' ', '\xF0', '\x96', '\xB9', '\xA8', ' ', '\xF0', '\x96', '\xB9', '\xA9',  /* 𖹥 𖹨 𖹩 */
+    '\0',
+    '\xF0', '\x96', '\xBA', '\x80', ' ', '\xF0', '\x96', '\xBA', '\x85', ' ', '\xF0', '\x96', '\xBA', '\x88', ' ', '\xF0', '\x96', '\xBA', '\x84', ' ', '\xF0', '\x96', '\xBA', '\x8D',  /* 𖺀 𖺅 𖺈 𖺄 𖺍 */
+    '\0',
     '\xE1', '\xA0', '\xB3', ' ', '\xE1', '\xA0', '\xB4', ' ', '\xE1', '\xA0', '\xB6', ' ', '\xE1', '\xA0', '\xBD', ' ', '\xE1', '\xA1', '\x82', ' ', '\xE1', '\xA1', '\x8A', ' ', '\xE2', '\x80', '\x8D', '\xE1', '\xA1', '\xA1', '\xE2', '\x80', '\x8D', ' ', '\xE2', '\x80', '\x8D', '\xE1', '\xA1', '\xB3', '\xE2', '\x80', '\x8D',  /* ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ ‍ᡡ‍ ‍ᡳ‍ */
     '\0',
     '\xE1', '\xA1', '\x83',  /* ᡃ */
@@ -494,14 +508,14 @@
     { AF_BLUE_STRING_CHAKMA_BOTTOM,    0                          },
     { AF_BLUE_STRING_CHAKMA_DESCENDER, 0                          },
     { AF_BLUE_STRING_MAX,              0                          },
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,             AF_BLUE_PROPERTY_LATIN_TOP        },
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,          0                                 },
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
-                                                         AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM,    0                                 },
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP,        AF_BLUE_PROPERTY_LATIN_TOP        },
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM,     0                                 },
-    { AF_BLUE_STRING_MAX,                                0                                 },
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        },
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,       0                                 },
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
+                                                      AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 0                                 },
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        },
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM,  0                                 },
+    { AF_BLUE_STRING_MAX,                             0                                 },
     { AF_BLUE_STRING_CARIAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_CARIAN_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,           0                          },
@@ -601,6 +615,9 @@
     { AF_BLUE_STRING_HEBREW_BOTTOM,    0                             },
     { AF_BLUE_STRING_HEBREW_DESCENDER, 0                             },
     { AF_BLUE_STRING_MAX,              0                             },
+    { AF_BLUE_STRING_KANNADA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
+    { AF_BLUE_STRING_KANNADA_BOTTOM, 0                          },
+    { AF_BLUE_STRING_MAX,            0                          },
     { AF_BLUE_STRING_KAYAH_LI_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
                                                AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
     { AF_BLUE_STRING_KAYAH_LI_BOTTOM,          0                                 },
@@ -619,9 +636,6 @@
                                                   AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
     { AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0                                 },
     { AF_BLUE_STRING_MAX,                         0                                 },
-    { AF_BLUE_STRING_KANNADA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
-    { AF_BLUE_STRING_KANNADA_BOTTOM, 0                          },
-    { AF_BLUE_STRING_MAX,            0                          },
     { AF_BLUE_STRING_LAO_TOP,            AF_BLUE_PROPERTY_LATIN_TOP      |
                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
     { AF_BLUE_STRING_LAO_BOTTOM,         0                                 },
@@ -659,6 +673,15 @@
     { AF_BLUE_STRING_MALAYALAM_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_MALAYALAM_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,              0                          },
+    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        },
+    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM,  0                                 },
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        },
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
+                                                  AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM,    0                                 },
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER, 0                                 },
+    { AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP,       AF_BLUE_PROPERTY_LATIN_TOP        },
+    { AF_BLUE_STRING_MAX,                         0                                 },
     { AF_BLUE_STRING_MONGOLIAN_TOP_BASE,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE, 0                          },
     { AF_BLUE_STRING_MAX,                   0                          },
@@ -724,9 +747,6 @@
     { AF_BLUE_STRING_TELUGU_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_TELUGU_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,           0                          },
-    { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP },
-    { AF_BLUE_STRING_TIFINAGH, 0                          },
-    { AF_BLUE_STRING_MAX,      0                          },
     { AF_BLUE_STRING_THAI_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
     { AF_BLUE_STRING_THAI_BOTTOM,          0                                 },
@@ -736,6 +756,9 @@
     { AF_BLUE_STRING_THAI_LARGE_DESCENDER, 0                                 },
     { AF_BLUE_STRING_THAI_DIGIT_TOP,       0                                 },
     { AF_BLUE_STRING_MAX,                  0                                 },
+    { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP },
+    { AF_BLUE_STRING_TIFINAGH, 0                          },
+    { AF_BLUE_STRING_MAX,      0                          },
     { AF_BLUE_STRING_VAI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_VAI_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,        0                          },
--- a/src/autofit/afblue.dat
+++ b/src/autofit/afblue.dat
@@ -203,7 +203,7 @@
     "𐐨 𐐪 𐐬 𐐿 𐑃"
 
   AF_BLUE_STRING_DEVANAGARI_BASE
-    "क म अ आ थ ध भ श"
+    "क न म उ छ ट ठ ड"
   AF_BLUE_STRING_DEVANAGARI_TOP
     "ई ऐ ओ औ ि ी ो ौ"
   // note that some fonts have extreme variation in the height of the
@@ -392,6 +392,21 @@
   AF_BLUE_STRING_MALAYALAM_BOTTOM
     "ട ഠ ധ ശ ഘ ച ഥ ല"
 
+  AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP
+    "𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹟"
+  AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM
+    "𖹀 𖹁 𖹂 𖹃 𖹏 𖹚 𖹒 𖹓"
+  AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP
+    "𖹤 𖹬 𖹧 𖹴 𖹶 𖹾"
+  AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP
+    "𖹠 𖹡 𖹢 𖹹 𖹳 𖹮"
+  AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM
+    "𖹠 𖹡 𖹢 𖹳 𖹭 𖹽"
+  AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER
+    "𖹥 𖹨 𖹩"
+  AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP
+    "𖺀 𖺅 𖺈 𖺄 𖺍"
+
   AF_BLUE_STRING_MONGOLIAN_TOP_BASE
     "ᠳ ᠴ ᠶ ᠽ ᡂ ᡊ ‍ᡡ‍ ‍ᡳ‍"
   AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE
@@ -741,14 +756,14 @@
     { AF_BLUE_STRING_MAX,              0                          }
 
   AF_BLUE_STRINGSET_CANS
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,             AF_BLUE_PROPERTY_LATIN_TOP        }
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,          0                                 }
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
-                                                         AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM,    0                                 }
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP,        AF_BLUE_PROPERTY_LATIN_TOP        }
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM,     0                                 }
-    { AF_BLUE_STRING_MAX,                                0                                 }
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        }
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,       0                                 }
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
+                                                      AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 0                                 }
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM,  0                                 }
+    { AF_BLUE_STRING_MAX,                             0                                 }
 
   AF_BLUE_STRINGSET_CARI
     { AF_BLUE_STRING_CARIAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
@@ -881,6 +896,11 @@
     { AF_BLUE_STRING_HEBREW_DESCENDER, 0                             }
     { AF_BLUE_STRING_MAX,              0                             }
 
+  AF_BLUE_STRINGSET_KNDA
+    { AF_BLUE_STRING_KANNADA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
+    { AF_BLUE_STRING_KANNADA_BOTTOM, 0                          }
+    { AF_BLUE_STRING_MAX,            0                          }
+
   AF_BLUE_STRINGSET_KALI
     { AF_BLUE_STRING_KAYAH_LI_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
                                                AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
@@ -905,11 +925,6 @@
     { AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM, 0                                 }
     { AF_BLUE_STRING_MAX,                         0                                 }
 
-  AF_BLUE_STRINGSET_KNDA
-    { AF_BLUE_STRING_KANNADA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
-    { AF_BLUE_STRING_KANNADA_BOTTOM, 0                          }
-    { AF_BLUE_STRING_MAX,            0                          }
-
   AF_BLUE_STRINGSET_LAO
     { AF_BLUE_STRING_LAO_TOP,            AF_BLUE_PROPERTY_LATIN_TOP      |
                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
@@ -959,6 +974,17 @@
     { AF_BLUE_STRING_MALAYALAM_BOTTOM, 0                          }
     { AF_BLUE_STRING_MAX,              0                          }
 
+  AF_BLUE_STRINGSET_MEDF
+    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
+    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM,  0                                 }
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
+                                                  AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM,    0                                 }
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER, 0                                 }
+    { AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP,       AF_BLUE_PROPERTY_LATIN_TOP        }
+    { AF_BLUE_STRING_MAX,                         0                                 }
+
   AF_BLUE_STRINGSET_MONG
     { AF_BLUE_STRING_MONGOLIAN_TOP_BASE,    AF_BLUE_PROPERTY_LATIN_TOP }
     { AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE, 0                          }
@@ -1056,11 +1082,6 @@
     { AF_BLUE_STRING_TELUGU_BOTTOM, 0                          }
     { AF_BLUE_STRING_MAX,           0                          }
 
-  AF_BLUE_STRINGSET_TFNG
-    { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP }
-    { AF_BLUE_STRING_TIFINAGH, 0                          }
-    { AF_BLUE_STRING_MAX,      0                          }
-
   AF_BLUE_STRINGSET_THAI
     { AF_BLUE_STRING_THAI_TOP,             AF_BLUE_PROPERTY_LATIN_TOP      |
                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
@@ -1071,6 +1092,11 @@
     { AF_BLUE_STRING_THAI_LARGE_DESCENDER, 0                                 }
     { AF_BLUE_STRING_THAI_DIGIT_TOP,       0                                 }
     { AF_BLUE_STRING_MAX,                  0                                 }
+
+  AF_BLUE_STRINGSET_TFNG
+    { AF_BLUE_STRING_TIFINAGH, AF_BLUE_PROPERTY_LATIN_TOP }
+    { AF_BLUE_STRING_TIFINAGH, 0                          }
+    { AF_BLUE_STRING_MAX,      0                          }
 
   AF_BLUE_STRINGSET_VAII
     { AF_BLUE_STRING_VAI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
--- a/src/autofit/afblue.h
+++ b/src/autofit/afblue.h
@@ -212,61 +212,68 @@
     AF_BLUE_STRING_LISU_BOTTOM = 3506,
     AF_BLUE_STRING_MALAYALAM_TOP = 3538,
     AF_BLUE_STRING_MALAYALAM_BOTTOM = 3582,
-    AF_BLUE_STRING_MONGOLIAN_TOP_BASE = 3614,
-    AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE = 3658,
-    AF_BLUE_STRING_MYANMAR_TOP = 3662,
-    AF_BLUE_STRING_MYANMAR_BOTTOM = 3694,
-    AF_BLUE_STRING_MYANMAR_ASCENDER = 3726,
-    AF_BLUE_STRING_MYANMAR_DESCENDER = 3754,
-    AF_BLUE_STRING_NKO_TOP = 3786,
-    AF_BLUE_STRING_NKO_BOTTOM = 3810,
-    AF_BLUE_STRING_NKO_SMALL_TOP = 3825,
-    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3834,
-    AF_BLUE_STRING_OL_CHIKI = 3846,
-    AF_BLUE_STRING_OLD_TURKIC_TOP = 3870,
-    AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3885,
-    AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3905,
-    AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3945,
-    AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3975,
-    AF_BLUE_STRING_OSAGE_SMALL_TOP = 3990,
-    AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 4030,
-    AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 4070,
-    AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 4095,
-    AF_BLUE_STRING_OSMANYA_TOP = 4110,
-    AF_BLUE_STRING_OSMANYA_BOTTOM = 4150,
-    AF_BLUE_STRING_ROHINGYA_TOP = 4190,
-    AF_BLUE_STRING_ROHINGYA_BOTTOM = 4215,
-    AF_BLUE_STRING_ROHINGYA_JOIN = 4240,
-    AF_BLUE_STRING_SAURASHTRA_TOP = 4243,
-    AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4275,
-    AF_BLUE_STRING_SHAVIAN_TOP = 4295,
-    AF_BLUE_STRING_SHAVIAN_BOTTOM = 4305,
-    AF_BLUE_STRING_SHAVIAN_DESCENDER = 4330,
-    AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4340,
-    AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4375,
-    AF_BLUE_STRING_SINHALA_TOP = 4390,
-    AF_BLUE_STRING_SINHALA_BOTTOM = 4422,
-    AF_BLUE_STRING_SINHALA_DESCENDER = 4454,
-    AF_BLUE_STRING_SUNDANESE_TOP = 4498,
-    AF_BLUE_STRING_SUNDANESE_BOTTOM = 4522,
-    AF_BLUE_STRING_SUNDANESE_DESCENDER = 4554,
-    AF_BLUE_STRING_TAI_VIET_TOP = 4562,
-    AF_BLUE_STRING_TAI_VIET_BOTTOM = 4582,
-    AF_BLUE_STRING_TAMIL_TOP = 4594,
-    AF_BLUE_STRING_TAMIL_BOTTOM = 4626,
-    AF_BLUE_STRING_TELUGU_TOP = 4658,
-    AF_BLUE_STRING_TELUGU_BOTTOM = 4686,
-    AF_BLUE_STRING_THAI_TOP = 4714,
-    AF_BLUE_STRING_THAI_BOTTOM = 4738,
-    AF_BLUE_STRING_THAI_ASCENDER = 4766,
-    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4778,
-    AF_BLUE_STRING_THAI_DESCENDER = 4790,
-    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 4806,
-    AF_BLUE_STRING_THAI_DIGIT_TOP = 4814,
-    AF_BLUE_STRING_TIFINAGH = 4826,
-    AF_BLUE_STRING_VAI_TOP = 4858,
-    AF_BLUE_STRING_VAI_BOTTOM = 4890,
-    af_blue_1_1 = 4921,
+    AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP = 3614,
+    AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM = 3649,
+    AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP = 3689,
+    AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP = 3719,
+    AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM = 3749,
+    AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER = 3779,
+    AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP = 3794,
+    AF_BLUE_STRING_MONGOLIAN_TOP_BASE = 3819,
+    AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE = 3863,
+    AF_BLUE_STRING_MYANMAR_TOP = 3867,
+    AF_BLUE_STRING_MYANMAR_BOTTOM = 3899,
+    AF_BLUE_STRING_MYANMAR_ASCENDER = 3931,
+    AF_BLUE_STRING_MYANMAR_DESCENDER = 3959,
+    AF_BLUE_STRING_NKO_TOP = 3991,
+    AF_BLUE_STRING_NKO_BOTTOM = 4015,
+    AF_BLUE_STRING_NKO_SMALL_TOP = 4030,
+    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 4039,
+    AF_BLUE_STRING_OL_CHIKI = 4051,
+    AF_BLUE_STRING_OLD_TURKIC_TOP = 4075,
+    AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 4090,
+    AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 4110,
+    AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 4150,
+    AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 4180,
+    AF_BLUE_STRING_OSAGE_SMALL_TOP = 4195,
+    AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 4235,
+    AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 4275,
+    AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 4300,
+    AF_BLUE_STRING_OSMANYA_TOP = 4315,
+    AF_BLUE_STRING_OSMANYA_BOTTOM = 4355,
+    AF_BLUE_STRING_ROHINGYA_TOP = 4395,
+    AF_BLUE_STRING_ROHINGYA_BOTTOM = 4420,
+    AF_BLUE_STRING_ROHINGYA_JOIN = 4445,
+    AF_BLUE_STRING_SAURASHTRA_TOP = 4448,
+    AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4480,
+    AF_BLUE_STRING_SHAVIAN_TOP = 4500,
+    AF_BLUE_STRING_SHAVIAN_BOTTOM = 4510,
+    AF_BLUE_STRING_SHAVIAN_DESCENDER = 4535,
+    AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4545,
+    AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4580,
+    AF_BLUE_STRING_SINHALA_TOP = 4595,
+    AF_BLUE_STRING_SINHALA_BOTTOM = 4627,
+    AF_BLUE_STRING_SINHALA_DESCENDER = 4659,
+    AF_BLUE_STRING_SUNDANESE_TOP = 4703,
+    AF_BLUE_STRING_SUNDANESE_BOTTOM = 4727,
+    AF_BLUE_STRING_SUNDANESE_DESCENDER = 4759,
+    AF_BLUE_STRING_TAI_VIET_TOP = 4767,
+    AF_BLUE_STRING_TAI_VIET_BOTTOM = 4787,
+    AF_BLUE_STRING_TAMIL_TOP = 4799,
+    AF_BLUE_STRING_TAMIL_BOTTOM = 4831,
+    AF_BLUE_STRING_TELUGU_TOP = 4863,
+    AF_BLUE_STRING_TELUGU_BOTTOM = 4891,
+    AF_BLUE_STRING_THAI_TOP = 4919,
+    AF_BLUE_STRING_THAI_BOTTOM = 4943,
+    AF_BLUE_STRING_THAI_ASCENDER = 4971,
+    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4983,
+    AF_BLUE_STRING_THAI_DESCENDER = 4995,
+    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 5011,
+    AF_BLUE_STRING_THAI_DIGIT_TOP = 5019,
+    AF_BLUE_STRING_TIFINAGH = 5031,
+    AF_BLUE_STRING_VAI_TOP = 5063,
+    AF_BLUE_STRING_VAI_BOTTOM = 5095,
+    af_blue_1_1 = 5126,
 #ifdef AF_CONFIG_OPTION_CJK
     AF_BLUE_STRING_CJK_TOP = af_blue_1_1 + 1,
     AF_BLUE_STRING_CJK_BOTTOM = af_blue_1_1 + 203,
@@ -350,10 +357,10 @@
     AF_BLUE_STRINGSET_GUJR = 112,
     AF_BLUE_STRINGSET_GURU = 118,
     AF_BLUE_STRINGSET_HEBR = 124,
-    AF_BLUE_STRINGSET_KALI = 128,
-    AF_BLUE_STRINGSET_KHMR = 134,
-    AF_BLUE_STRINGSET_KHMS = 140,
-    AF_BLUE_STRINGSET_KNDA = 143,
+    AF_BLUE_STRINGSET_KNDA = 128,
+    AF_BLUE_STRINGSET_KALI = 131,
+    AF_BLUE_STRINGSET_KHMR = 137,
+    AF_BLUE_STRINGSET_KHMS = 143,
     AF_BLUE_STRINGSET_LAO = 146,
     AF_BLUE_STRINGSET_LATN = 152,
     AF_BLUE_STRINGSET_LATB = 159,
@@ -360,26 +367,27 @@
     AF_BLUE_STRINGSET_LATP = 166,
     AF_BLUE_STRINGSET_LISU = 173,
     AF_BLUE_STRINGSET_MLYM = 176,
-    AF_BLUE_STRINGSET_MONG = 179,
-    AF_BLUE_STRINGSET_MYMR = 182,
-    AF_BLUE_STRINGSET_NKOO = 187,
-    AF_BLUE_STRINGSET_NONE = 192,
-    AF_BLUE_STRINGSET_OLCK = 193,
-    AF_BLUE_STRINGSET_ORKH = 196,
-    AF_BLUE_STRINGSET_OSGE = 199,
-    AF_BLUE_STRINGSET_OSMA = 207,
-    AF_BLUE_STRINGSET_ROHG = 210,
-    AF_BLUE_STRINGSET_SAUR = 214,
-    AF_BLUE_STRINGSET_SHAW = 217,
-    AF_BLUE_STRINGSET_SINH = 223,
-    AF_BLUE_STRINGSET_SUND = 227,
-    AF_BLUE_STRINGSET_TAML = 231,
-    AF_BLUE_STRINGSET_TAVT = 234,
-    AF_BLUE_STRINGSET_TELU = 237,
-    AF_BLUE_STRINGSET_TFNG = 240,
-    AF_BLUE_STRINGSET_THAI = 243,
-    AF_BLUE_STRINGSET_VAII = 251,
-    af_blue_2_1 = 254,
+    AF_BLUE_STRINGSET_MEDF = 179,
+    AF_BLUE_STRINGSET_MONG = 187,
+    AF_BLUE_STRINGSET_MYMR = 190,
+    AF_BLUE_STRINGSET_NKOO = 195,
+    AF_BLUE_STRINGSET_NONE = 200,
+    AF_BLUE_STRINGSET_OLCK = 201,
+    AF_BLUE_STRINGSET_ORKH = 204,
+    AF_BLUE_STRINGSET_OSGE = 207,
+    AF_BLUE_STRINGSET_OSMA = 215,
+    AF_BLUE_STRINGSET_ROHG = 218,
+    AF_BLUE_STRINGSET_SAUR = 222,
+    AF_BLUE_STRINGSET_SHAW = 225,
+    AF_BLUE_STRINGSET_SINH = 231,
+    AF_BLUE_STRINGSET_SUND = 235,
+    AF_BLUE_STRINGSET_TAML = 239,
+    AF_BLUE_STRINGSET_TAVT = 242,
+    AF_BLUE_STRINGSET_TELU = 245,
+    AF_BLUE_STRINGSET_THAI = 248,
+    AF_BLUE_STRINGSET_TFNG = 256,
+    AF_BLUE_STRINGSET_VAII = 259,
+    af_blue_2_1 = 262,
 #ifdef AF_CONFIG_OPTION_CJK
     AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0,
     af_blue_2_1_1 = af_blue_2_1 + 2,
--- a/src/autofit/afranges.c
+++ b/src/autofit/afranges.c
@@ -664,6 +664,18 @@
   };
 
 
+  const AF_Script_UniRangeRec  af_medf_uniranges[] =
+  {
+    AF_UNIRANGE_REC( 0x16E40, 0x16E9F ),  /* Medefaidrin */
+    AF_UNIRANGE_REC(       0,       0 )
+  };
+
+  const AF_Script_UniRangeRec  af_medf_nonbase_uniranges[] =
+  {
+    AF_UNIRANGE_REC(       0,       0 )
+  };
+
+
   const AF_Script_UniRangeRec  af_mong_uniranges[] =
   {
     AF_UNIRANGE_REC(  0x1800,  0x18AF ),  /* Mongolian            */
--- a/src/autofit/afscript.h
+++ b/src/autofit/afscript.h
@@ -243,6 +243,12 @@
           HINTING_BOTTOM_TO_TOP,
           "\xE0\xB4\xA0 \xE0\xB4\xB1" ) /* ഠ റ */
 
+  SCRIPT( medf, MEDF,
+          "Medefaidrin",
+          HB_SCRIPT_MEDEFAIDRIN,
+          HINTING_BOTTOM_TO_TOP,
+          "\xF0\x96\xB9\xA1 \xF0\x96\xB9\x9B \xF0\x96\xB9\xAF" ) /* 𖹡 𖹛 𖹯 */
+
   SCRIPT( mong, MONG,
           "Mongolian",
           HB_SCRIPT_MONGOLIAN,
--- a/src/autofit/afstyles.h
+++ b/src/autofit/afstyles.h
@@ -322,6 +322,13 @@
          AF_BLUE_STRINGSET_MLYM,
          AF_COVERAGE_DEFAULT )
 
+  STYLE( medf_dflt, MEDF_DFLT,
+         "Medefaidrin default style",
+         AF_WRITING_SYSTEM_LATIN,
+         AF_SCRIPT_MEDF,
+         AF_BLUE_STRINGSET_MEDF,
+         AF_COVERAGE_DEFAULT )
+
   STYLE( mong_dflt, MONG_DFLT,
          "Mongolian default style",
          AF_WRITING_SYSTEM_LATIN,