From dbf05262b14e4eb956cb65dfa2566fbf5703f1f6 Mon Sep 17 00:00:00 2001 From: Roozbeh Pournader Date: Mon, 27 Apr 2015 14:56:09 -0700 Subject: Add tests and requirements for the 'smcp' feature. --- res/smcp_requirements.txt | 210 ++++++++++++++++++++++++++++++++++++++++++ samples/smcp-feature-reqs.txt | 7 ++ scripts/common_tests.py | 27 ++++++ scripts/run_general_tests.py | 4 + 4 files changed, 248 insertions(+) create mode 100644 res/smcp_requirements.txt create mode 100644 samples/smcp-feature-reqs.txt diff --git a/res/smcp_requirements.txt b/res/smcp_requirements.txt new file mode 100644 index 0000000..08c8256 --- /dev/null +++ b/res/smcp_requirements.txt @@ -0,0 +1,210 @@ +0026 # AMPERSAND +0061 # LATIN SMALL LETTER A +0062 # LATIN SMALL LETTER B +0063 # LATIN SMALL LETTER C +0064 # LATIN SMALL LETTER D +0065 # LATIN SMALL LETTER E +0066 # LATIN SMALL LETTER F +0067 # LATIN SMALL LETTER G +0068 # LATIN SMALL LETTER H +0069 # LATIN SMALL LETTER I +006A # LATIN SMALL LETTER J +006B # LATIN SMALL LETTER K +006C # LATIN SMALL LETTER L +006D # LATIN SMALL LETTER M +006E # LATIN SMALL LETTER N +006F # LATIN SMALL LETTER O +0070 # LATIN SMALL LETTER P +0071 # LATIN SMALL LETTER Q +0072 # LATIN SMALL LETTER R +0073 # LATIN SMALL LETTER S +0074 # LATIN SMALL LETTER T +0075 # LATIN SMALL LETTER U +0076 # LATIN SMALL LETTER V +0077 # LATIN SMALL LETTER W +0078 # LATIN SMALL LETTER X +0079 # LATIN SMALL LETTER Y +007A # LATIN SMALL LETTER Z +00DF # LATIN SMALL LETTER SHARP S +00E0 # LATIN SMALL LETTER A WITH GRAVE +00E1 # LATIN SMALL LETTER A WITH ACUTE +00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX +00E3 # LATIN SMALL LETTER A WITH TILDE +00E4 # LATIN SMALL LETTER A WITH DIAERESIS +00E5 # LATIN SMALL LETTER A WITH RING ABOVE +00E6 # LATIN SMALL LETTER AE +00E7 # LATIN SMALL LETTER C WITH CEDILLA +00E8 # LATIN SMALL LETTER E WITH GRAVE +00E9 # LATIN SMALL LETTER E WITH ACUTE +00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX +00EB # LATIN SMALL LETTER E WITH DIAERESIS +00EC # LATIN SMALL LETTER I WITH GRAVE +00ED # LATIN SMALL LETTER I WITH ACUTE +00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX +00EF # LATIN SMALL LETTER I WITH DIAERESIS +00F0 # LATIN SMALL LETTER ETH +00F1 # LATIN SMALL LETTER N WITH TILDE +00F2 # LATIN SMALL LETTER O WITH GRAVE +00F3 # LATIN SMALL LETTER O WITH ACUTE +00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX +00F5 # LATIN SMALL LETTER O WITH TILDE +00F6 # LATIN SMALL LETTER O WITH DIAERESIS +00F8 # LATIN SMALL LETTER O WITH STROKE +00F9 # LATIN SMALL LETTER U WITH GRAVE +00FA # LATIN SMALL LETTER U WITH ACUTE +00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX +00FC # LATIN SMALL LETTER U WITH DIAERESIS +00FD # LATIN SMALL LETTER Y WITH ACUTE +00FE # LATIN SMALL LETTER THORN +00FF # LATIN SMALL LETTER Y WITH DIAERESIS +0101 # LATIN SMALL LETTER A WITH MACRON +0103 # LATIN SMALL LETTER A WITH BREVE +0105 # LATIN SMALL LETTER A WITH OGONEK +0107 # LATIN SMALL LETTER C WITH ACUTE +0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX +010B # LATIN SMALL LETTER C WITH DOT ABOVE +010D # LATIN SMALL LETTER C WITH CARON +010F # LATIN SMALL LETTER D WITH CARON +0111 # LATIN SMALL LETTER D WITH STROKE +0113 # LATIN SMALL LETTER E WITH MACRON +0115 # LATIN SMALL LETTER E WITH BREVE +0117 # LATIN SMALL LETTER E WITH DOT ABOVE +0119 # LATIN SMALL LETTER E WITH OGONEK +011B # LATIN SMALL LETTER E WITH CARON +011D # LATIN SMALL LETTER G WITH CIRCUMFLEX +011F # LATIN SMALL LETTER G WITH BREVE +0121 # LATIN SMALL LETTER G WITH DOT ABOVE +0123 # LATIN SMALL LETTER G WITH CEDILLA +0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX +0127 # LATIN SMALL LETTER H WITH STROKE +0129 # LATIN SMALL LETTER I WITH TILDE +012B # LATIN SMALL LETTER I WITH MACRON +012D # LATIN SMALL LETTER I WITH BREVE +012F # LATIN SMALL LETTER I WITH OGONEK +0131 # LATIN SMALL LETTER DOTLESS I +0133 # LATIN SMALL LIGATURE IJ +0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX +0137 # LATIN SMALL LETTER K WITH CEDILLA +013A # LATIN SMALL LETTER L WITH ACUTE +013C # LATIN SMALL LETTER L WITH CEDILLA +013E # LATIN SMALL LETTER L WITH CARON +0140 # LATIN SMALL LETTER L WITH MIDDLE DOT +0142 # LATIN SMALL LETTER L WITH STROKE +0144 # LATIN SMALL LETTER N WITH ACUTE +0146 # LATIN SMALL LETTER N WITH CEDILLA +0148 # LATIN SMALL LETTER N WITH CARON +014B # LATIN SMALL LETTER ENG +014D # LATIN SMALL LETTER O WITH MACRON +014F # LATIN SMALL LETTER O WITH BREVE +0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0153 # LATIN SMALL LIGATURE OE +0155 # LATIN SMALL LETTER R WITH ACUTE +0157 # LATIN SMALL LETTER R WITH CEDILLA +0159 # LATIN SMALL LETTER R WITH CARON +015B # LATIN SMALL LETTER S WITH ACUTE +015D # LATIN SMALL LETTER S WITH CIRCUMFLEX +015F # LATIN SMALL LETTER S WITH CEDILLA +0161 # LATIN SMALL LETTER S WITH CARON +0163 # LATIN SMALL LETTER T WITH CEDILLA +0165 # LATIN SMALL LETTER T WITH CARON +0167 # LATIN SMALL LETTER T WITH STROKE +0169 # LATIN SMALL LETTER U WITH TILDE +016B # LATIN SMALL LETTER U WITH MACRON +016D # LATIN SMALL LETTER U WITH BREVE +016F # LATIN SMALL LETTER U WITH RING ABOVE +0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0173 # LATIN SMALL LETTER U WITH OGONEK +0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX +0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX +017A # LATIN SMALL LETTER Z WITH ACUTE +017C # LATIN SMALL LETTER Z WITH DOT ABOVE +017E # LATIN SMALL LETTER Z WITH CARON +01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FD # LATIN SMALL LETTER AE WITH ACUTE +01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE +0219 # LATIN SMALL LETTER S WITH COMMA BELOW +03AC # GREEK SMALL LETTER ALPHA WITH TONOS +03AD # GREEK SMALL LETTER EPSILON WITH TONOS +03AE # GREEK SMALL LETTER ETA WITH TONOS +03AF # GREEK SMALL LETTER IOTA WITH TONOS +03B1 # GREEK SMALL LETTER ALPHA +03B2 # GREEK SMALL LETTER BETA +03B3 # GREEK SMALL LETTER GAMMA +03B4 # GREEK SMALL LETTER DELTA +03B5 # GREEK SMALL LETTER EPSILON +03B6 # GREEK SMALL LETTER ZETA +03B7 # GREEK SMALL LETTER ETA +03B8 # GREEK SMALL LETTER THETA +03B9 # GREEK SMALL LETTER IOTA +03BA # GREEK SMALL LETTER KAPPA +03BB # GREEK SMALL LETTER LAMDA +03BC # GREEK SMALL LETTER MU +03BD # GREEK SMALL LETTER NU +03BE # GREEK SMALL LETTER XI +03BF # GREEK SMALL LETTER OMICRON +03C0 # GREEK SMALL LETTER PI +03C1 # GREEK SMALL LETTER RHO +03C2 # GREEK SMALL LETTER FINAL SIGMA +03C3 # GREEK SMALL LETTER SIGMA +03C4 # GREEK SMALL LETTER TAU +03C5 # GREEK SMALL LETTER UPSILON +03C6 # GREEK SMALL LETTER PHI +03C7 # GREEK SMALL LETTER CHI +03C8 # GREEK SMALL LETTER PSI +03C9 # GREEK SMALL LETTER OMEGA +03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA +03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA +03CC # GREEK SMALL LETTER OMICRON WITH TONOS +03CD # GREEK SMALL LETTER UPSILON WITH TONOS +03CE # GREEK SMALL LETTER OMEGA WITH TONOS +0430 # CYRILLIC SMALL LETTER A +0431 # CYRILLIC SMALL LETTER BE +0432 # CYRILLIC SMALL LETTER VE +0433 # CYRILLIC SMALL LETTER GHE +0434 # CYRILLIC SMALL LETTER DE +0435 # CYRILLIC SMALL LETTER IE +0436 # CYRILLIC SMALL LETTER ZHE +0437 # CYRILLIC SMALL LETTER ZE +0438 # CYRILLIC SMALL LETTER I +0439 # CYRILLIC SMALL LETTER SHORT I +043A # CYRILLIC SMALL LETTER KA +043B # CYRILLIC SMALL LETTER EL +043C # CYRILLIC SMALL LETTER EM +043D # CYRILLIC SMALL LETTER EN +043E # CYRILLIC SMALL LETTER O +043F # CYRILLIC SMALL LETTER PE +0440 # CYRILLIC SMALL LETTER ER +0441 # CYRILLIC SMALL LETTER ES +0442 # CYRILLIC SMALL LETTER TE +0443 # CYRILLIC SMALL LETTER U +0444 # CYRILLIC SMALL LETTER EF +0445 # CYRILLIC SMALL LETTER HA +0446 # CYRILLIC SMALL LETTER TSE +0447 # CYRILLIC SMALL LETTER CHE +0448 # CYRILLIC SMALL LETTER SHA +0449 # CYRILLIC SMALL LETTER SHCHA +044A # CYRILLIC SMALL LETTER HARD SIGN +044B # CYRILLIC SMALL LETTER YERU +044C # CYRILLIC SMALL LETTER SOFT SIGN +044D # CYRILLIC SMALL LETTER E +044E # CYRILLIC SMALL LETTER YU +044F # CYRILLIC SMALL LETTER YA +0451 # CYRILLIC SMALL LETTER IO +0452 # CYRILLIC SMALL LETTER DJE +0453 # CYRILLIC SMALL LETTER GJE +0454 # CYRILLIC SMALL LETTER UKRAINIAN IE +0455 # CYRILLIC SMALL LETTER DZE +0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +0457 # CYRILLIC SMALL LETTER YI +0458 # CYRILLIC SMALL LETTER JE +0459 # CYRILLIC SMALL LETTER LJE +045A # CYRILLIC SMALL LETTER NJE +045B # CYRILLIC SMALL LETTER TSHE +045C # CYRILLIC SMALL LETTER KJE +045E # CYRILLIC SMALL LETTER SHORT U +045F # CYRILLIC SMALL LETTER DZHE +0491 # CYRILLIC SMALL LETTER GHE WITH UPTURN +1E81 # LATIN SMALL LETTER W WITH GRAVE +1E83 # LATIN SMALL LETTER W WITH ACUTE +1E85 # LATIN SMALL LETTER W WITH DIAERESIS +1EF3 # LATIN SMALL LETTER Y WITH GRAVE diff --git a/samples/smcp-feature-reqs.txt b/samples/smcp-feature-reqs.txt new file mode 100644 index 0000000..397b773 --- /dev/null +++ b/samples/smcp-feature-reqs.txt @@ -0,0 +1,7 @@ +&abcdefghijklmnopqrstuvwxyz +ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ +āăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıijĵķĺļľŀł +ńņňŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżžǻǽǿș +άέήίαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ +абвгдежзийклмнопрстуфхцчшщъыьэюяёђѓєѕіїјљњћќўџґ +ẁẃẅỳ diff --git a/scripts/common_tests.py b/scripts/common_tests.py index 1b015b8..c0ba55a 100644 --- a/scripts/common_tests.py +++ b/scripts/common_tests.py @@ -255,6 +255,33 @@ class TestLigatures(FontTest): self.assertTrue(len(normal) == 2 and len(ligated) == 1) +class TestFeatures(FontTest): + """Tests typographic features.""" + + def setUp(self): + self.fontfiles, _ = self.loaded_fonts + + def test_smcp_coverage(self): + """Tests that smcp is supported for our required set.""" + with open('res/smcp_requirements.txt') as smcp_reqs_file: + smcp_reqs_lis = [] + for line in smcp_reqs_file.readlines(): + line = line[:line.index(' #')] + smcp_reqs_list.append(unichr(int(line, 16))) + + for fontfile in self.fontfiles: + chars_with_no_smcp = [] + for char in smcp_reqs_list: + normal = layout.get_glyphs(char, fontfile) + smcp = layout.get_glyphs(char, fontfile, '--features=smcp') + if normal == smcp: + chars_with_no_smcp.append(char) + self.assertEqual( + chars_with_no_smcp, [], + ("smcp feature is not applied to '%s'" % + u''.join(chars_with_no_smcp).encode('UTF-8'))) + + class TestVerticalMetrics(FontTest): """Test the vertical metrics of fonts.""" diff --git a/scripts/run_general_tests.py b/scripts/run_general_tests.py index 5dd4dc8..1a9e965 100755 --- a/scripts/run_general_tests.py +++ b/scripts/run_general_tests.py @@ -46,6 +46,10 @@ class TestLigatures(common_tests.TestLigatures): loaded_fonts = FONTS +class TestFeatures(common_tests.TestFeatures): + loaded_fonts = FONTS + + if __name__ == '__main__': unittest.main() -- cgit v1.2.3