[cantarell-fonts/ufo-conversion] Add script to update GDEF, add separate gdef.fea



commit 7ce75c2162bb5ca6ad447957cea68b658f6a8af5
Author: Nikolaus Waxweiler <madigens gmail com>
Date:   Sun Feb 17 21:45:44 2019 +0000

    Add script to update GDEF, add separate gdef.fea

 COPYING                                |  22 ++++++-
 scripts/update-gdef.py                 | 104 +++++++++++++++++++++++++++++++++
 src/Cantarell-Bold.ufo/features.fea    |  12 +---
 src/Cantarell-Light.ufo/features.fea   |  12 +---
 src/Cantarell-Regular.ufo/features.fea |  12 +---
 src/gdef.fea                           |   8 +++
 6 files changed, 141 insertions(+), 29 deletions(-)
---
diff --git a/COPYING b/COPYING
index 7d9d6dca..41a45697 100644
--- a/COPYING
+++ b/COPYING
@@ -1,4 +1,4 @@
-Copyright (c) 2009--2016, The Cantarell Authors
+Copyright (c) 2009--2019, The Cantarell Authors
 
 This Font Software is licensed under the SIL Open Font License, Version 1.1.
 This license is copied below, and is also available with a FAQ at:
@@ -18,7 +18,7 @@ with others.
 
 The OFL allows the licensed fonts to be used, studied, modified and
 redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded, 
+fonts, including any derivative works, can be bundled, embedded,
 redistributed and/or sold with any software provided that any reserved
 names are not used by derivative works. The fonts and derivatives,
 however, cannot be released under any other type of license. The
@@ -91,3 +91,21 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
 DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
 OTHER DEALINGS IN THE FONT SOFTWARE.
+
+-------------------------------------------------------------------------------
+
+Scripts contain parts of the source code of glyphsLib:
+
+# Copyright 2015 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
\ No newline at end of file
diff --git a/scripts/update-gdef.py b/scripts/update-gdef.py
new file mode 100644
index 00000000..b82dc73f
--- /dev/null
+++ b/scripts/update-gdef.py
@@ -0,0 +1,104 @@
+"""Update the shared GDEF definition feature file.
+
+We want our own because Glyphs has the habit of propagating anchors on
+_everything_, even symbols that happen to contain components of latin
+glyphs with anchors.
+"""
+
+from pathlib import Path
+
+import defcon
+import ufo2ft.filters
+
+import glyphsLib.builder.constants
+
+
+# Lifted from glyphsLib and adapted to only recognize Letters as bases.
+def _build_gdef(ufo):
+    """Build a GDEF table statement (GlyphClassDef and LigatureCaretByPos).
+
+    Building GlyphClassDef requires anchor propagation or user care to work as
+    expected, as Glyphs.app also looks at anchors for classification:
+
+    * Base: any glyph that has an attaching anchor (such as "top"; "_top" does
+      not count) and is neither classified as Ligature nor Mark using the
+      definitions below;
+    * Ligature: if subCategory is "Ligature" and the glyph has at least one
+      attaching anchor;
+    * Mark: if category is "Mark" and subCategory is either "Nonspacing" or
+      "Spacing Combining";
+    * Compound: never assigned by Glyphs.app.
+
+    See:
+
+    * https://github.com/googlei18n/glyphsLib/issues/85
+    * https://github.com/googlei18n/glyphsLib/pull/100#issuecomment-275430289
+    """
+    from glyphsLib import glyphdata
+
+    bases, ligatures, marks, carets = set(), set(), set(), {}
+    category_key = glyphsLib.builder.constants.GLYPHLIB_PREFIX + "category"
+    subCategory_key = glyphsLib.builder.constants.GLYPHLIB_PREFIX + "subCategory"
+
+    for glyph in ufo:
+        has_attaching_anchor = False
+        for anchor in glyph.anchors:
+            name = anchor.name
+            if name and not name.startswith("_"):
+                has_attaching_anchor = True
+            if name and name.startswith("caret_") and "x" in anchor:
+                carets.setdefault(glyph.name, []).append(round(anchor["x"]))
+
+        # First check glyph.lib for category/subCategory overrides. Otherwise,
+        # use global values from GlyphData.
+        glyphinfo = glyphdata.get_glyph(glyph.name)
+        category = glyph.lib.get(category_key) or glyphinfo.category
+        subCategory = glyph.lib.get(subCategory_key) or glyphinfo.subCategory
+
+        if subCategory == "Ligature" and has_attaching_anchor:
+            ligatures.add(glyph.name)
+        elif category == "Mark" and (
+            subCategory == "Nonspacing" or subCategory == "Spacing Combining"
+        ):
+            marks.add(glyph.name)
+        elif category == "Letter" and has_attaching_anchor:
+            bases.add(glyph.name)
+
+    if not any((bases, ligatures, marks, carets)):
+        return None
+
+    def fmt(g):
+        if g:
+            glyph_names = " ".join(sorted(g, key=ufo.glyphOrder.index))
+            return f"[{glyph_names}]"
+        return ""
+
+    lines = [
+        "table GDEF {",
+        "  # automatic",
+        "  GlyphClassDef",
+        f"    {fmt(bases)}, # Base",
+        f"    {fmt(ligatures)}, # Liga",
+        f"    {fmt(marks)}, # Mark",
+        "    ;",
+    ]
+    for glyph, caretPos in sorted(carets.items()):
+        caretPos_joined = " ".join(sorted(caretPos))
+        lines.append(f"  LigatureCaretByPos {glyph} {caretPos_joined};")
+    lines.append("} GDEF;")
+
+    return "\n".join(lines)
+
+
+if __name__ == "__main__":
+    main_source_path = Path(__file__).parent.parent / "src" / "Cantarell-Regular.ufo"
+    main_source = defcon.Font(main_source_path)
+
+    pre_filter, _ = ufo2ft.filters.loadFilters(main_source)
+    for pf in pre_filter:
+        pf(font=main_source)
+
+    gdef_table = _build_gdef(main_source)
+
+    with open(Path(__file__).parent.parent / "src" / "gdef.fea", "w") as fp:
+        print(gdef_table, file=fp)
diff --git a/src/Cantarell-Bold.ufo/features.fea b/src/Cantarell-Bold.ufo/features.fea
index 85f474b6..2ccd1eaa 100644
--- a/src/Cantarell-Bold.ufo/features.fea
+++ b/src/Cantarell-Bold.ufo/features.fea
@@ -16,15 +16,9 @@ languagesystem latn CRT;
 languagesystem latn AZE;
 
 
