Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New duplicate elimination algorithm. #20

Open
typesupply opened this issue Oct 5, 2016 · 0 comments
Open

New duplicate elimination algorithm. #20

typesupply opened this issue Oct 5, 2016 · 0 comments

Comments

@typesupply
Copy link
Owner

Consider adding this new approach to duplicate glyph elimination. It works well in conjunction with quantum randomization. The idea is not yet optimized, but it seems to work.

Code:

    lookup DuplicateReducer {
        @randomDuplicateSkip_A = [space uni2009 B C D E F G H I J K L M N O P Q R S T U V W X Y Z IJ a b c d e f g h i j k l m n o p q r s t u v w x y z ordfeminine ordmasculine zero one two three four five six seven eight nine exclam exclamdown question questiondown slash fraction at f_i f_l O_O zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.old one.old two.old three.old four.old five.old six.old seven.old eight.old nine.old zero.sub one.sub two.sub three.sub four.sub five.sub six.sub seven.sub eight.sub nine.sub zero.sup one.sup two.sup three.sup four.sup five.sup six.sup seven.sup eight.sup nine.sup zero.tab one.tab two.tab three.tab four.tab five.tab six.tab seven.tab eight.tab nine.tab zero.oldtab one.oldtab two.oldtab three.oldtab four.oldtab five.oldtab six.oldtab seven.oldtab eight.oldtab nine.oldtab A.swash B.swash C.swash D.swash E.swash F.swash G.swash H.swash I.swash J.swash K.swash L.swash M.swash N.swash O.swash P.swash Q.swash R.swash S.swash T.swash U.swash V.swash W.swash X.swash Y.swash Z.swash A.title B.title C.title D.title E.title F.title G.title H.title I.title J.title K.title L.title M.title N.title O.title P.title Q.title R.title S.title T.title U.title V.title W.title X.title Y.title Z.title A.random1 B.random1 C.random1 D.random1 E.random1 F.random1 G.random1 H.random1 I.random1 J.random1 K.random1 L.random1 M.random1 N.random1 O.random1 P.random1 Q.random1 R.random1 S.random1 T.random1 U.random1 V.random1 W.random1 X.random1 Y.random1 Z.random1 A.random2 B.random2 C.random2 D.random2 E.random2 F.random2 G.random2 H.random2 I.random2 J.random2 K.random2 L.random2 M.random2 N.random2 O.random2 P.random2 Q.random2 R.random2 S.random2 T.random2 U.random2 V.random2 W.random2 X.random2 Y.random2 Z.random2 J.alt J.scalt IJ.dutch at.uc exclamdown.uc questiondown.uc A.sc B.sc C.sc D.sc E.sc F.sc G.sc H.sc I.sc J.sc K.sc L.sc M.sc N.sc O.sc P.sc Q.sc R.sc S.sc T.sc U.sc V.sc W.sc X.sc Y.sc Z.sc zero.sc one.sc two.sc three.sc four.sc five.sc six.sc seven.sc eight.sc nine.sc];
        @randomDuplicateSkip_A.random1 = [space uni2009 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z IJ a b c d e f g h i j k l m n o p q r s t u v w x y z ordfeminine ordmasculine zero one two three four five six seven eight nine exclam exclamdown question questiondown slash fraction at f_i f_l O_O zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.old one.old two.old three.old four.old five.old six.old seven.old eight.old nine.old zero.sub one.sub two.sub three.sub four.sub five.sub six.sub seven.sub eight.sub nine.sub zero.sup one.sup two.sup three.sup four.sup five.sup six.sup seven.sup eight.sup nine.sup zero.tab one.tab two.tab three.tab four.tab five.tab six.tab seven.tab eight.tab nine.tab zero.oldtab one.oldtab two.oldtab three.oldtab four.oldtab five.oldtab six.oldtab seven.oldtab eight.oldtab nine.oldtab A.swash B.swash C.swash D.swash E.swash F.swash G.swash H.swash I.swash J.swash K.swash L.swash M.swash N.swash O.swash P.swash Q.swash R.swash S.swash T.swash U.swash V.swash W.swash X.swash Y.swash Z.swash A.title B.title C.title D.title E.title F.title G.title H.title I.title J.title K.title L.title M.title N.title O.title P.title Q.title R.title S.title T.title U.title V.title W.title X.title Y.title Z.title B.random1 C.random1 D.random1 E.random1 F.random1 G.random1 H.random1 I.random1 J.random1 K.random1 L.random1 M.random1 N.random1 O.random1 P.random1 Q.random1 R.random1 S.random1 T.random1 U.random1 V.random1 W.random1 X.random1 Y.random1 Z.random1 A.random2 B.random2 C.random2 D.random2 E.random2 F.random2 G.random2 H.random2 I.random2 J.random2 K.random2 L.random2 M.random2 N.random2 O.random2 P.random2 Q.random2 R.random2 S.random2 T.random2 U.random2 V.random2 W.random2 X.random2 Y.random2 Z.random2 J.alt J.scalt IJ.dutch at.uc exclamdown.uc questiondown.uc A.sc B.sc C.sc D.sc E.sc F.sc G.sc H.sc I.sc J.sc K.sc L.sc M.sc N.sc O.sc P.sc Q.sc R.sc S.sc T.sc U.sc V.sc W.sc X.sc Y.sc Z.sc zero.sc one.sc two.sc three.sc four.sc five.sc six.sc seven.sc eight.sc nine.sc];
        @randomDuplicateSkip_A.random2 = [space uni2009 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z IJ a b c d e f g h i j k l m n o p q r s t u v w x y z ordfeminine ordmasculine zero one two three four five six seven eight nine exclam exclamdown question questiondown slash fraction at f_i f_l O_O zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.old one.old two.old three.old four.old five.old six.old seven.old eight.old nine.old zero.sub one.sub two.sub three.sub four.sub five.sub six.sub seven.sub eight.sub nine.sub zero.sup one.sup two.sup three.sup four.sup five.sup six.sup seven.sup eight.sup nine.sup zero.tab one.tab two.tab three.tab four.tab five.tab six.tab seven.tab eight.tab nine.tab zero.oldtab one.oldtab two.oldtab three.oldtab four.oldtab five.oldtab six.oldtab seven.oldtab eight.oldtab nine.oldtab A.swash B.swash C.swash D.swash E.swash F.swash G.swash H.swash I.swash J.swash K.swash L.swash M.swash N.swash O.swash P.swash Q.swash R.swash S.swash T.swash U.swash V.swash W.swash X.swash Y.swash Z.swash A.title B.title C.title D.title E.title F.title G.title H.title I.title J.title K.title L.title M.title N.title O.title P.title Q.title R.title S.title T.title U.title V.title W.title X.title Y.title Z.title A.random1 B.random1 C.random1 D.random1 E.random1 F.random1 G.random1 H.random1 I.random1 J.random1 K.random1 L.random1 M.random1 N.random1 O.random1 P.random1 Q.random1 R.random1 S.random1 T.random1 U.random1 V.random1 W.random1 X.random1 Y.random1 Z.random1 B.random2 C.random2 D.random2 E.random2 F.random2 G.random2 H.random2 I.random2 J.random2 K.random2 L.random2 M.random2 N.random2 O.random2 P.random2 Q.random2 R.random2 S.random2 T.random2 U.random2 V.random2 W.random2 X.random2 Y.random2 Z.random2 J.alt J.scalt IJ.dutch at.uc exclamdown.uc questiondown.uc A.sc B.sc C.sc D.sc E.sc F.sc G.sc H.sc I.sc J.sc K.sc L.sc M.sc N.sc O.sc P.sc Q.sc R.sc S.sc T.sc U.sc V.sc W.sc X.sc Y.sc Z.sc zero.sc one.sc two.sc three.sc four.sc five.sc six.sc seven.sc eight.sc nine.sc];

        sub A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A A' by A.random1;
        sub A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 A.random1' by A.random2;
        sub A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 A.random2' by A;
        sub A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A A' by A.random1;
        sub A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 A.random1' by A.random2;
        sub A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 A.random2' by A;
        sub A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A A' by A.random1;
        sub A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 A.random1' by A.random2;
        sub A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 A.random2' by A;
        sub A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A A' by A.random1;
        sub A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 A.random1' by A.random2;
        sub A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 A.random2' by A;
        sub A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A A' by A.random1;
        sub A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 A.random1' by A.random2;
        sub A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 A.random2' by A;
        sub A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A A' by A.random1;
        sub A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 A.random1' by A.random2;
        sub A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 A.random2' by A;
        sub A @randomDuplicateSkip_A @randomDuplicateSkip_A @randomDuplicateSkip_A A' by A.random1;
        sub A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 A.random1' by A.random2;
        sub A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 A.random2' by A;
        sub A @randomDuplicateSkip_A @randomDuplicateSkip_A A' by A.random1;
        sub A.random1 @randomDuplicateSkip_A.random1 @randomDuplicateSkip_A.random1 A.random1' by A.random2;
        sub A.random2 @randomDuplicateSkip_A.random2 @randomDuplicateSkip_A.random2 A.random2' by A;
        sub A @randomDuplicateSkip_A A' by A.random1;
        sub A.random1 @randomDuplicateSkip_A.random1 A.random1' by A.random2;
        sub A.random2 @randomDuplicateSkip_A.random2 A.random2' by A;
        sub A A' by A.random1;
        sub A.random1 A.random1' by A.random2;
        sub A.random2 A.random2' by A;

        @randomDuplicateSkip_B = [space uni2009 A C D E F G H I J K L M N O P Q R S T U V W X Y Z IJ a b c d e f g h i j k l m n o p q r s t u v w x y z ordfeminine ordmasculine zero one two three four five six seven eight nine exclam exclamdown question questiondown slash fraction at f_i f_l O_O zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.old one.old two.old three.old four.old five.old six.old seven.old eight.old nine.old zero.sub one.sub two.sub three.sub four.sub five.sub six.sub seven.sub eight.sub nine.sub zero.sup one.sup two.sup three.sup four.sup five.sup six.sup seven.sup eight.sup nine.sup zero.tab one.tab two.tab three.tab four.tab five.tab six.tab seven.tab eight.tab nine.tab zero.oldtab one.oldtab two.oldtab three.oldtab four.oldtab five.oldtab six.oldtab seven.oldtab eight.oldtab nine.oldtab A.swash B.swash C.swash D.swash E.swash F.swash G.swash H.swash I.swash J.swash K.swash L.swash M.swash N.swash O.swash P.swash Q.swash R.swash S.swash T.swash U.swash V.swash W.swash X.swash Y.swash Z.swash A.title B.title C.title D.title E.title F.title G.title H.title I.title J.title K.title L.title M.title N.title O.title P.title Q.title R.title S.title T.title U.title V.title W.title X.title Y.title Z.title A.random1 B.random1 C.random1 D.random1 E.random1 F.random1 G.random1 H.random1 I.random1 J.random1 K.random1 L.random1 M.random1 N.random1 O.random1 P.random1 Q.random1 R.random1 S.random1 T.random1 U.random1 V.random1 W.random1 X.random1 Y.random1 Z.random1 A.random2 B.random2 C.random2 D.random2 E.random2 F.random2 G.random2 H.random2 I.random2 J.random2 K.random2 L.random2 M.random2 N.random2 O.random2 P.random2 Q.random2 R.random2 S.random2 T.random2 U.random2 V.random2 W.random2 X.random2 Y.random2 Z.random2 J.alt J.scalt IJ.dutch at.uc exclamdown.uc questiondown.uc A.sc B.sc C.sc D.sc E.sc F.sc G.sc H.sc I.sc J.sc K.sc L.sc M.sc N.sc O.sc P.sc Q.sc R.sc S.sc T.sc U.sc V.sc W.sc X.sc Y.sc Z.sc zero.sc one.sc two.sc three.sc four.sc five.sc six.sc seven.sc eight.sc nine.sc];
        @randomDuplicateSkip_B.random1 = [space uni2009 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z IJ a b c d e f g h i j k l m n o p q r s t u v w x y z ordfeminine ordmasculine zero one two three four five six seven eight nine exclam exclamdown question questiondown slash fraction at f_i f_l O_O zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.old one.old two.old three.old four.old five.old six.old seven.old eight.old nine.old zero.sub one.sub two.sub three.sub four.sub five.sub six.sub seven.sub eight.sub nine.sub zero.sup one.sup two.sup three.sup four.sup five.sup six.sup seven.sup eight.sup nine.sup zero.tab one.tab two.tab three.tab four.tab five.tab six.tab seven.tab eight.tab nine.tab zero.oldtab one.oldtab two.oldtab three.oldtab four.oldtab five.oldtab six.oldtab seven.oldtab eight.oldtab nine.oldtab A.swash B.swash C.swash D.swash E.swash F.swash G.swash H.swash I.swash J.swash K.swash L.swash M.swash N.swash O.swash P.swash Q.swash R.swash S.swash T.swash U.swash V.swash W.swash X.swash Y.swash Z.swash A.title B.title C.title D.title E.title F.title G.title H.title I.title J.title K.title L.title M.title N.title O.title P.title Q.title R.title S.title T.title U.title V.title W.title X.title Y.title Z.title A.random1 C.random1 D.random1 E.random1 F.random1 G.random1 H.random1 I.random1 J.random1 K.random1 L.random1 M.random1 N.random1 O.random1 P.random1 Q.random1 R.random1 S.random1 T.random1 U.random1 V.random1 W.random1 X.random1 Y.random1 Z.random1 A.random2 B.random2 C.random2 D.random2 E.random2 F.random2 G.random2 H.random2 I.random2 J.random2 K.random2 L.random2 M.random2 N.random2 O.random2 P.random2 Q.random2 R.random2 S.random2 T.random2 U.random2 V.random2 W.random2 X.random2 Y.random2 Z.random2 J.alt J.scalt IJ.dutch at.uc exclamdown.uc questiondown.uc A.sc B.sc C.sc D.sc E.sc F.sc G.sc H.sc I.sc J.sc K.sc L.sc M.sc N.sc O.sc P.sc Q.sc R.sc S.sc T.sc U.sc V.sc W.sc X.sc Y.sc Z.sc zero.sc one.sc two.sc three.sc four.sc five.sc six.sc seven.sc eight.sc nine.sc];
        @randomDuplicateSkip_B.random2 = [space uni2009 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z IJ a b c d e f g h i j k l m n o p q r s t u v w x y z ordfeminine ordmasculine zero one two three four five six seven eight nine exclam exclamdown question questiondown slash fraction at f_i f_l O_O zero.den one.den two.den three.den four.den five.den six.den seven.den eight.den nine.den zero.num one.num two.num three.num four.num five.num six.num seven.num eight.num nine.num zero.old one.old two.old three.old four.old five.old six.old seven.old eight.old nine.old zero.sub one.sub two.sub three.sub four.sub five.sub six.sub seven.sub eight.sub nine.sub zero.sup one.sup two.sup three.sup four.sup five.sup six.sup seven.sup eight.sup nine.sup zero.tab one.tab two.tab three.tab four.tab five.tab six.tab seven.tab eight.tab nine.tab zero.oldtab one.oldtab two.oldtab three.oldtab four.oldtab five.oldtab six.oldtab seven.oldtab eight.oldtab nine.oldtab A.swash B.swash C.swash D.swash E.swash F.swash G.swash H.swash I.swash J.swash K.swash L.swash M.swash N.swash O.swash P.swash Q.swash R.swash S.swash T.swash U.swash V.swash W.swash X.swash Y.swash Z.swash A.title B.title C.title D.title E.title F.title G.title H.title I.title J.title K.title L.title M.title N.title O.title P.title Q.title R.title S.title T.title U.title V.title W.title X.title Y.title Z.title A.random1 B.random1 C.random1 D.random1 E.random1 F.random1 G.random1 H.random1 I.random1 J.random1 K.random1 L.random1 M.random1 N.random1 O.random1 P.random1 Q.random1 R.random1 S.random1 T.random1 U.random1 V.random1 W.random1 X.random1 Y.random1 Z.random1 A.random2 C.random2 D.random2 E.random2 F.random2 G.random2 H.random2 I.random2 J.random2 K.random2 L.random2 M.random2 N.random2 O.random2 P.random2 Q.random2 R.random2 S.random2 T.random2 U.random2 V.random2 W.random2 X.random2 Y.random2 Z.random2 J.alt J.scalt IJ.dutch at.uc exclamdown.uc questiondown.uc A.sc B.sc C.sc D.sc E.sc F.sc G.sc H.sc I.sc J.sc K.sc L.sc M.sc N.sc O.sc P.sc Q.sc R.sc S.sc T.sc U.sc V.sc W.sc X.sc Y.sc Z.sc zero.sc one.sc two.sc three.sc four.sc five.sc six.sc seven.sc eight.sc nine.sc];

        sub B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B B' by B.random1;
        sub B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 B.random1' by B.random2;
        sub B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 B.random2' by B;
        sub B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B B' by B.random1;
        sub B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 B.random1' by B.random2;
        sub B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 B.random2' by B;
        sub B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B B' by B.random1;
        sub B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 B.random1' by B.random2;
        sub B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 B.random2' by B;
        sub B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B B' by B.random1;
        sub B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 B.random1' by B.random2;
        sub B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 B.random2' by B;
        sub B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B B' by B.random1;
        sub B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 B.random1' by B.random2;
        sub B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 B.random2' by B;
        sub B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B B' by B.random1;
        sub B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 B.random1' by B.random2;
        sub B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 B.random2' by B;
        sub B @randomDuplicateSkip_B @randomDuplicateSkip_B @randomDuplicateSkip_B B' by B.random1;
        sub B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 B.random1' by B.random2;
        sub B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 B.random2' by B;
        sub B @randomDuplicateSkip_B @randomDuplicateSkip_B B' by B.random1;
        sub B.random1 @randomDuplicateSkip_B.random1 @randomDuplicateSkip_B.random1 B.random1' by B.random2;
        sub B.random2 @randomDuplicateSkip_B.random2 @randomDuplicateSkip_B.random2 B.random2' by B;
        sub B @randomDuplicateSkip_B B' by B.random1;
        sub B.random1 @randomDuplicateSkip_B.random1 B.random1' by B.random2;
        sub B.random2 @randomDuplicateSkip_B.random2 B.random2' by B;
        sub B B' by B.random1;
        sub B.random1 B.random1' by B.random2;
        sub B.random2 B.random2' by B;

        # etc.
    } DuplicateReducer;

Here's some gnarly Python code to generate this:

font = CurrentFont()

fullSkip = list(font.glyphOrder)

for name in font.glyphOrder:
    if name.endswith(".random1"):
        base = name.split(".")[0]
        r1 = base + ".random1"
        r2 = base + ".random2"

        for name in [base, r1, r2]:
            skip = list(fullSkip)
            skip.remove(name)
            skip = " ".join(skip)
            print "@randomDuplicateSkip_%s = [%s];" % (name, skip)
        print

        for i in reversed(range(10)):
            for t in [base, r1, r2]:
                if t == base:
                    next = r1
                elif t == r1:
                    next = r2
                elif t == r2:
                    next = base
                skip = " ".join(["@randomDuplicateSkip_%s" % t for j in range(i)])
                print "sub {target} {skip} {target}' by {next};".format(target=t, skip=skip, next=next).replace("  ", " ")

        print
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant