Repository: googlefonts/glyphsLib
Pull request #613 (2020-05-29 05:53:16)

hints: target="up" or "down"
See *Hints: handle up and down targets* https://github.com/googlefonts/glyphsLib/issues/376

moyogo: @madig do we need to check target="down" or target="up" only occurs with type="TopGhost" or "BottomGhost" respectively?
madig: No idea. @schriftgestalt ?
schriftgestalt: > target="down" or target="up" only occurs with type="TopGhost" or "BottomGhost"

This is true. Is this answering the question?
moyogo: >>    target="down" or target="up" only occurs with type="TopGhost" or "BottomGhost"

> This is true. Is this answering the question?

Yes, thanks! I guess glyphsLib doesn’t need to validate.

Patch:
diff --git a/Lib/glyphsLib/builder/hints.py b/Lib/glyphsLib/builder/hints.py
index 2ba9ae8f..a799e331 100644
--- a/Lib/glyphsLib/builder/hints.py
+++ b/Lib/glyphsLib/builder/hints.py
@@ -32,8 +32,9 @@ def to_ufo_hints(self, ufo_glyph, layer):
             hint[attr] = val
         for attr in ["origin", "other1", "other2", "place", "scale", "target"]:
             val = getattr(hi, attr, None)
-            # FIXME: (jany) what about target = up/down?
-            if val is not None and not any(v is None for v in val):
+            if attr == "target" and val in ("up", "down"):
+                hint[attr] = val
+            elif val is not None and not any(v is None for v in val):
                 hint[attr] = list(val)
         hints.append(hint)
 
@@ -49,8 +50,15 @@ def to_glyphs_hints(self, ufo_glyph, layer):
         for attr in ["horizontal", "options", "stem", "type"]:
             setattr(hi, attr, hint[attr])
         for attr in ["origin", "other1", "other2", "place", "scale", "target"]:
-            # FIXME: (jany) what about target = up/down?
             if attr in hint:
-                value = Point(*hint[attr])
+                # https://github.com/googlefonts/glyphsLib/pull/613
+                # handle target = ['u', 'p'] or ['d', 'o', 'w', 'n']
+                if attr == "target" and hint[attr] in (list("down"), list("up")):
+                    value = "".join(hint[attr])
+                # handle target = "up" or "down"
+                elif attr == "target" and hint[attr] in ("down", "up"):
+                    value = hint[attr]
+                else:
+                    value = Point(*hint[attr])
                 setattr(hi, attr, value)
         layer.hints.append(hi)
diff --git a/Lib/glyphsLib/data/GlyphData.xml b/Lib/glyphsLib/data/GlyphData.xml
index 4c89ca35..e5c4642f 100644
--- a/Lib/glyphsLib/data/GlyphData.xml
+++ b/Lib/glyphsLib/data/GlyphData.xml
@@ -425,7 +425,7 @@
 	<glyph unicode="0135" name="jcircumflex" category="Letter" subCategory="Lowercase" script="latin" description="LATIN SMALL LETTER J WITH CIRCUMFLEX" />
 	<glyph unicode="0136" name="Kcommaaccent" category="Letter" subCategory="Uppercase" script="latin" production="uni0136" altNames="Kcedilla" description="LATIN CAPITAL LETTER K WITH CEDILLA" />
 	<glyph unicode="0137" name="kcommaaccent" category="Letter" subCategory="Lowercase" script="latin" production="uni0137" altNames="kcedilla" description="LATIN SMALL LETTER K WITH CEDILLA" />
-	<glyph name="Jacute" category="Letter" subCategory="Uppercase" script="latin" production="uni00A40301" description="LATIN CAPITAL LETTER J WITH ACUTE" />
+	<glyph name="Jacute" category="Letter" subCategory="Uppercase" script="latin" production="uni004A0301" description="LATIN CAPITAL LETTER J WITH ACUTE" />
 	<glyph name="jacute" category="Letter" subCategory="Lowercase" script="latin" production="uni006A0301" description="LATIN SMALL LETTER J WITH ACUTE" />
 	<glyph unicode="0138" name="kgreenlandic" category="Letter" subCategory="Lowercase" script="latin" description="LATIN SMALL LETTER KRA" />
 	<glyph unicode="0139" name="Lacute" category="Letter" subCategory="Uppercase" script="latin" description="LATIN CAPITAL LETTER L WITH ACUTE" />