-# automatic
-table GDEF {
-  # automatic
-  GlyphClassDef
-       [A Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehookabove Abrevetilde Acaron 
Acircumflex Acircumflexacute Acircumflexdotbelow Acircumflexgrave Acircumflexhookabove Acircumflextilde 
Adblgrave Adieresis Adotbelow Agrave Ahookabove Ainvertedbreve Amacron Aogonek Aring Aringacute Atilde AE 
AEacute B C Cacute Ccaron Ccedilla Ccedillaacute Ccircumflex Cdotaccent D DZcaron Eth Dcaron Dcroat Ddotbelow 
Dlinebelow Dzcaron E Eacute Ebreve Ecaron Ecedillabreve Ecircumflex Ecircumflexacute Ecircumflexdotbelow 
Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde Edblgrave Edieresis Edotaccent Edotbelow Egrave 
Ehookabove Einvertedbreve Emacron Emacronacute Emacrongrave Eogonek Etilde F G Gbreve Gcaron Gcircumflex 
Gcommaaccent Gdotaccent Gmacron H Hbar Hbrevebelow Hcircumflex Hdotbelow I Iacute Ibreve Icaron Icircumflex 
Idblgrave Idieresis Idieresisacute Idotaccent Idotbelow Igrave Ihookabove Iinvertedbreve Imacron Iogonek 
Itilde J Jacute Jcircumflex K Kacute Kcommaaccent L
  LJ Lacu
 te Lcaron Lcommaaccent Ldot Ldotbelow Lj Llinebelow Lslash M Mdotbelow N NJ Nacute Ncaron Ncommaaccent 
Ndotaccent Ndotbelow Nj Nlinebelow Ntilde O Oacute Obreve Ocaron Ocircumflex Ocircumflexacute 
Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Odblgrave Odieresis 
Odieresismacron Odotaccentmacron Odotbelow Ograve Ohookabove Ohorn Ohornacute Ohorndotbelow Ohorngrave 
Ohornhookabove Ohorntilde Ohungarumlaut Oinvertedbreve Omacron Omacronacute Omacrongrave Oogonek Oslash 
Oslashacute Otilde Otildeacute Otildedieresis Otildemacron OE P Q R Racute Rcaron Rcommaaccent Rdblgrave 
Rdotbelow Rinvertedbreve Rlinebelow S Sacute Sacutedotaccent Scaron Scarondotaccent Scedilla Scircumflex 
Scommaaccent Sdotaccent Sdotbelow Sdotbelowdotaccent Schwa T Tbar Tcaron Tcedilla Tcommaaccent Tdotbelow 
Tlinebelow U Uacute Ubreve Ucaron Ucircumflex Udblgrave Udieresis Udieresisacute Udieresiscaron 
Udieresisgrave Udieresismacron Udotbelow Ugrave Uhookabove Uhorn Uhornacute Uho
 rndotbel
 ow Uhorngrave Uhornhookabove Uhorntilde Uhungarumlaut Uinvertedbreve Umacron Umacrondieresis Uogonek Uring 
Utilde Utildeacute V W Wacute Wcircumflex Wdieresis Wgrave X Y Yacute Ycircumflex Ydieresis Ydotaccent 
Ydotbelow Ygrave Yhookabove Ymacron Ytilde Z Zacute Zcaron Zdotaccent Zdotbelow a aacute abreve abreveacute 
abrevedotbelow abrevegrave abrevehookabove abrevetilde acaron acircumflex acircumflexacute 
acircumflexdotbelow acircumflexgrave acircumflexhookabove acircumflextilde adblgrave adieresis adotbelow 
agrave ahookabove ainvertedbreve amacron aogonek aring aringacute atilde ae aeacute b c cacute ccaron 
ccedilla ccedillaacute ccircumflex cdotaccent d dcaron dcroat ddotbelow dlinebelow dzcaron e eacute ebreve 
ecaron ecedillabreve ecircumflex ecircumflexacute ecircumflexdotbelow ecircumflexgrave ecircumflexhookabove 
ecircumflextilde edblgrave edieresis edotaccent edotbelow egrave ehookabove einvertedbreve emacron 
emacronacute emacrongrave eogonek etilde schwa f g gbreve g
 caron gc
 ircumflex gcommaaccent gdotaccent gmacron h hbar hbrevebelow hcircumflex hdotbelow i idotless iacute ibreve 
icaron icircumflex idblgrave idieresis idieresisacute idotaccent idotbelow igrave ihookabove iinvertedbreve 
imacron iogonek itilde j jdotless jacute jcircumflex k kacute kcommaaccent l lacute lcaron lcommaaccent ldot 
ldotbelow lj llinebelow lslash m mdotbelow n nacute ncaron ncommaaccent ndotaccent ndotbelow nj nlinebelow 
ntilde o oacute obreve ocaron ocircumflex ocircumflexacute ocircumflexdotbelow ocircumflexgrave 
ocircumflexhookabove ocircumflextilde odblgrave odieresis odieresismacron odotaccentmacron odotbelow ograve 
ohookabove ohorn ohornacute ohorndotbelow ohorngrave ohornhookabove ohorntilde ohungarumlaut oinvertedbreve 
omacron omacronacute omacrongrave oogonek oslash oslashacute otilde otildeacute otildedieresis otildemacron 
oe p q r racute rcaron rcommaaccent rdblgrave rdotbelow rinvertedbreve rlinebelow s sacute sacutedotaccent 
scaron scarondotaccent scedill
 a scircu
 mflex scommaaccent sdotaccent sdotbelow sdotbelowdotaccent t tbar tcaron tcedilla tcommaaccent tdieresis 
tdotbelow tlinebelow u uacute ubreve ucaron ucircumflex udblgrave udieresis udieresisacute udieresiscaron 
udieresisgrave udieresismacron udotbelow ugrave uhookabove uhorn uhornacute uhorndotbelow uhorngrave 
uhornhookabove uhorntilde uhungarumlaut uinvertedbreve umacron umacrondieresis uogonek uring utilde 
utildeacute v w wacute wcircumflex wdieresis wgrave x y yacute ycircumflex ydieresis ydotaccent ydotbelow 
ygrave yhookabove ymacron ytilde z zacute zcaron zdotaccent zdotbelow A-cy Ve-cy Ge-cy Gje-cy Ie-cy 
Iegrave-cy Io-cy Zhe-cy Ze-cy Ii-cy Iishort-cy Iigrave-cy Ka-cy Kje-cy Em-cy En-cy O-cy Pe-cy Er-cy Es-cy 
Te-cy U-cy Ushort-cy Ha-cy Che-cy Hardsign-cy Yeru-cy Dze-cy Ereversed-cy I-cy Yi-cy Je-cy Iu-cy Ia-cy 
Fita-cy Zhedescender-cy Zedescender-cy Kadescender-cy Endescender-cy Esdescender-cy Ustraight-cy 
Ustraightstroke-cy Hadescender-cy Chedescender-cy Palochka-cy Zhe
 breve-cy
  Chekhakassian-cy Abreve-cy Adieresis-cy Aie-cy Iebreve-cy Schwa-cy Zhedieresis-cy Zedieresis-cy Imacron-cy 
Idieresis-cy Odieresis-cy Obarred-cy Umacron-cy Udieresis-cy Uhungarumlaut-cy Chedieresis-cy Gedescender-cy 
Yerudieresis-cy Qa-cy We-cy a-cy ge-cy gje-cy ie-cy iegrave-cy io-cy zhe-cy ze-cy ii-cy iishort-cy iigrave-cy 
ka-cy kje-cy en-cy o-cy pe-cy er-cy es-cy te-cy u-cy ushort-cy ha-cy che-cy yeru-cy dze-cy e-cy ereversed-cy 
i-cy yi-cy je-cy tshe-cy iu-cy ia-cy dje-cy fita-cy zhedescender-cy zedescender-cy kadescender-cy 
endescender-cy esdescender-cy ustraight-cy hadescender-cy chedescender-cy shha-cy palochka-cy zhebreve-cy 
chekhakassian-cy abreve-cy adieresis-cy aie-cy iebreve-cy schwa-cy zhedieresis-cy zedieresis-cy imacron-cy 
idieresis-cy odieresis-cy obarred-cy umacron-cy udieresis-cy uhungarumlaut-cy chedieresis-cy gedescender-cy 
yerudieresis-cy qa-cy we-cy cedi cent colonsign dollar dong euro franc guarani naira peseta peso won numero 
ustraightstroke-cy], # Base
-       [f_f f_f_i f_f_l fi fl], # Liga
-       [dieresiscomb dieresiscomb_gravecomb dieresiscomb_acutecomb dieresiscomb_caroncomb 
dieresiscomb_macroncomb dotaccentcomb dotaccentcomb_macroncomb gravecomb acutecomb acutecomb_dotaccentcomb 
hungarumlautcomb caroncomb.alt circumflexcomb caroncomb caroncomb_dotaccentcomb brevecomb ringcomb 
ringcomb_acutecomb tildecomb tildecomb_dieresiscomb tildecomb_acutecomb tildecomb_macroncomb macroncomb 
macroncomb_dieresiscomb macroncomb_gravecomb macroncomb_acutecomb hookabovecomb verticallineabovecomb 
dblgravecomb breveinvertedcomb commaturnedabovecomb horncomb dotbelowcomb dieresisbelowcomb commaaccentcomb 
cedillacomb ogonekcomb verticallinebelowcomb brevebelowcomb macronbelowcomb strokeshortcomb strokelongcomb 
slashshortcomb slashlongcomb dieresiscomb.case dotaccentcomb.case gravecomb.case acutecomb.case 
hungarumlautcomb.case circumflexcomb.case caroncomb.case brevecomb.case ringcomb.case ringcomb_acutecomb.case 
tildecomb.case macroncomb.case hookabovecomb.case dblgravecomb.case br
 eveinver
 tedcomb.case strokeshortcomb.case slashshortcomb.case slashlongcomb.case macroncomb.narrow.case 
ogonekcomb.tall.case dieresiscomb.loclVIET dotaccentcomb.loclVIET gravecomb.loclVIET acutecomb.loclVIET 
circumflexcomb.loclVIET caroncomb.loclVIET brevecomb.loclVIET tildecomb.loclVIET macroncomb.loclVIET 
hookabovecomb.loclVIET macroncomb.narrow ogonekcomb.narrow macronbelowcomb.narrow ogonekcomb.tall 
brevecomb-cy descender-cy brevecomb-cy.case descender-cy.case descender-cy.strait brevecomb_acutecomb 
brevecomb_gravecomb brevecomb_hookabovecomb brevecomb_tildecomb circumflexcomb_acutecomb 
circumflexcomb_gravecomb circumflexcomb_hookabovecomb circumflexcomb_tildecomb brevecomb_acutecomb.case 
brevecomb_gravecomb.case brevecomb_hookabovecomb.case brevecomb_tildecomb.case circumflexcomb_acutecomb.case 
circumflexcomb_gravecomb.case circumflexcomb_hookabovecomb.case circumflexcomb_tildecomb.case], # Mark
-       ;
-} GDEF;
+# Prefix: Include GDEF
+include(gdef.fea)
+
 
 feature aalt {
 # automatic
diff --git a/src/Cantarell-Light.ufo/features.fea b/src/Cantarell-Light.ufo/features.fea
index 85f474b6..2ccd1eaa 100644
--- a/src/Cantarell-Light.ufo/features.fea
+++ b/src/Cantarell-Light.ufo/features.fea
@@ -16,15 +16,9 @@ languagesystem latn CRT;
 languagesystem latn AZE;
 
 
-# automatic
-table GDEF {
-  # automatic
-  GlyphClassDef
-       [A Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehookabove Abrevetilde Acaron 
Acircumflex Acircumflexacute Acircumflexdotbelow Acircumflexgrave Acircumflexhookabove Acircumflextilde 
Adblgrave Adieresis Adotbelow Agrave Ahookabove Ainvertedbreve Amacron Aogonek Aring Aringacute Atilde AE 
AEacute B C Cacute Ccaron Ccedilla Ccedillaacute Ccircumflex Cdotaccent D DZcaron Eth Dcaron Dcroat Ddotbelow 
Dlinebelow Dzcaron E Eacute Ebreve Ecaron Ecedillabreve Ecircumflex Ecircumflexacute Ecircumflexdotbelow 
Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde Edblgrave Edieresis Edotaccent Edotbelow Egrave 
Ehookabove Einvertedbreve Emacron Emacronacute Emacrongrave Eogonek Etilde F G Gbreve Gcaron Gcircumflex 
Gcommaaccent Gdotaccent Gmacron H Hbar Hbrevebelow Hcircumflex Hdotbelow I Iacute Ibreve Icaron Icircumflex 
Idblgrave Idieresis Idieresisacute Idotaccent Idotbelow Igrave Ihookabove Iinvertedbreve Imacron Iogonek 
Itilde J Jacute Jcircumflex K Kacute Kcommaaccent L
  LJ Lacu
 te Lcaron Lcommaaccent Ldot Ldotbelow Lj Llinebelow Lslash M Mdotbelow N NJ Nacute Ncaron Ncommaaccent 
Ndotaccent Ndotbelow Nj Nlinebelow Ntilde O Oacute Obreve Ocaron Ocircumflex Ocircumflexacute 
Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Odblgrave Odieresis 
Odieresismacron Odotaccentmacron Odotbelow Ograve Ohookabove Ohorn Ohornacute Ohorndotbelow Ohorngrave 
Ohornhookabove Ohorntilde Ohungarumlaut Oinvertedbreve Omacron Omacronacute Omacrongrave Oogonek Oslash 
Oslashacute Otilde Otildeacute Otildedieresis Otildemacron OE P Q R Racute Rcaron Rcommaaccent Rdblgrave 
Rdotbelow Rinvertedbreve Rlinebelow S Sacute Sacutedotaccent Scaron Scarondotaccent Scedilla Scircumflex 
Scommaaccent Sdotaccent Sdotbelow Sdotbelowdotaccent Schwa T Tbar Tcaron Tcedilla Tcommaaccent Tdotbelow 
Tlinebelow U Uacute Ubreve Ucaron Ucircumflex Udblgrave Udieresis Udieresisacute Udieresiscaron 
Udieresisgrave Udieresismacron Udotbelow Ugrave Uhookabove Uhorn Uhornacute Uho
 rndotbel
 ow Uhorngrave Uhornhookabove Uhorntilde Uhungarumlaut Uinvertedbreve Umacron Umacrondieresis Uogonek Uring 
Utilde Utildeacute V W Wacute Wcircumflex Wdieresis Wgrave X Y Yacute Ycircumflex Ydieresis Ydotaccent 
Ydotbelow Ygrave Yhookabove Ymacron Ytilde Z Zacute Zcaron Zdotaccent Zdotbelow a aacute abreve abreveacute 
abrevedotbelow abrevegrave abrevehookabove abrevetilde acaron acircumflex acircumflexacute 
acircumflexdotbelow acircumflexgrave acircumflexhookabove acircumflextilde adblgrave adieresis adotbelow 
agrave ahookabove ainvertedbreve amacron aogonek aring aringacute atilde ae aeacute b c cacute ccaron 
ccedilla ccedillaacute ccircumflex cdotaccent d dcaron dcroat ddotbelow dlinebelow dzcaron e eacute ebreve 
ecaron ecedillabreve ecircumflex ecircumflexacute ecircumflexdotbelow ecircumflexgrave ecircumflexhookabove 
ecircumflextilde edblgrave edieresis edotaccent edotbelow egrave ehookabove einvertedbreve emacron 
emacronacute emacrongrave eogonek etilde schwa f g gbreve g
 caron gc
 ircumflex gcommaaccent gdotaccent gmacron h hbar hbrevebelow hcircumflex hdotbelow i idotless iacute ibreve 
icaron icircumflex idblgrave idieresis idieresisacute idotaccent idotbelow igrave ihookabove iinvertedbreve 
imacron iogonek itilde j jdotless jacute jcircumflex k kacute kcommaaccent l lacute lcaron lcommaaccent ldot 
ldotbelow lj llinebelow lslash m mdotbelow n nacute ncaron ncommaaccent ndotaccent ndotbelow nj nlinebelow 
ntilde o oacute obreve ocaron ocircumflex ocircumflexacute ocircumflexdotbelow ocircumflexgrave 
ocircumflexhookabove ocircumflextilde odblgrave odieresis odieresismacron odotaccentmacron odotbelow ograve 
ohookabove ohorn ohornacute ohorndotbelow ohorngrave ohornhookabove ohorntilde ohungarumlaut oinvertedbreve 
omacron omacronacute omacrongrave oogonek oslash oslashacute otilde otildeacute otildedieresis otildemacron 
oe p q r racute rcaron rcommaaccent rdblgrave rdotbelow rinvertedbreve rlinebelow s sacute sacutedotaccent 
scaron scarondotaccent scedill
 a scircu
 mflex scommaaccent sdotaccent sdotbelow sdotbelowdotaccent t tbar tcaron tcedilla tcommaaccent tdieresis 
tdotbelow tlinebelow u uacute ubreve ucaron ucircumflex udblgrave udieresis udieresisacute udieresiscaron 
udieresisgrave udieresismacron udotbelow ugrave uhookabove uhorn uhornacute uhorndotbelow uhorngrave 
uhornhookabove uhorntilde uhungarumlaut uinvertedbreve umacron umacrondieresis uogonek uring utilde 
utildeacute v w wacute wcircumflex wdieresis wgrave x y yacute ycircumflex ydieresis ydotaccent ydotbelow 
ygrave yhookabove ymacron ytilde z zacute zcaron zdotaccent zdotbelow A-cy Ve-cy Ge-cy Gje-cy Ie-cy 
Iegrave-cy Io-cy Zhe-cy Ze-cy Ii-cy Iishort-cy Iigrave-cy Ka-cy Kje-cy Em-cy En-cy O-cy Pe-cy Er-cy Es-cy 
Te-cy U-cy Ushort-cy Ha-cy Che-cy Hardsign-cy Yeru-cy Dze-cy Ereversed-cy I-cy Yi-cy Je-cy Iu-cy Ia-cy 
Fita-cy Zhedescender-cy Zedescender-cy Kadescender-cy Endescender-cy Esdescender-cy Ustraight-cy 
Ustraightstroke-cy Hadescender-cy Chedescender-cy Palochka-cy Zhe
 breve-cy
  Chekhakassian-cy Abreve-cy Adieresis-cy Aie-cy Iebreve-cy Schwa-cy Zhedieresis-cy Zedieresis-cy Imacron-cy 
Idieresis-cy Odieresis-cy Obarred-cy Umacron-cy Udieresis-cy Uhungarumlaut-cy Chedieresis-cy Gedescender-cy 
Yerudieresis-cy Qa-cy We-cy a-cy ge-cy gje-cy ie-cy iegrave-cy io-cy zhe-cy ze-cy ii-cy iishort-cy iigrave-cy 
ka-cy kje-cy en-cy o-cy pe-cy er-cy es-cy te-cy u-cy ushort-cy ha-cy che-cy yeru-cy dze-cy e-cy ereversed-cy 
i-cy yi-cy je-cy tshe-cy iu-cy ia-cy dje-cy fita-cy zhedescender-cy zedescender-cy kadescender-cy 
endescender-cy esdescender-cy ustraight-cy hadescender-cy chedescender-cy shha-cy palochka-cy zhebreve-cy 
chekhakassian-cy abreve-cy adieresis-cy aie-cy iebreve-cy schwa-cy zhedieresis-cy zedieresis-cy imacron-cy 
idieresis-cy odieresis-cy obarred-cy umacron-cy udieresis-cy uhungarumlaut-cy chedieresis-cy gedescender-cy 
yerudieresis-cy qa-cy we-cy cedi cent colonsign dollar dong euro franc guarani naira peseta peso won numero 
ustraightstroke-cy], # Base
-       [f_f f_f_i f_f_l fi fl], # Liga
-       [dieresiscomb dieresiscomb_gravecomb dieresiscomb_acutecomb dieresiscomb_caroncomb 
dieresiscomb_macroncomb dotaccentcomb dotaccentcomb_macroncomb gravecomb acutecomb acutecomb_dotaccentcomb 
hungarumlautcomb caroncomb.alt circumflexcomb caroncomb caroncomb_dotaccentcomb brevecomb ringcomb 
ringcomb_acutecomb tildecomb tildecomb_dieresiscomb tildecomb_acutecomb tildecomb_macroncomb macroncomb 
macroncomb_dieresiscomb macroncomb_gravecomb macroncomb_acutecomb hookabovecomb verticallineabovecomb 
dblgravecomb breveinvertedcomb commaturnedabovecomb horncomb dotbelowcomb dieresisbelowcomb commaaccentcomb 
cedillacomb ogonekcomb verticallinebelowcomb brevebelowcomb macronbelowcomb strokeshortcomb strokelongcomb 
slashshortcomb slashlongcomb dieresiscomb.case dotaccentcomb.case gravecomb.case acutecomb.case 
hungarumlautcomb.case circumflexcomb.case caroncomb.case brevecomb.case ringcomb.case ringcomb_acutecomb.case 
tildecomb.case macroncomb.case hookabovecomb.case dblgravecomb.case br
 eveinver
 tedcomb.case strokeshortcomb.case slashshortcomb.case slashlongcomb.case macroncomb.narrow.case 
ogonekcomb.tall.case dieresiscomb.loclVIET dotaccentcomb.loclVIET gravecomb.loclVIET acutecomb.loclVIET 
circumflexcomb.loclVIET caroncomb.loclVIET brevecomb.loclVIET tildecomb.loclVIET macroncomb.loclVIET 
hookabovecomb.loclVIET macroncomb.narrow ogonekcomb.narrow macronbelowcomb.narrow ogonekcomb.tall 
brevecomb-cy descender-cy brevecomb-cy.case descender-cy.case descender-cy.strait brevecomb_acutecomb 
brevecomb_gravecomb brevecomb_hookabovecomb brevecomb_tildecomb circumflexcomb_acutecomb 
circumflexcomb_gravecomb circumflexcomb_hookabovecomb circumflexcomb_tildecomb brevecomb_acutecomb.case 
brevecomb_gravecomb.case brevecomb_hookabovecomb.case brevecomb_tildecomb.case circumflexcomb_acutecomb.case 
circumflexcomb_gravecomb.case circumflexcomb_hookabovecomb.case circumflexcomb_tildecomb.case], # Mark
-       ;
-} GDEF;
+# Prefix: Include GDEF
+include(gdef.fea)
+
 
 feature aalt {
 # automatic
diff --git a/src/Cantarell-Regular.ufo/features.fea b/src/Cantarell-Regular.ufo/features.fea
index 85f474b6..2ccd1eaa 100644
--- a/src/Cantarell-Regular.ufo/features.fea
+++ b/src/Cantarell-Regular.ufo/features.fea
@@ -16,15 +16,9 @@ languagesystem latn CRT;
 languagesystem latn AZE;
 
 
-# automatic
-table GDEF {
-  # automatic
-  GlyphClassDef
-       [A Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehookabove Abrevetilde Acaron 
Acircumflex Acircumflexacute Acircumflexdotbelow Acircumflexgrave Acircumflexhookabove Acircumflextilde 
Adblgrave Adieresis Adotbelow Agrave Ahookabove Ainvertedbreve Amacron Aogonek Aring Aringacute Atilde AE 
AEacute B C Cacute Ccaron Ccedilla Ccedillaacute Ccircumflex Cdotaccent D DZcaron Eth Dcaron Dcroat Ddotbelow 
Dlinebelow Dzcaron E Eacute Ebreve Ecaron Ecedillabreve Ecircumflex Ecircumflexacute Ecircumflexdotbelow 
Ecircumflexgrave Ecircumflexhookabove Ecircumflextilde Edblgrave Edieresis Edotaccent Edotbelow Egrave 
Ehookabove Einvertedbreve Emacron Emacronacute Emacrongrave Eogonek Etilde F G Gbreve Gcaron Gcircumflex 
Gcommaaccent Gdotaccent Gmacron H Hbar Hbrevebelow Hcircumflex Hdotbelow I Iacute Ibreve Icaron Icircumflex 
Idblgrave Idieresis Idieresisacute Idotaccent Idotbelow Igrave Ihookabove Iinvertedbreve Imacron Iogonek 
Itilde J Jacute Jcircumflex K Kacute Kcommaaccent L
  LJ Lacu
 te Lcaron Lcommaaccent Ldot Ldotbelow Lj Llinebelow Lslash M Mdotbelow N NJ Nacute Ncaron Ncommaaccent 
Ndotaccent Ndotbelow Nj Nlinebelow Ntilde O Oacute Obreve Ocaron Ocircumflex Ocircumflexacute 
Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhookabove Ocircumflextilde Odblgrave Odieresis 
Odieresismacron Odotaccentmacron Odotbelow Ograve Ohookabove Ohorn Ohornacute Ohorndotbelow Ohorngrave 
Ohornhookabove Ohorntilde Ohungarumlaut Oinvertedbreve Omacron Omacronacute Omacrongrave Oogonek Oslash 
Oslashacute Otilde Otildeacute Otildedieresis Otildemacron OE P Q R Racute Rcaron Rcommaaccent Rdblgrave 
Rdotbelow Rinvertedbreve Rlinebelow S Sacute Sacutedotaccent Scaron Scarondotaccent Scedilla Scircumflex 
Scommaaccent Sdotaccent Sdotbelow Sdotbelowdotaccent Schwa T Tbar Tcaron Tcedilla Tcommaaccent Tdotbelow 
Tlinebelow U Uacute Ubreve Ucaron Ucircumflex Udblgrave Udieresis Udieresisacute Udieresiscaron 
Udieresisgrave Udieresismacron Udotbelow Ugrave Uhookabove Uhorn Uhornacute Uho
 rndotbel
 ow Uhorngrave Uhornhookabove Uhorntilde Uhungarumlaut Uinvertedbreve Umacron Umacrondieresis Uogonek Uring 
Utilde Utildeacute V W Wacute Wcircumflex Wdieresis Wgrave X Y Yacute Ycircumflex Ydieresis Ydotaccent 
Ydotbelow Ygrave Yhookabove Ymacron Ytilde Z Zacute Zcaron Zdotaccent Zdotbelow a aacute abreve abreveacute 
abrevedotbelow abrevegrave abrevehookabove abrevetilde acaron acircumflex acircumflexacute 
acircumflexdotbelow acircumflexgrave acircumflexhookabove acircumflextilde adblgrave adieresis adotbelow 
agrave ahookabove ainvertedbreve amacron aogonek aring aringacute atilde ae aeacute b c cacute ccaron 
ccedilla ccedillaacute ccircumflex cdotaccent d dcaron dcroat ddotbelow dlinebelow dzcaron e eacute ebreve 
ecaron ecedillabreve ecircumflex ecircumflexacute ecircumflexdotbelow ecircumflexgrave ecircumflexhookabove 
ecircumflextilde edblgrave edieresis edotaccent edotbelow egrave ehookabove einvertedbreve emacron 
emacronacute emacrongrave eogonek etilde schwa f g gbreve g
 caron gc
 ircumflex gcommaaccent gdotaccent gmacron h hbar hbrevebelow hcircumflex hdotbelow i idotless iacute ibreve 
icaron icircumflex idblgrave idieresis idieresisacute idotaccent idotbelow igrave ihookabove iinvertedbreve 
imacron iogonek itilde j jdotless jacute jcircumflex k kacute kcommaaccent l lacute lcaron lcommaaccent ldot 
ldotbelow lj llinebelow lslash m mdotbelow n nacute ncaron ncommaaccent ndotaccent ndotbelow nj nlinebelow 
ntilde o oacute obreve ocaron ocircumflex ocircumflexacute ocircumflexdotbelow ocircumflexgrave 
ocircumflexhookabove ocircumflextilde odblgrave odieresis odieresismacron odotaccentmacron odotbelow ograve 
ohookabove ohorn ohornacute ohorndotbelow ohorngrave ohornhookabove ohorntilde ohungarumlaut oinvertedbreve 
omacron omacronacute omacrongrave oogonek oslash oslashacute otilde otildeacute otildedieresis otildemacron 
oe p q r racute rcaron rcommaaccent rdblgrave rdotbelow rinvertedbreve rlinebelow s sacute sacutedotaccent 
scaron scarondotaccent scedill
 a scircu
 mflex scommaaccent sdotaccent sdotbelow sdotbelowdotaccent t tbar tcaron tcedilla tcommaaccent tdieresis 
tdotbelow tlinebelow u uacute ubreve ucaron ucircumflex udblgrave udieresis udieresisacute udieresiscaron 
udieresisgrave udieresismacron udotbelow ugrave uhookabove uhorn uhornacute uhorndotbelow uhorngrave 
uhornhookabove uhorntilde uhungarumlaut uinvertedbreve umacron umacrondieresis uogonek uring utilde 
utildeacute v w wacute wcircumflex wdieresis wgrave x y yacute ycircumflex ydieresis ydotaccent ydotbelow 
ygrave yhookabove ymacron ytilde z zacute zcaron zdotaccent zdotbelow A-cy Ve-cy Ge-cy Gje-cy Ie-cy 
Iegrave-cy Io-cy Zhe-cy Ze-cy Ii-cy Iishort-cy Iigrave-cy Ka-cy Kje-cy Em-cy En-cy O-cy Pe-cy Er-cy Es-cy 
Te-cy U-cy Ushort-cy Ha-cy Che-cy Hardsign-cy Yeru-cy Dze-cy Ereversed-cy I-cy Yi-cy Je-cy Iu-cy Ia-cy 
Fita-cy Zhedescender-cy Zedescender-cy Kadescender-cy Endescender-cy Esdescender-cy Ustraight-cy 
Ustraightstroke-cy Hadescender-cy Chedescender-cy Palochka-cy Zhe
 breve-cy
  Chekhakassian-cy Abreve-cy Adieresis-cy Aie-cy Iebreve-cy Schwa-cy Zhedieresis-cy Zedieresis-cy Imacron-cy 
Idieresis-cy Odieresis-cy Obarred-cy Umacron-cy Udieresis-cy Uhungarumlaut-cy Chedieresis-cy Gedescender-cy 
Yerudieresis-cy Qa-cy We-cy a-cy ge-cy gje-cy ie-cy iegrave-cy io-cy zhe-cy ze-cy ii-cy iishort-cy iigrave-cy 
ka-cy kje-cy en-cy o-cy pe-cy er-cy es-cy te-cy u-cy ushort-cy ha-cy che-cy yeru-cy dze-cy e-cy ereversed-cy 
i-cy yi-cy je-cy tshe-cy iu-cy ia-cy dje-cy fita-cy zhedescender-cy zedescender-cy kadescender-cy 
endescender-cy esdescender-cy ustraight-cy hadescender-cy chedescender-cy shha-cy palochka-cy zhebreve-cy 
chekhakassian-cy abreve-cy adieresis-cy aie-cy iebreve-cy schwa-cy zhedieresis-cy zedieresis-cy imacron-cy 
idieresis-cy odieresis-cy obarred-cy umacron-cy udieresis-cy uhungarumlaut-cy chedieresis-cy gedescender-cy 
yerudieresis-cy qa-cy we-cy cedi cent colonsign dollar dong euro franc guarani naira peseta peso won numero 
ustraightstroke-cy], # Base
-       [f_f f_f_i f_f_l fi fl], # Liga
-       [dieresiscomb dieresiscomb_gravecomb dieresiscomb_acutecomb dieresiscomb_caroncomb 
dieresiscomb_macroncomb dotaccentcomb dotaccentcomb_macroncomb gravecomb acutecomb acutecomb_dotaccentcomb 
hungarumlautcomb caroncomb.alt circumflexcomb caroncomb caroncomb_dotaccentcomb brevecomb ringcomb 
ringcomb_acutecomb tildecomb tildecomb_dieresiscomb tildecomb_acutecomb tildecomb_macroncomb macroncomb 
macroncomb_dieresiscomb macroncomb_gravecomb macroncomb_acutecomb hookabovecomb verticallineabovecomb 
dblgravecomb breveinvertedcomb commaturnedabovecomb horncomb dotbelowcomb dieresisbelowcomb commaaccentcomb 
cedillacomb ogonekcomb verticallinebelowcomb brevebelowcomb macronbelowcomb strokeshortcomb strokelongcomb 
slashshortcomb slashlongcomb dieresiscomb.case dotaccentcomb.case gravecomb.case acutecomb.case 
hungarumlautcomb.case circumflexcomb.case caroncomb.case brevecomb.case ringcomb.case ringcomb_acutecomb.case 
tildecomb.case macroncomb.case hookabovecomb.case dblgravecomb.case br
 eveinver
 tedcomb.case strokeshortcomb.case slashshortcomb.case slashlongcomb.case macroncomb.narrow.case 
ogonekcomb.tall.case dieresiscomb.loclVIET dotaccentcomb.loclVIET gravecomb.loclVIET acutecomb.loclVIET 
circumflexcomb.loclVIET caroncomb.loclVIET brevecomb.loclVIET tildecomb.loclVIET macroncomb.loclVIET 
hookabovecomb.loclVIET macroncomb.narrow ogonekcomb.narrow macronbelowcomb.narrow ogonekcomb.tall 
brevecomb-cy descender-cy brevecomb-cy.case descender-cy.case descender-cy.strait brevecomb_acutecomb 
brevecomb_gravecomb brevecomb_hookabovecomb brevecomb_tildecomb circumflexcomb_acutecomb 
circumflexcomb_gravecomb circumflexcomb_hookabovecomb circumflexcomb_tildecomb brevecomb_acutecomb.case 
brevecomb_gravecomb.case brevecomb_hookabovecomb.case brevecomb_tildecomb.case circumflexcomb_acutecomb.case 
circumflexcomb_gravecomb.case circumflexcomb_hookabovecomb.case circumflexcomb_tildecomb.case], # Mark
-       ;
-} GDEF;
+# Prefix: Include GDEF
+include(gdef.fea)
+
 
 feature aalt {
 # automatic
diff --git a/src/gdef.fea b/src/gdef.fea
new file mode 100644
index 00000000..326bd4c6
--- /dev/null
+++ b/src/gdef.fea
@@ -0,0 +1,8 @@
+table GDEF {
+  # automatic
+  GlyphClassDef
+    [A Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehookabove Abrevetilde Acaron Acircumflex 
Acircumflexacute Acircumflexdotbelow Acircumflexgrave Acircumflexhookabove Acircumflextilde Adblgrave 
Adieresis Adotbelow Agrave Ahookabove Ainvertedbreve Amacron Aogonek Aring Aringacute Atilde AE AEacute B C 
Cacute Ccaron Ccedilla Ccedillaacute Ccircumflex Cdotaccent D Eth Dcaron Dcroat Ddotbelow Dlinebelow E Eacute 
Ebreve Ecaron Ecedillabreve Ecircumflex Ecircumflexacute Ecircumflexdotbelow Ecircumflexgrave 
Ecircumflexhookabove Ecircumflextilde Edblgrave Edieresis Edotaccent Edotbelow Egrave Ehookabove 
Einvertedbreve Emacron Emacronacute Emacrongrave Eogonek Etilde F G Gbreve Gcaron Gcircumflex Gcommaaccent 
Gdotaccent Gmacron H Hbar Hbrevebelow Hcircumflex Hdotbelow I Iacute Ibreve Icaron Icircumflex Idblgrave 
Idieresis Idieresisacute Idotaccent Idotbelow Igrave Ihookabove Iinvertedbreve Imacron Iogonek Itilde J 
Jacute Jcircumflex K Kacute Kcommaaccent L Lacute Lcaro
 n Lcomma
 accent Ldotbelow Llinebelow Lslash M Mdotbelow N Nacute Ncaron Ncommaaccent Ndotaccent Ndotbelow Nlinebelow 
Ntilde O Oacute Obreve Ocaron Ocircumflex Ocircumflexacute Ocircumflexdotbelow Ocircumflexgrave 
Ocircumflexhookabove Ocircumflextilde Odblgrave Odieresis Odieresismacron Odotaccentmacron Odotbelow Ograve 
Ohookabove Ohorn Ohornacute Ohorndotbelow Ohorngrave Ohornhookabove Ohorntilde Ohungarumlaut Oinvertedbreve 
Omacron Omacronacute Omacrongrave Oogonek Oslash Oslashacute Otilde Otildeacute Otildedieresis Otildemacron 
OE P Q R Racute Rcaron Rcommaaccent Rdblgrave Rdotbelow Rinvertedbreve Rlinebelow S Sacute Sacutedotaccent 
Scaron Scarondotaccent Scedilla Scircumflex Scommaaccent Sdotaccent Sdotbelow Sdotbelowdotaccent Schwa T Tbar 
Tcaron Tcedilla Tcommaaccent Tdotbelow Tlinebelow U Uacute Ubreve Ucaron Ucircumflex Udblgrave Udieresis 
Udieresisacute Udieresiscaron Udieresisgrave Udieresismacron Udotbelow Ugrave Uhookabove Uhorn Uhornacute 
Uhorndotbelow Uhorngrave Uhornhoo
 kabove U
 horntilde Uhungarumlaut Uinvertedbreve Umacron Umacrondieresis Uogonek Uring Utilde Utildeacute V W Wacute 
Wcircumflex Wdieresis Wgrave X Y Yacute Ycircumflex Ydieresis Ydotaccent Ydotbelow Ygrave Yhookabove Ymacron 
Ytilde Z Zacute Zcaron Zdotaccent Zdotbelow a aacute abreve abreveacute abrevedotbelow abrevegrave 
abrevehookabove abrevetilde acaron acircumflex acircumflexacute acircumflexdotbelow acircumflexgrave 
acircumflexhookabove acircumflextilde adblgrave adieresis adotbelow agrave ahookabove ainvertedbreve amacron 
aogonek aring aringacute atilde ae aeacute b c cacute ccaron ccedilla ccedillaacute ccircumflex cdotaccent d 
dcaron dcroat ddotbelow dlinebelow e eacute ebreve ecaron ecedillabreve ecircumflex ecircumflexacute 
ecircumflexdotbelow ecircumflexgrave ecircumflexhookabove ecircumflextilde edblgrave edieresis edotaccent 
edotbelow egrave ehookabove einvertedbreve emacron emacronacute emacrongrave eogonek etilde schwa f g gbreve 
gcaron gcircumflex gcommaaccent gdotacc
 ent gmac
 ron h hbar hbrevebelow hcircumflex hdotbelow i idotless iacute ibreve icaron icircumflex idblgrave idieresis 
idieresisacute idotaccent idotbelow igrave ihookabove iinvertedbreve imacron iogonek itilde j jdotless jacute 
jcircumflex k kacute kcommaaccent l lacute lcaron lcommaaccent ldotbelow llinebelow lslash m mdotbelow n 
nacute ncaron ncommaaccent ndotaccent ndotbelow nlinebelow ntilde o oacute obreve ocaron ocircumflex 
ocircumflexacute ocircumflexdotbelow ocircumflexgrave ocircumflexhookabove ocircumflextilde odblgrave 
odieresis odieresismacron odotaccentmacron odotbelow ograve ohookabove ohorn ohornacute ohorndotbelow 
ohorngrave ohornhookabove ohorntilde ohungarumlaut oinvertedbreve omacron omacronacute omacrongrave oogonek 
oslash oslashacute otilde otildeacute otildedieresis otildemacron oe p q r racute rcaron rcommaaccent 
rdblgrave rdotbelow rinvertedbreve rlinebelow s sacute sacutedotaccent scaron scarondotaccent scedilla 
scircumflex scommaaccent sdotaccent sdotbelow s
 dotbelow
 dotaccent t tbar tcaron tcedilla tcommaaccent tdieresis tdotbelow tlinebelow u uacute ubreve ucaron 
ucircumflex udblgrave udieresis udieresisacute udieresiscaron udieresisgrave udieresismacron udotbelow ugrave 
uhookabove uhorn uhornacute uhorndotbelow uhorngrave uhornhookabove uhorntilde uhungarumlaut uinvertedbreve 
umacron umacrondieresis uogonek uring utilde utildeacute v w wacute wcircumflex wdieresis wgrave x y yacute 
ycircumflex ydieresis ydotaccent ydotbelow ygrave yhookabove ymacron ytilde z zacute zcaron zdotaccent 
zdotbelow A-cy Ve-cy Ge-cy Gje-cy Ie-cy Iegrave-cy Io-cy Zhe-cy Ze-cy Ii-cy Iishort-cy Iigrave-cy Ka-cy 
Kje-cy Em-cy En-cy O-cy Pe-cy Er-cy Es-cy Te-cy U-cy Ushort-cy Ha-cy Che-cy Hardsign-cy Yeru-cy Dze-cy 
Ereversed-cy I-cy Yi-cy Je-cy Iu-cy Ia-cy Fita-cy Zhedescender-cy Zedescender-cy Kadescender-cy 
Endescender-cy Esdescender-cy Ustraight-cy Ustraightstroke-cy Hadescender-cy Chedescender-cy Palochka-cy 
Zhebreve-cy Chekhakassian-cy Abreve-cy Adieresis-cy 
 Aie-cy I
 ebreve-cy Schwa-cy Zhedieresis-cy Zedieresis-cy Imacron-cy Idieresis-cy Odieresis-cy Obarred-cy Umacron-cy 
Udieresis-cy Uhungarumlaut-cy Chedieresis-cy Gedescender-cy Yerudieresis-cy Qa-cy We-cy a-cy ge-cy gje-cy 
ie-cy iegrave-cy io-cy zhe-cy ze-cy ii-cy iishort-cy iigrave-cy ka-cy kje-cy en-cy o-cy pe-cy er-cy es-cy 
te-cy u-cy ushort-cy ha-cy che-cy yeru-cy dze-cy e-cy ereversed-cy i-cy yi-cy je-cy tshe-cy iu-cy ia-cy 
dje-cy fita-cy zhedescender-cy zedescender-cy kadescender-cy endescender-cy esdescender-cy ustraight-cy 
ustraightstroke-cy hadescender-cy chedescender-cy shha-cy palochka-cy zhebreve-cy chekhakassian-cy abreve-cy 
adieresis-cy aie-cy iebreve-cy schwa-cy zhedieresis-cy zedieresis-cy imacron-cy idieresis-cy odieresis-cy 
obarred-cy umacron-cy udieresis-cy uhungarumlaut-cy chedieresis-cy gedescender-cy yerudieresis-cy qa-cy 
we-cy], # Base
+    , # Liga
+    [dieresiscomb dieresiscomb_gravecomb dieresiscomb_acutecomb dieresiscomb_caroncomb 
dieresiscomb_macroncomb dotaccentcomb dotaccentcomb_macroncomb gravecomb acutecomb acutecomb_dotaccentcomb 
hungarumlautcomb caroncomb.alt circumflexcomb caroncomb caroncomb_dotaccentcomb brevecomb ringcomb 
ringcomb_acutecomb tildecomb tildecomb_dieresiscomb tildecomb_acutecomb tildecomb_macroncomb macroncomb 
macroncomb_dieresiscomb macroncomb_gravecomb macroncomb_acutecomb hookabovecomb verticallineabovecomb 
dblgravecomb breveinvertedcomb commaturnedabovecomb horncomb dotbelowcomb dieresisbelowcomb commaaccentcomb 
cedillacomb ogonekcomb verticallinebelowcomb brevebelowcomb macronbelowcomb strokeshortcomb strokelongcomb 
slashshortcomb slashlongcomb dieresiscomb.case dotaccentcomb.case gravecomb.case acutecomb.case 
hungarumlautcomb.case circumflexcomb.case caroncomb.case brevecomb.case ringcomb.case ringcomb_acutecomb.case 
tildecomb.case macroncomb.case hookabovecomb.case dblgravecomb.case b
 reveinve
 rtedcomb.case strokeshortcomb.case slashshortcomb.case slashlongcomb.case macroncomb.narrow.case 
ogonekcomb.tall.case dieresiscomb.loclVIET dotaccentcomb.loclVIET gravecomb.loclVIET acutecomb.loclVIET 
circumflexcomb.loclVIET caroncomb.loclVIET brevecomb.loclVIET tildecomb.loclVIET macroncomb.loclVIET 
hookabovecomb.loclVIET macroncomb.narrow ogonekcomb.narrow macronbelowcomb.narrow ogonekcomb.tall 
brevecomb-cy descender-cy brevecomb-cy.case descender-cy.case descender-cy.strait brevecomb_acutecomb 
brevecomb_gravecomb brevecomb_hookabovecomb brevecomb_tildecomb circumflexcomb_acutecomb 
circumflexcomb_gravecomb circumflexcomb_hookabovecomb circumflexcomb_tildecomb brevecomb_acutecomb.case 
brevecomb_gravecomb.case brevecomb_hookabovecomb.case brevecomb_tildecomb.case circumflexcomb_acutecomb.case 
circumflexcomb_gravecomb.case circumflexcomb_hookabovecomb.case circumflexcomb_tildecomb.case], # Mark
+    ;
+} GDEF;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]