@@ -1537,31 +1537,17 @@ private static void parseFields(
15371537 }
15381538 }
15391539 if ((propInfo .property == UcdProperty .Math_Entity_Name
1540- || propInfo .property == UcdProperty .Math_Entity_Set )
1540+ || propInfo .property == UcdProperty .Math_Entity_Set
1541+ || propInfo .property == UcdProperty .Math_Class_Ex )
15411542 && indexUnicodeProperties .ucdVersion .compareTo (Utility .UTR25_REVISION_16 )
15421543 < 0 ) {
1543- merger = IndexUnicodeProperties . MULTIVALUED_JOINER ;
1544+ merger = new PropertyUtilities . RedundancyIgnoringMultivaluedJoiner () ;
15441545 }
15451546 if (propInfo .property == UcdProperty .Math_Descriptive_Comments
15461547 && indexUnicodeProperties .ucdVersion .compareTo (Utility .UTR25_REVISION_16 )
15471548 < 0 ) {
15481549 merger = new PropertyUtilities .NullIgnorer ();
15491550 }
1550- if (propInfo .property == UcdProperty .Math_Class_Ex
1551- && indexUnicodeProperties .ucdVersion .compareTo (Utility .UTR25_REVISION_16 )
1552- < 0 ) {
1553- merger = new PropertyUtilities .RedundancyIgnorer ();
1554- }
1555- if (propInfo .property == UcdProperty .Math_Class_Ex
1556- && indexUnicodeProperties .ucdVersion .compareTo (VersionInfo .UNICODE_6_0 ) < 0
1557- && (line .getRange ().start == 0x2020 || line .getRange ().start == 0x2021 )
1558- && line .getRange ().end == line .getRange ().start
1559- && value .equals ("N" )) {
1560- // MathClassEx-11 had conflicting assignments for these two characters. Instead
1561- // of making Math_Class multivalued, keep the one that stayed (R), and discard
1562- // the N.
1563- value = "R" ;
1564- }
15651551 if (propInfo .property == UcdProperty .Math_Class_Ex
15661552 && indexUnicodeProperties .ucdVersion .compareTo (VersionInfo .UNICODE_6_1 ) < 0
15671553 && value .isEmpty ()) {
@@ -1630,6 +1616,7 @@ private static void parseSimpleFieldFile(
16301616 propInfo .property , defaultValue , "hardcoded" , false , version );
16311617 }
16321618 }
1619+ Merge <String > merger = null ;
16331620 if (line .getParts ().length == 3 && propInfo .property == UcdProperty .Block ) {
16341621 // The old Blocks files had First; Last; Block.
16351622 IntRange range = new IntRange ();
@@ -1709,21 +1696,7 @@ private static void parseSimpleFieldFile(
17091696 continue ;
17101697 } else if (propInfo .property == UcdProperty .Math_Class
17111698 && version .compareTo (VersionInfo .UNICODE_6_0 ) < 0 ) {
1712- // MathClass-11 had conflicting assignments for these two characters. Instead
1713- // of making Math_Class multivalued, keep the one that stayed (R), and discard
1714- // the N.
1715- if ((line .getRange ().start == 0x2020 || line .getRange ().start == 0x2021 )
1716- && line .getRange ().start == line .getRange ().end
1717- && line .getParts ()[1 ].equals ("N" )) {
1718- continue ;
1719- }
1720- // MathClass-9 had the same problem for U+0021 ! as well.
1721- if (version .compareTo (VersionInfo .UNICODE_5_1 ) < 0
1722- && line .getRange ().start == 0x0021
1723- && line .getRange ().start == line .getRange ().end
1724- && line .getParts ()[1 ].equals ("P" )) {
1725- continue ;
1726- }
1699+ merger = new PropertyUtilities .RedundancyIgnoringMultivaluedJoiner ();
17271700 // MathClass-11 had a line without a value, 21EA..21F3;
17281701 if (line .getParts ()[1 ].isEmpty ()) {
17291702 line .getParts ()[1 ] = "None" ;
@@ -1739,7 +1712,7 @@ private static void parseSimpleFieldFile(
17391712 line .getMissingSet (),
17401713 line .getRange (),
17411714 line .getParts ()[1 ],
1742- null ,
1715+ merger ,
17431716 false ,
17441717 nextVersion );
17451718 } else {
0 commit comments