@@ -4127,7 +4127,7 @@
 	<glyph unicode="FEA8" name="khah-ar.medi" category="Letter" script="arabic" production="uniFEA8" altNames="khahmedialarabic" description="ARABIC LETTER KHAH MEDIAL FORM" />
 	<glyph unicode="FEA7" name="khah-ar.init" category="Letter" script="arabic" production="uniFEA7" altNames="khahinitialarabic" description="ARABIC LETTER KHAH INITIAL FORM" />
 	<glyph unicode="076E" name="hahTahbelow-ar" category="Letter" script="arabic" production="uni076E" description="ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW" />
-	<glyph unicode="076F" name="hahTahTwodotshorizontalabove-ar" category="Letter" script="arabic" production="uni076F" description="ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS" />
+	<glyph unicode="076F" name="hahTahTwodotshorizontalbelow-ar" category="Letter" script="arabic" production="uni076F" altNames="hahTahTwodotshorizontalabove-ar" description="ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS" />
 	<glyph unicode="077C" name="hahFourbelow-ar" category="Letter" script="arabic" production="uni077C" description="ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW" />
 	<glyph unicode="08A2" name="jeemTwodotsabove-ar" category="Letter" script="arabic" production="uni08A2" description="ARABIC LETTER JEEM WITH TWO DOTS ABOVE" />
 	<glyph unicode="062F" name="dal-ar" category="Letter" script="arabic" production="uni062F" altNames="afii57423, dalarabic" description="ARABIC LETTER DAL" />
@@ -4273,6 +4273,7 @@
 	<glyph unicode="06A8" name="qafThreedotsabove-ar" category="Letter" script="arabic" production="uni06A8" description="ARABIC LETTER QAF WITH THREE DOTS ABOVE" />
 	<glyph unicode="08A5" name="qafDotbelow-ar" category="Letter" script="arabic" production="uni08A5" description="ARABIC LETTER QAF WITH DOT BELOW" />
 	<glyph unicode="08BC" name="qafAfrican-ar" category="Letter" script="arabic" production="uni08BC" description="ARABIC LETTER AFRICAN QAF" />
+	<glyph name="kafDotless-ar" category="Letter" script="arabic" altNames="dotlesskaf-ar" description="ARABIC LETTER DOTLESS KAF" />
 	<glyph unicode="0643" name="kaf-ar" category="Letter" script="arabic" production="uni0643" altNames="afii57443, kafarabic" description="ARABIC LETTER KAF" />
 	<glyph unicode="FED9" name="kaf-ar.isol" category="Letter" script="arabic" production="uniFED9" description="ARABIC LETTER KAF ISOLATED FORM" />
 	<glyph unicode="FEDA" name="kaf-ar.fina" category="Letter" script="arabic" production="uniFEDA" altNames="kaffinalarabic" description="ARABIC LETTER KAF FINAL FORM" />
@@ -4486,7 +4487,7 @@
 	<glyph unicode="0768" name="noonTahabove-ar" category="Letter" script="arabic" production="uni0768" description="ARABIC LETTER NOON WITH SMALL TAH" />
 	<glyph unicode="0769" name="noonVabove-ar" category="Letter" script="arabic" production="uni0769" description="ARABIC LETTER NOON WITH SMALL V" />
 	<glyph unicode="076A" name="lamBar-ar" category="Letter" script="arabic" production="uni076A" description="ARABIC LETTER LAM WITH BAR" />
-	<glyph unicode="076D" name="seenTwodotshorizontalabove-ar" category="Letter" script="arabic" production="uni076D" description="ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE" />
+	<glyph unicode="076D" name="seenTwodotsverticalabove-ar" category="Letter" script="arabic" production="uni076D" altNames="seenTwodotshorizontalabove-ar" description="ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE" />
 	<glyph unicode="0770" name="seenTahTwodotshorizontalabove-ar" category="Letter" script="arabic" production="uni0770" description="ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS" />
 	<glyph unicode="0772" name="hahTahabove-ar" category="Letter" script="arabic" production="uni0772" description="ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE" />
 	<glyph unicode="077D" name="seenFourabove-ar" category="Letter" script="arabic" production="uni077D" description="ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE" />
@@ -4964,17 +4965,61 @@
 	<glyph unicode="FBBE" name="twodotsverticalbelowSymbol-ar" category="Punctuation" script="arabic" production="uniFBBE" description="ARABIC TWO DOTS VERTICAL PUNCTUATION MARK" />
 	<glyph unicode="FBBF" name="ringSymbol-ar" category="Punctuation" script="arabic" production="uniFBBF" description="ARABIC RING" />
 	<glyph unicode="FBC1" name="tahbelowSymbol-ar" category="Punctuation" script="arabic" production="uniFBC1" description="ARABIC SYMBOL SMALL TAH BELOW" />
+	<glyph name="tahcenter-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0615.alt" description="ARABIC SMALL HIGH TAH" />
+	<glyph name="tahbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC SYMBOL SMALL TAH BELOW" />
 	<glyph unicode="0616" name="alefLamYehabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0616" description="ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH" />
 	<glyph unicode="0617" name="zainabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0617" description="ARABIC SMALL HIGH ZAIN" />
 	<glyph unicode="0618" name="fathasmall-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0618" description="ARABIC SMALL FATHA" />
 	<glyph unicode="0619" name="dammasmall-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0619" description="ARABIC SMALL DAMMA" />
 	<glyph unicode="061A" name="kasrasmall-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni061A" description="ARABIC SMALL KASRA" />
+	<glyph name="dotabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC DOT PUNCTUATION MARK" />
+	<glyph name="dotbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC DOT PUNCTUATION MARK" />
+	<glyph name="dotcenter-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC DOT PUNCTUATION MARK" />
+	<glyph name="twodotsverticalabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TWO DOTS VERTICAL PUNCTUATION MARK" />
+	<glyph name="twodotsverticalbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TWO DOTS VERTICAL PUNCTUATION MARK" />
+	<glyph name="twodotsverticalcenter-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TWO DOTS VERTICAL PUNCTUATION MARK" />
+	<glyph name="twodotshorizontalabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TWO DOTS HORIZONTAL PUNCTUATION MARK" />
+	<glyph name="twodotshorizontalbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TWO DOTS HORIZONTAL PUNCTUATION MARK" />
+	<glyph name="twodotshorizontalcenter-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TWO DOTS HORIZONTAL PUNCTUATION MARK" />
+	<glyph name="threedotsdownabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TRIPLE DOT DOWN PUNCTUATION MARK" />
+	<glyph name="threedotsdownbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TRIPLE DOT DOWN PUNCTUATION MARK" />
+	<glyph name="threedotsdowncenter-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TRIPLE DOT DOWN PUNCTUATION MARK" />
+	<glyph name="threedotsupabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TRIPLE DOT UP PUNCTUATION MARK" />
+	<glyph name="threedotsupbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TRIPLE DOT UP PUNCTUATION MARK" />
+	<glyph name="threedotsupcenter-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC TRIPLE DOT UP PUNCTUATION MARK" />
+	<glyph name="threedotshorizontalabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="threedotshoriupar" description="ARABIC TRIPLE DOT HORIZONTAL PUNCTUATION MARK" />
+	<glyph name="threedotshorizontalbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="threedotshoridownar" description="ARABIC TRIPLE DOT HORIZONTAL PUNCTUATION MARK" />
+	<glyph name="fourdotsabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC FOUR DOTS ABOVE PUNCTUATION MARK" />
+	<glyph name="fourdotsbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC FOUR DOTS BELOW PUNCTUATION MARK" />
+	<glyph name="fourdotscenter-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC FOUR DOTS BELOW PUNCTUATION MARK" />
+	<glyph name="stroke-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC STROKE COMPONENT" />
+	<glyph name="fourabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC SMALL FOUR ABOVE" />
+	<glyph name="fourcenter-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC-INDIC SMALL DIGIT FOUR" />
+	<glyph name="fourbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC SMALL FOUR BELOW" />
+	<glyph name="threeabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC SMALL THREE ABOVE" />
+	<glyph name="twoabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC SMALL TWO ABOVE" />
+	<glyph name="ringbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC RING PUNCTUATION MARK" />
+	<glyph name="wasla-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC WASLA PUNCTUATION MARK" />
+	<glyph name="wavyhamzaabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC WAVY HAMZA ABOVE" />
+	<glyph name="miniKeheh-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC MINI KEHEH" />
+	<glyph name="gafsarkashabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC GAFSARKASH ABOVE" />
+	<glyph name="gafsarkashcenter-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC GAFSARKASH CENTER" />
+	<glyph name="doublestroke-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC DOUBLE STROKE" />
 	<glyph unicode="065F" name="wavyhamzabelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni065F" description="ARABIC WAVY HAMZA BELOW" />
+	<glyph name="ring-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC RING" />
 	<glyph name="ringcenter-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC RING" />
 	<glyph unicode="0670" name="alefabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0670" description="ARABIC LETTER SUPERSCRIPT ALEF" />
 	<glyph unicode="0656" name="alefbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0656" description="ARABIC SUBSCRIPT ALEF" />
 	<glyph unicode="0654" name="hamzaabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0654" description="ARABIC HAMZA ABOVE" />
 	<glyph unicode="0655" name="hamzabelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0655" description="ARABIC HAMZA BELOW" />
+	<glyph name="hamzacenter-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC HAMZA CENTER" />
+	<glyph name="hamzaaboveDamma-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0654064F" description="ARABIC Hamzaabove Damma" />
+	<glyph name="hamzaaboveDammatan-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0654064C" description="ARABIC Hamzaabove Dammatan" />
+	<glyph name="hamzaaboveFatha-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0654064E" description="ARABIC Hamzaabove Fatha" />
+	<glyph name="hamzaaboveFathatan-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0654064B" description="ARABIC Hamzaabove Fathatan" />
+	<glyph name="hamzaaboveSukun-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni06540652" description="ARABIC Hamzaabove Sukun" />
+	<glyph name="hamzabelowKasra-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni06550650" description="ARABIC Hamzabelow Kasra" />
+	<glyph name="hamzabelowKasratan-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0655064D" description="ARABIC Hamzabelow Kasratan" />
 	<glyph unicode="064B" name="fathatan-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni064B" altNames="afii57451, fathatanarabic" description="ARABIC FATHATAN" />
 	<glyph unicode="FE70" name="fathatan-ar.isol" category="Mark" subCategory="Spacing" script="arabic" production="uniFE70" description="ARABIC FATHATAN ISOLATED FORM" />
 	<glyph unicode="064C" name="dammatan-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni064C" altNames="afii57452, dammatanaltonearabic, dammatanarabic" description="ARABIC DAMMATAN" />
@@ -4991,6 +5036,7 @@
 	<glyph unicode="0651" name="shadda-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0651" altNames="afii57457, shaddaarabic" description="ARABIC SHADDA" />
 	<glyph unicode="FE7C" name="shadda-ar.isol" category="Mark" subCategory="Spacing" script="arabic" production="uniFE7C" description="ARABIC SHADDA ISOLATED FORM" />
 	<glyph unicode="FE7D" name="shadda-ar.medi" category="Letter" script="arabic" production="uniFE7D" description="ARABIC SHADDA MEDIAL FORM" />
+	<glyph name="shadda_fathatan-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0651064B" description="ARABIC LIGATURE SHADDA WITH FATHATAN ISOLATED FORM" />
 	<glyph unicode="FC5E" name="shadda_dammatan-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uniFC5E" altNames="shaddadammatanarabic" description="ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM" />
 	<glyph unicode="FC5F" name="shadda_kasratan-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uniFC5F" altNames="shaddakasratanarabic" description="ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM" />
 	<glyph unicode="FC60" name="shadda_fatha-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uniFC60" altNames="shaddafathaarabic" description="ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM" />
@@ -5004,11 +5050,20 @@
 	<glyph unicode="FE7E" name="sukun-ar.isol" category="Mark" subCategory="Spacing" script="arabic" production="uniFE7E" description="ARABIC SUKUN ISOLATED FORM" />
 	<glyph unicode="FE7F" name="sukun-ar.medi" category="Letter" script="arabic" production="uniFE7F" description="ARABIC SUKUN MEDIAL FORM" />
 	<glyph unicode="0653" name="madda-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0653" description="ARABIC MADDAH ABOVE" />
+	<glyph name="shaddaAlefabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni06510670" description="ARABIC Shadda Alefabove" />
+	<glyph name="shaddaDamma-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0651064F" description="ARABIC Shadda Damma" />
+	<glyph name="shaddaDammatan-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0651064C" description="ARABIC Shadda Dammatan" />
+	<glyph name="shaddaFatha-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0651064E" description="ARABIC Shadda Fatha" />
+	<glyph name="shaddaFathatan-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0651064B.1" description="ARABIC Shadda Fathatan" />
+	<glyph name="shaddaKasra-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni06510650" description="ARABIC Shadda Kasra" />
+	<glyph name="shaddaKasratan-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0651064D" description="ARABIC Shadda Kasratan" />
 	<glyph unicode="0658" name="noonghunnaabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0658" description="ARABIC MARK NOON GHUNNA" />
 	<glyph unicode="0657" name="dammainverted-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0657" description="ARABIC INVERTED DAMMA" />
 	<glyph unicode="0659" name="fathaHorizont-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni0659" description="ARABIC ZWARAKAY" />
 	<glyph unicode="065A" name="vabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni065A" description="ARABIC VOWEL SIGN SMALL V ABOVE" />
+	<glyph name="vbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC VOWEL SIGN SMALL V BELOW" />
 	<glyph unicode="065B" name="vinvertedabove-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni065B" description="ARABIC VOWEL SIGN INVERTED SMALL V ABOVE" />
+	<glyph name="vinvertedbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" description="ARABIC VOWEL SIGN INVERTED SMALL V BELOW" />
 	<glyph unicode="065C" name="dotvowelbelow-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni065C" description="ARABIC VOWEL SIGN DOT BELOW" />
 	<glyph unicode="065D" name="dammareversed-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni065D" description="ARABIC REVERSED DAMMA" />
 	<glyph unicode="065E" name="fathatwodots-ar" category="Mark" subCategory="Nonspacing" script="arabic" production="uni065E" description="ARABIC FATHA WITH TWO DOTS" />
@@ -8912,6 +8967,7 @@
 	<glyph unicode="337C" name="syouwaeraSquare" category="Symbol" script="han" production="uni337C" altNames="syouwaerasquare" description="SQUARE ERA NAME SYOUWA" />
 	<glyph unicode="337D" name="taisyoueraSquare" category="Symbol" script="han" production="uni337D" altNames="taisyouerasquare" description="SQUARE ERA NAME TAISYOU" />
 	<glyph unicode="337E" name="meizieraSquare" category="Symbol" script="han" production="uni337E" altNames="meizierasquare" description="SQUARE ERA NAME MEIZI" />
+	<glyph unicode="32FF" name="reiwaeraSquare" category="Symbol" script="han" production="uni32FF" description="SQUARE ERA NAME REIWA" />
 	<glyph unicode="337F" name="corporationSquare" category="Symbol" script="han" production="uni337F" altNames="corporationsquare" description="SQUARE CORPORATION" />
 	<glyph unicode="3380" name="paampsSquare" category="Symbol" script="han" production="uni3380" altNames="paampssquare" description="SQUARE PA AMPS" />
 	<glyph unicode="3381" name="naSquare" category="Symbol" script="han" production="uni3381" altNames="nasquare" description="SQUARE NA" />
@@ -9225,7 +9281,7 @@
 	<glyph unicode="FF62" name="cornerbracketleft.half" category="Punctuation" subCategory="Parenthesis" production="uniFF62" altNames="cornerbracketlefthalfwidth" description="HALFWIDTH LEFT CORNER BRACKET" />
 	<glyph unicode="FF63" name="cornerbracketright.half" category="Punctuation" subCategory="Parenthesis" production="uniFF63" altNames="cornerbracketrighthalfwidth" description="HALFWIDTH RIGHT CORNER BRACKET" />
 	<glyph unicode="FF64" name="comma-han.half" category="Punctuation" script="han" production="uniFF64" altNames="ideographiccommaleft" description="HALFWIDTH IDEOGRAPHIC COMMA" />
-	<glyph unicode="FF65" name="middledot-kata.half" category="Punctuation" script="kana" production="uniFF65" altNames="middledotkatakanahalfwidth" description="HALFWIDTH KATAKANA MIDDLE DOT" />
+	<glyph unicode="FF65" name="dot-kata.half" category="Punctuation" script="kana" production="uniFF65" altNames="middledotkatakanahalfwidth, middledot-kata.half" description="HALFWIDTH KATAKANA MIDDLE DOT" />
 	<glyph unicode="FF71" name="a-kata.half" category="Letter" script="kana" production="uniFF71" altNames="akatakanahalfwidth" description="HALFWIDTH KATAKANA LETTER A" />
 	<glyph unicode="FF67" name="asmall-kata.half" category="Letter" script="kana" production="uniFF67" altNames="asmallkatakanahalfwidth" description="HALFWIDTH KATAKANA LETTER SMALL A" />
 	<glyph unicode="FF72" name="i-kata.half" category="Letter" script="kana" production="uniFF72" altNames="ikatakanahalfwidth" description="HALFWIDTH KATAKANA LETTER I" />


Test patch:
diff --git a/tests/classes_test.py b/tests/classes_test.py
index 2a99959b..2312f9cc 100755
--- a/tests/classes_test.py
+++ b/tests/classes_test.py
@@ -302,7 +302,7 @@ class GSFontFromFileTest(GSObjectsTestCase):
     def test_glyphs(self):
         font = self.font
         self.assertGreaterEqual(len(list(font.glyphs)), 1)
-        by_index = font.glyphs[3]
+        by_index = font.glyphs[4]
         by_name = font.glyphs["adieresis"]
         by_unicode_char = font.glyphs["ä"]
         by_unicode_value = font.glyphs["00E4"]
diff --git a/tests/data/GlyphsUnitTestSans.glyphs b/tests/data/GlyphsUnitTestSans.glyphs
index ea73f5bb..e2cff4bc 100644
--- a/tests/data/GlyphsUnitTestSans.glyphs
+++ b/tests/data/GlyphsUnitTestSans.glyphs
@@ -515,6 +515,82 @@ width = 753;
 unicode = 00C4;
 },
 {
+glyphname = I;
+lastChange = "2020-05-29 10:39:58 +0000";
+layers = (
+{
+hints = (
+{
+horizontal = 1;
+origin = "{0, 0}";
+target = up;
+type = BottomGhost;
+}
+);
+layerId = "C4872ECA-A3A9-40AB-960A-1DB2202F16DE";
+paths = (
+{
+closed = 1;
+nodes = (
+"117 700 LINE",
+"100 700 LINE",
+"100 0 LINE",
+"117 0 LINE"
+);
+}
+);
+width = 217;
+},
+{
+hints = (
+{
+horizontal = 1;
+origin = "{0, 0}";
+target = up;
+type = BottomGhost;
+}
+);
+layerId = "3E7589AA-8194-470F-8E2F-13C1C581BE24";
+paths = (
+{
+closed = 1;
+nodes = (
+"167 700 LINE",
+"77 700 LINE",
+"77 0 LINE",
+"167 0 LINE"
+);
+}
+);
+width = 244;
+},
+{
+hints = (
+{
+horizontal = 1;
+origin = "{0, 0}";
+target = up;
+type = BottomGhost;
+}
+);
+layerId = "BFFFD157-90D3-4B85-B99D-9A2F366F03CA";
+paths = (
+{
+closed = 1;
+nodes = (
+"250 700 LINE",
+"30 700 LINE",
+"30 0 LINE",
+"250 0 LINE"
+);
+}
+);
+width = 280;
+}
+);
+unicode = "0049,0069";
+},
+{
 glyphname = a;
 lastChange = "2017-07-17 13:49:10 +0000";
 layers = (
diff --git a/tests/glyphdata_test.py b/tests/glyphdata_test.py
index bdc88e36..8ddf610e 100644
--- a/tests/glyphdata_test.py
+++ b/tests/glyphdata_test.py
@@ -80,7 +80,7 @@ class GlyphDataTest(unittest.TestCase):
         self.assertEqual(prod("brevecomb_acutecomb"), "uni03060301")
         self.assertEqual(prod("vaphalaa-malayalam"), "uni0D030D35.1")
         self.assertEqual(prod("onethird"), "uni2153")
-        self.assertEqual(prod("Jacute"), "uni00A40301")
+        self.assertEqual(prod("Jacute"), "uni004A0301")
 
     def test_unicode(self):
         def uni(n):