diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e5cd57..0810729 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,226 @@ The format is based on [Keep a Changelog], and this project adheres to Nothing! +## [1.10.0] + +### Added + +- Ǝ (U+018E LATIN CAPITAL LETTER REVERSED E) +- Ə (U+018F LATIN CAPITAL LETTER SCHWA) +- Ƒ (U+0191 LATIN CAPITAL LETTER F WITH HOOK) +- Ɯ (U+019C LATIN CAPITAL LETTER TURNED M) +- Ɲ (U+019D LATIN CAPITAL LETTER N WITH LEFT HOOK) +- ƞ (U+019E LATIN SMALL LETTER N WITH LONG RIGHT LEG) +- Ɵ (U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE) +- Ơ (U+01A0 LATIN CAPITAL LETTER O WITH HORN) +- ơ (U+01A1 LATIN SMALL LETTER O WITH HORN) +- Ƣ (U+01A2 LATIN CAPITAL LETTER OI) +- ƣ (U+01A3 LATIN SMALL LETTER OI) +- Ƥ (U+01A4 LATIN CAPITAL LETTER P WITH HOOK) +- ƥ (U+01A5 LATIN SMALL LETTER P WITH HOOK) +- Ʊ (U+01B1 LATIN CAPITAL LETTER UPSILON) +- Ʋ (U+01B2 LATIN CAPITAL LETTER V WITH HOOK) +- Ƴ (U+01B3 LATIN CAPITAL LETTER Y WITH HOOK) +- ƴ (U+01B4 LATIN SMALL LETTER Y WITH HOOK) +- Ƶ (U+01B5 LATIN CAPITAL LETTER Z WITH STROKE) +- ƶ (U+01B6 LATIN SMALL LETTER Z WITH STROKE) +- Ʒ (U+01B7 LATIN CAPITAL LETTER EZH) +- Ƹ (U+01B8 LATIN CAPITAL LETTER EZH REVERSED) +- ƹ (U+01B9 LATIN SMALL LETTER EZH REVERSED) +- ƺ (U+01BA LATIN SMALL LETTER EZH WITH TAIL) +- ƾ (U+01BE LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE) +- ǀ (U+01C0 LATIN LETTER DENTAL CLICK) +- ǁ (U+01C1 LATIN LETTER LATERAL CLICK) +- ǂ (U+01C2 LATIN LETTER ALVEOLAR CLICK) +- Ǽ (U+01FC LATIN CAPITAL LETTER AE WITH ACUTE) +- ǽ (U+01FD LATIN SMALL LETTER AE WITH ACUTE) +- Ǿ (U+01FE LATIN CAPITAL LETTER O WITH STROKE AND ACUTE) +- ǿ (U+01FF LATIN SMALL LETTER O WITH STROKE AND ACUTE) +- Ɂ (U+0241 LATIN CAPITAL LETTER GLOTTAL STOP) +- ɂ (U+0242 LATIN SMALL LETTER GLOTTAL STOP) +- ɐ (U+0250 LATIN SMALL LETTER TURNED A) +- ɑ (U+0251 LATIN SMALL LETTER ALPHA) +- ɒ (U+0252 LATIN SMALL LETTER TURNED ALPHA) +- ɓ (U+0253 LATIN SMALL LETTER B WITH HOOK) +- ɔ (U+0254 LATIN SMALL LETTER OPEN O) +- ɕ (U+0255 LATIN SMALL LETTER C WITH CURL) +- ɖ (U+0256 LATIN SMALL LETTER D WITH TAIL) +- ɗ (U+0257 LATIN SMALL LETTER D WITH HOOK) +- ɘ (U+0258 LATIN SMALL LETTER REVERSED E) +- ə (U+0259 LATIN SMALL LETTER SCHWA) +- ɚ (U+025A LATIN SMALL LETTER SCHWA WITH HOOK) +- ɛ (U+025B LATIN SMALL LETTER OPEN E) +- ɜ (U+025C LATIN SMALL LETTER REVERSED OPEN E) +- ɝ (U+025D LATIN SMALL LETTER REVERSED OPEN E WITH HOOK) +- ɞ (U+025E LATIN SMALL LETTER CLOSED REVERSED OPEN E) +- ɟ (U+025F LATIN SMALL LETTER DOTLESS J WITH STROKE) +- ɠ (U+0260 LATIN SMALL LETTER G WITH HOOK) +- ɡ (U+0261 LATIN SMALL LETTER SCRIPT G) +- ɢ (U+0262 LATIN LETTER SMALL CAPITAL G) +- ɣ (U+0263 LATIN SMALL LETTER GAMMA) +- ɤ (U+0264 LATIN SMALL LETTER RAMS HORN) +- ɥ (U+0265 LATIN SMALL LETTER TURNED H) +- ɦ (U+0266 LATIN SMALL LETTER H WITH HOOK) +- ɧ (U+0267 LATIN SMALL LETTER HENG WITH HOOK) +- ɨ (U+0268 LATIN SMALL LETTER I WITH STROKE) +- ɩ (U+0269 LATIN SMALL LETTER IOTA) +- ɪ (U+026A LATIN LETTER SMALL CAPITAL I) +- ɫ (U+026B LATIN SMALL LETTER L WITH MIDDLE TILDE) +- ɬ (U+026C LATIN SMALL LETTER L WITH BELT) +- ɭ (U+026D LATIN SMALL LETTER L WITH RETROFLEX HOOK) +- ɮ (U+026E LATIN SMALL LETTER LEZH) +- ɯ (U+026F LATIN SMALL LETTER TURNED M) +- ɰ (U+0270 LATIN SMALL LETTER TURNED M WITH LONG LEG) +- ɱ (U+0271 LATIN SMALL LETTER M WITH HOOK) +- ɲ (U+0272 LATIN SMALL LETTER N WITH LEFT HOOK) +- ɳ (U+0273 LATIN SMALL LETTER N WITH RETROFLEX HOOK) +- ɴ (U+0274 LATIN LETTER SMALL CAPITAL N) +- ɵ (U+0275 LATIN SMALL LETTER BARRED O) +- ɶ (U+0276 LATIN LETTER SMALL CAPITAL OE) +- ɷ (U+0277 LATIN SMALL LETTER CLOSED OMEGA) +- ɸ (U+0278 LATIN SMALL LETTER PHI) +- ɹ (U+0279 LATIN SMALL LETTER TURNED R) +- ɺ (U+027A LATIN SMALL LETTER TURNED R WITH LONG LEG) +- ɻ (U+027B LATIN SMALL LETTER TURNED R WITH HOOK) +- ɼ (U+027C LATIN SMALL LETTER R WITH LONG LEG) +- ɽ (U+027D LATIN SMALL LETTER R WITH TAIL) +- ɾ (U+027E LATIN SMALL LETTER R WITH FISHHOOK) +- ɿ (U+027F LATIN SMALL LETTER REVERSED R WITH FISHHOOK) +- ʀ (U+0280 LATIN LETTER SMALL CAPITAL R) +- ʁ (U+0281 LATIN LETTER SMALL CAPITAL INVERTED R) +- ʂ (U+0282 LATIN SMALL LETTER S WITH HOOK) +- ʃ (U+0283 LATIN SMALL LETTER ESH) +- ʄ (U+0284 LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK) +- ʅ (U+0285 LATIN SMALL LETTER SQUAT REVERSED ESH) +- ʆ (U+0286 LATIN SMALL LETTER ESH WITH CURL) +- ʇ (U+0287 LATIN SMALL LETTER TURNED T) +- ʈ (U+0288 LATIN SMALL LETTER T WITH RETROFLEX HOOK) +- ʉ (U+0289 LATIN SMALL LETTER U BAR) +- ʊ (U+028A LATIN SMALL LETTER UPSILON) +- ʋ (U+028B LATIN SMALL LETTER V WITH HOOK) +- ʌ (U+028C LATIN SMALL LETTER TURNED V) +- ʍ (U+028D LATIN SMALL LETTER TURNED W) +- ʎ (U+028E LATIN SMALL LETTER TURNED Y) +- ʏ (U+028F LATIN LETTER SMALL CAPITAL Y) +- ʐ (U+0290 LATIN SMALL LETTER Z WITH RETROFLEX HOOK) +- ʑ (U+0291 LATIN SMALL LETTER Z WITH CURL) +- ʒ (U+0292 LATIN SMALL LETTER EZH) +- ʓ (U+0293 LATIN SMALL LETTER EZH WITH CURL) +- ʔ (U+0294 LATIN LETTER GLOTTAL STOP) +- ʕ (U+0295 LATIN LETTER PHARYNGEAL VOICED FRICATIVE) +- ʖ (U+0296 LATIN LETTER INVERTED GLOTTAL STOP) +- ʗ (U+0297 LATIN LETTER STRETCHED C) +- ʘ (U+0298 LATIN LETTER BILABIAL CLICK) +- ʙ (U+0299 LATIN LETTER SMALL CAPITAL B) +- ʚ (U+029A LATIN SMALL LETTER CLOSED OPEN E) +- ʛ (U+029B LATIN LETTER SMALL CAPITAL G WITH HOOK) +- ʜ (U+029C LATIN LETTER SMALL CAPITAL H) +- ʝ (U+029D LATIN SMALL LETTER J WITH CROSSED-TAIL) +- ʞ (U+029E LATIN SMALL LETTER TURNED K) +- ʟ (U+029F LATIN LETTER SMALL CAPITAL L) +- ʠ (U+02A0 LATIN SMALL LETTER Q WITH HOOK) +- ʡ (U+02A1 LATIN LETTER GLOTTAL STOP WITH STROKE) +- ʢ (U+02A2 LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE) +- ʮ (U+02AE LATIN SMALL LETTER TURNED H WITH FISHHOOK) +- Ά (U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS) +- Έ (U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS) +- Ή (U+0389 GREEK CAPITAL LETTER ETA WITH TONOS) +- Ί (U+038A GREEK CAPITAL LETTER IOTA WITH TONOS) +- Ό (U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS) +- Ύ (U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS) +- Ώ (U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS) +- ΐ (U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS) +- έ (U+03AD GREEK SMALL LETTER EPSILON WITH TONOS) +- ή (U+03AE GREEK SMALL LETTER ETA WITH TONOS) +- ί (U+03AF GREEK SMALL LETTER IOTA WITH TONOS) +- ΰ (U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS) +- ϊ (U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA) +- ϋ (U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA) +- ό (U+03CC GREEK SMALL LETTER OMICRON WITH TONOS) +- ύ (U+03CD GREEK SMALL LETTER UPSILON WITH TONOS) +- ώ (U+03CE GREEK SMALL LETTER OMEGA WITH TONOS) +- ϕ (U+03D5 GREEK PHI SYMBOL) +- Ϛ (U+03DA GREEK LETTER STIGMA) +- ϛ (U+03DB GREEK SMALL LETTER STIGMA) +- Ϝ (U+03DC GREEK LETTER DIGAMMA) +- ϝ (U+03DD GREEK SMALL LETTER DIGAMMA) +- ϴ (U+03F4 GREEK CAPITAL THETA SYMBOL) +- Ϸ (U+03F7 GREEK CAPITAL LETTER SHO) +- ϸ (U+03F8 GREEK SMALL LETTER SHO) +- Ϲ (U+03F9 GREEK CAPITAL LUNATE SIGMA SYMBOL) +-  (U+E204) +-  (U+E21E) +-  (U+E256) +-  (U+E271) +-  (U+E28A) +-  (U+E28B) +-  (U+E5FC) +-  (U+E62A) +-  (U+E64E) +-  (U+E681) +-  (U+E70E) +-  (U+E71E) +-  (U+E749) +-  (U+E74A) +-  (U+E74E) +-  (U+E758) +-  (U+E759) +-  (U+E764) +-  (U+E781) +-  (U+E796) +-  (U+E7B5) +-  (U+E7C4) +-  (U+EFFA) +-  (U+EFFB) +-  (U+EFFC) +-  (U+EFFD) +-  (U+F016) +-  (U+F02C) +-  (U+F031) +-  (U+F032) +-  (U+F033) +-  (U+F034) +-  (U+F035) +-  (U+F03D) +-  (U+F067) +-  (U+F068) +-  (U+F069) +-  (U+F09E) +-  (U+F111) +-  (U+F121) +-  (U+F15B) +-  (U+F15C) +-  (U+F1C0) +-  (U+F1C1) +-  (U+F1C2) +-  (U+F1C3) +-  (U+F1C4) +-  (U+F1C5) +-  (U+F1C6) +-  (U+F298) +-  (U+F408) +-  (U+F410) +-  (U+F440) +-  (U+F462) +-  (U+F481) +-  (U+F482) +-  (U+F48A) +-  (U+F713) +-  (U+F718) +- 謹 (U+FABF CJK COMPATIBILITY IDEOGRAPH-FABF) +- ﵂ (U+FD42) + +### Changed + +- ò (U+00F2 LATIN SMALL LETTER O WITH GRAVE) +- ó (U+00F3 LATIN SMALL LETTER O WITH ACUTE) +- ô (U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX) +- õ (U+00F5 LATIN SMALL LETTER O WITH TILDE) +- ö (U+00F6 LATIN SMALL LETTER O WITH DIAERESIS) +- ō (U+014D LATIN SMALL LETTER O WITH MACRON) +- ŏ (U+014F LATIN SMALL LETTER O WITH BREVE) +- ő (U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE) + ## [1.9.3] ### Added @@ -536,6 +756,8 @@ Still broken on Windows. [Keep a Changelog]: https://keepachangelog.com/en/1.0.0/ [Semantic Versioning]: https://semver.org/spec/v2.0.0.html [unreleased]: https://github.com/slavfox/Cozette/compare/v.1.8.3...HEAD +[1.10.0]: https://github.com/slavfox/Cozette/compare/v.1.9.3...v.1.10.0 +[1.9.3]: https://github.com/slavfox/Cozette/compare/v.1.9.2...v.1.9.3 [1.9.2]: https://github.com/slavfox/Cozette/compare/v.1.9.0...v.1.9.2 [1.9.0]: https://github.com/slavfox/Cozette/compare/v.1.8.3...v.1.9.0 [1.8.3]: https://github.com/slavfox/Cozette/compare/v.1.8.2...v.1.8.3 diff --git a/Cozette/Cozette.sfd b/Cozette/Cozette.sfd index 3cb0efd..8aee580 100644 --- a/Cozette/Cozette.sfd +++ b/Cozette/Cozette.sfd @@ -4,7 +4,7 @@ FullName: Cozette FamilyName: Cozette Weight: Medium Copyright: (c) 2020 Slavfox -Version: 1.093 +Version: 1.100 ItalicAngle: 0 UnderlinePosition: -100 UnderlineWidth: 50 @@ -22,7 +22,7 @@ OS2Version: 1 OS2_WeightWidthSlopeOnly: 0 OS2_UseTypoMetrics: 0 CreationTime: -2082812035 -ModificationTime: 1623462779 +ModificationTime: 1623526037 PfmFamily: 49 TTFWeight: 500 TTFWidth: 5 @@ -11889,66 +11889,77 @@ EndChar StartChar: uniE21E Encoding: 57886 57886 1686 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniE256 Encoding: 57942 57942 1687 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniE781 Encoding: 59265 59265 1688 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniE74E Encoding: 59214 59214 1689 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniE70E Encoding: 59150 59150 1690 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniE749 Encoding: 59209 59209 1691 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniE74A Encoding: 59210 59210 1692 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniF718 Encoding: 63256 63256 1693 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniF713 Encoding: 63251 63251 1694 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniE758 Encoding: 59224 59224 1695 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniE759 Encoding: 59225 59225 1696 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -11969,12 +11980,14 @@ EndChar StartChar: uniE64E Encoding: 58958 58958 1699 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniE681 Encoding: 59009 59009 1700 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12030,6 +12043,7 @@ EndChar StartChar: uniF298 Encoding: 62104 62104 1708 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12043,12 +12057,14 @@ EndChar StartChar: uniE28B Encoding: 57995 57995 1710 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniE28A Encoding: 57994 57994 1711 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12062,24 +12078,28 @@ EndChar StartChar: uniE5FC Encoding: 58876 58876 1713 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniF408 Encoding: 62472 62472 1714 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniF121 Encoding: 61729 61729 1715 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniE62A Encoding: 58922 58922 1716 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12198,6 +12218,7 @@ EndChar StartChar: uni0261 Encoding: 609 609 1733 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12225,6 +12246,7 @@ EndChar StartChar: uni0265 Encoding: 613 613 1737 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12245,24 +12267,28 @@ EndChar StartChar: uni0241 Encoding: 577 577 1740 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni0242 Encoding: 578 578 1741 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni0253 Encoding: 595 595 1742 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni026F Encoding: 623 623 1743 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12472,18 +12498,21 @@ EndChar StartChar: uni0293 Encoding: 659 659 1773 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni0294 Encoding: 660 660 1774 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni0295 Encoding: 661 661 1775 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12560,12 +12589,14 @@ EndChar StartChar: uni0268 Encoding: 616 616 1786 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni0269 Encoding: 617 617 1787 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12600,12 +12631,14 @@ EndChar StartChar: uni02AE Encoding: 686 686 1792 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni0286 Encoding: 646 646 1793 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12633,6 +12666,7 @@ EndChar StartChar: uni0284 Encoding: 644 644 1797 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12646,12 +12680,14 @@ EndChar StartChar: uni0298 Encoding: 664 664 1799 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni02A1 Encoding: 673 673 1800 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12700,6 +12736,7 @@ EndChar StartChar: upsilondieresis Encoding: 971 971 1807 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12797,30 +12834,35 @@ EndChar StartChar: uni03F4 Encoding: 1012 1012 1821 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni03F8 Encoding: 1016 1016 1822 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni03F7 Encoding: 1015 1015 1823 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni03F9 Encoding: 1017 1017 1824 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni03DB Encoding: 987 987 1825 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12834,6 +12876,7 @@ EndChar StartChar: uni03DC Encoding: 988 988 1827 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12903,6 +12946,7 @@ EndChar StartChar: uni019E Encoding: 414 414 1837 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12916,6 +12960,7 @@ EndChar StartChar: uni019F Encoding: 415 415 1839 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12936,6 +12981,7 @@ EndChar StartChar: uni01A2 Encoding: 418 418 1842 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -12991,12 +13037,14 @@ EndChar StartChar: uni01B5 Encoding: 437 437 1850 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uni01B6 Encoding: 438 438 1851 Width: 1024 +Flags: W LayerCount: 2 EndChar @@ -13052,22 +13100,25 @@ EndChar StartChar: uni01BE Encoding: 446 446 1859 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniF48A Encoding: 62602 62602 1860 Width: 1024 +Flags: W LayerCount: 2 EndChar StartChar: uniFABF Encoding: 64191 64191 1861 Width: 1024 +Flags: W LayerCount: 2 EndChar EndChars -BitmapFont: 13 1862 10 3 1 +BitmapFont: 13 1863 10 3 1 BDFStartProperties: 42 FONT 1 "-slavfox-Cozette-Medium-R-Normal--13-120-75-75-M-60-ISO10646-1" COMMENT 0 "(c) 2020 Slavfox" @@ -13089,7 +13140,7 @@ FONTNAME_REGISTRY 16 "" FONT_NAME 16 "Cozette" FACE_NAME 16 "Cozette" COPYRIGHT 16 "(c) 2020 Slavfox" -FONT_VERSION 16 "1.093" +FONT_VERSION 16 "1.100" FONT_ASCENT 18 10 FONT_DESCENT 18 3 UNDERLINE_POSITION 18 -19 diff --git a/Pipfile b/Pipfile index 5e34aef..1d55956 100644 --- a/Pipfile +++ b/Pipfile @@ -13,6 +13,7 @@ numpy = "*" Pillow = "*" fonttools = "*" crayons = "*" +gitpython = "*" [requires] python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock index 6364a4f..f24a735 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "fbc5bf15a267368c830aa098f5765fbd1a8b70feb242039f517a2550fd29f22d" + "sha256": "bc04ce2d2af88a7497bf675273f539988b4307f3db53f1c616fb54cc77e122d5" }, "pipfile-spec": 6, "requires": { @@ -21,50 +21,70 @@ "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==0.4.4" }, "crayons": { "hashes": [ - "sha256:50e5fa729d313e2c607ae8bf7b53bb487652e10bd8e7a1e08c4bc8bf62755ffc", - "sha256:8c9e4a3a607bc10e9a9140d496ecd16c6805088dd16c852c378f1f1d5db7aeb6" + "sha256:bd33b7547800f2cfbd26b38431f9e64b487a7de74a947b0fafc89b45a601813f", + "sha256:e73ad105c78935d71fe454dd4b85c5c437ba199294e7ffd3341842bc683654b1" ], "index": "pypi", - "version": "==0.3.0" + "version": "==0.4.0" }, "fonttools": { "hashes": [ - "sha256:0c16d5da7846a92aedcb448277d13d3b729f7de48a917768d97ebd0d17067d7f", - "sha256:bd93818f304b7f0d087e8ca9b5b3ed0819a68fb6c1a4763134a92bb046c2c31b" + "sha256:1a3938882505445e4cb9f47d0ec13b6401f003017c657d85f5b791d764714f16", + "sha256:df7fab667b039cd2a00a1fffcba73a32b2c630ef2a12ab7069ef6df5333f20c3" ], "index": "pypi", - "version": "==4.3.0" + "version": "==4.24.4" + }, + "gitdb": { + "hashes": [ + "sha256:6c4cc71933456991da20917998acbe6cf4fb41eeaab7d6d67fbc05ecd4c865b0", + "sha256:96bf5c08b157a666fec41129e6d327235284cca4c81e92109260f353ba138005" + ], + "markers": "python_version >= '3.4'", + "version": "==4.0.7" + }, + "gitpython": { + "hashes": [ + "sha256:29fe82050709760081f588dd50ce83504feddbebdc4da6956d02351552b1c135", + "sha256:ee24bdc93dce357630764db659edaf6b8d664d4ff5447ccfeedd2dc5c253f41e" + ], + "index": "pypi", + "version": "==3.1.17" }, "numpy": { "hashes": [ - "sha256:1786a08236f2c92ae0e70423c45e1e62788ed33028f94ca99c4df03f5be6b3c6", - "sha256:17aa7a81fe7599a10f2b7d95856dc5cf84a4eefa45bc96123cbbc3ebc568994e", - "sha256:20b26aaa5b3da029942cdcce719b363dbe58696ad182aff0e5dcb1687ec946dc", - "sha256:2d75908ab3ced4223ccba595b48e538afa5ecc37405923d1fea6906d7c3a50bc", - "sha256:39d2c685af15d3ce682c99ce5925cc66efc824652e10990d2462dfe9b8918c6a", - "sha256:56bc8ded6fcd9adea90f65377438f9fea8c05fcf7c5ba766bef258d0da1554aa", - "sha256:590355aeade1a2eaba17617c19edccb7db8d78760175256e3cf94590a1a964f3", - "sha256:70a840a26f4e61defa7bdf811d7498a284ced303dfbc35acb7be12a39b2aa121", - "sha256:77c3bfe65d8560487052ad55c6998a04b654c2fbc36d546aef2b2e511e760971", - "sha256:9537eecf179f566fd1c160a2e912ca0b8e02d773af0a7a1120ad4f7507cd0d26", - "sha256:9acdf933c1fd263c513a2df3dceecea6f3ff4419d80bf238510976bf9bcb26cd", - "sha256:ae0975f42ab1f28364dcda3dde3cf6c1ddab3e1d4b2909da0cb0191fa9ca0480", - "sha256:b3af02ecc999c8003e538e60c89a2b37646b39b688d4e44d7373e11c2debabec", - "sha256:b6ff59cee96b454516e47e7721098e6ceebef435e3e21ac2d6c3b8b02628eb77", - "sha256:b765ed3930b92812aa698a455847141869ef755a87e099fddd4ccf9d81fffb57", - "sha256:c98c5ffd7d41611407a1103ae11c8b634ad6a43606eca3e2a5a269e5d6e8eb07", - "sha256:cf7eb6b1025d3e169989416b1adcd676624c2dbed9e3bcb7137f51bfc8cc2572", - "sha256:d92350c22b150c1cae7ebb0ee8b5670cc84848f6359cf6b5d8f86617098a9b73", - "sha256:e422c3152921cece8b6a2fb6b0b4d73b6579bd20ae075e7d15143e711f3ca2ca", - "sha256:e840f552a509e3380b0f0ec977e8124d0dc34dc0e68289ca28f4d7c1d0d79474", - "sha256:f3d0a94ad151870978fb93538e95411c83899c9dc63e6fb65542f769568ecfa5" + "sha256:1676b0a292dd3c99e49305a16d7a9f42a4ab60ec522eac0d3dd20cdf362ac010", + "sha256:16f221035e8bd19b9dc9a57159e38d2dd060b48e93e1d843c49cb370b0f415fd", + "sha256:43909c8bb289c382170e0282158a38cf306a8ad2ff6dfadc447e90f9961bef43", + "sha256:4e465afc3b96dbc80cf4a5273e5e2b1e3451286361b4af70ce1adb2984d392f9", + "sha256:55b745fca0a5ab738647d0e4db099bd0a23279c32b31a783ad2ccea729e632df", + "sha256:5d050e1e4bc9ddb8656d7b4f414557720ddcca23a5b88dd7cff65e847864c400", + "sha256:637d827248f447e63585ca3f4a7d2dfaa882e094df6cfa177cc9cf9cd6cdf6d2", + "sha256:6690080810f77485667bfbff4f69d717c3be25e5b11bb2073e76bb3f578d99b4", + "sha256:66fbc6fed94a13b9801fb70b96ff30605ab0a123e775a5e7a26938b717c5d71a", + "sha256:67d44acb72c31a97a3d5d33d103ab06d8ac20770e1c5ad81bdb3f0c086a56cf6", + "sha256:6ca2b85a5997dabc38301a22ee43c82adcb53ff660b89ee88dded6b33687e1d8", + "sha256:6e51534e78d14b4a009a062641f465cfaba4fdcb046c3ac0b1f61dd97c861b1b", + "sha256:70eb5808127284c4e5c9e836208e09d685a7978b6a216db85960b1a112eeace8", + "sha256:830b044f4e64a76ba71448fce6e604c0fc47a0e54d8f6467be23749ac2cbd2fb", + "sha256:8b7bb4b9280da3b2856cb1fc425932f46fba609819ee1c62256f61799e6a51d2", + "sha256:a9c65473ebc342715cb2d7926ff1e202c26376c0dcaaee85a1fd4b8d8c1d3b2f", + "sha256:c1c09247ccea742525bdb5f4b5ceeacb34f95731647fe55774aa36557dbb5fa4", + "sha256:c5bf0e132acf7557fc9bb8ded8b53bbbbea8892f3c9a1738205878ca9434206a", + "sha256:db250fd3e90117e0312b611574cd1b3f78bec046783195075cbd7ba9c3d73f16", + "sha256:e515c9a93aebe27166ec9593411c58494fa98e5fcc219e47260d9ab8a1cc7f9f", + "sha256:e55185e51b18d788e49fe8305fd73ef4470596b33fc2c1ceb304566b99c71a69", + "sha256:ea9cff01e75a956dbee133fa8e5b68f2f92175233de2f88de3a682dd94deda65", + "sha256:f1452578d0516283c87608a5a5548b0cdde15b99650efdfd85182102ef7a7c17", + "sha256:f39a995e47cb8649673cfa0579fbdd1cdd33ea497d1728a6cb194d6252268e48" ], "index": "pypi", - "version": "==1.18.1" + "version": "==1.20.3" }, "pillow": { "hashes": [ @@ -105,6 +125,14 @@ ], "index": "pypi", "version": "==8.2.0" + }, + "smmap": { + "hashes": [ + "sha256:7e65386bd122d45405ddf795637b7f7d2b532e7e401d46bbe3fb49b9986d5182", + "sha256:a9a7479e4c572e2e775c404dcd3080c8dc49f39918c2cf74913d30c4c478e3c2" + ], + "markers": "python_version >= '3.5'", + "version": "==4.0.0" } }, "develop": { @@ -115,55 +143,58 @@ ], "version": "==1.4.4" }, - "attrs": { - "hashes": [ - "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1", - "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb" - ], - "version": "==21.2.0" - }, "black": { "hashes": [ - "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b", - "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539" + "sha256:dc132348a88d103016726fe360cb9ede02cecf99b76e3660ce6c596be132ce04", + "sha256:dfb8c5a069012b2ab1e972e7b908f5fb42b6bbabcba0a788b86dc05067c7d9c7" ], "index": "pypi", - "version": "==19.10b0" + "version": "==21.6b0" }, "click": { "hashes": [ "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a", "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6" ], + "markers": "python_version >= '3.6'", "version": "==8.0.1" }, "isort": { "hashes": [ - "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1", - "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd" + "sha256:0a943902919f65c5684ac4e0154b1ad4fac6dcaa5d9f3426b732f1c8b5419be6", + "sha256:2bb1680aad211e3c9944dbce1d4ba09a989f04e238296c87fe2139faa26d655d" ], "index": "pypi", - "version": "==4.3.21" + "version": "==5.8.0" }, "mypy": { "hashes": [ - "sha256:0a9a45157e532da06fe56adcfef8a74629566b607fa2c1ac0122d1ff995c748a", - "sha256:2c35cae79ceb20d47facfad51f952df16c2ae9f45db6cb38405a3da1cf8fc0a7", - "sha256:4b9365ade157794cef9685791032521233729cb00ce76b0ddc78749abea463d2", - "sha256:53ea810ae3f83f9c9b452582261ea859828a9ed666f2e1ca840300b69322c474", - "sha256:634aef60b4ff0f650d3e59d4374626ca6153fcaff96ec075b215b568e6ee3cb0", - "sha256:7e396ce53cacd5596ff6d191b47ab0ea18f8e0ec04e15d69728d530e86d4c217", - "sha256:7eadc91af8270455e0d73565b8964da1642fe226665dd5c9560067cd64d56749", - "sha256:7f672d02fffcbace4db2b05369142e0506cdcde20cea0e07c7c2171c4fd11dd6", - "sha256:85baab8d74ec601e86134afe2bcccd87820f79d2f8d5798c889507d1088287bf", - "sha256:87c556fb85d709dacd4b4cb6167eecc5bbb4f0a9864b69136a0d4640fdc76a36", - "sha256:a6bd44efee4dc8c3324c13785a9dc3519b3ee3a92cada42d2b57762b7053b49b", - "sha256:c6d27bd20c3ba60d5b02f20bd28e20091d6286a699174dfad515636cb09b5a72", - "sha256:e2bb577d10d09a2d8822a042a23b8d62bc3b269667c9eb8e60a6edfa000211b1", - "sha256:f97a605d7c8bc2c6d1172c2f0d5a65b24142e11a58de689046e62c2d632ca8c1" + "sha256:0190fb77e93ce971954c9e54ea61de2802065174e5e990c9d4c1d0f54fbeeca2", + "sha256:0756529da2dd4d53d26096b7969ce0a47997123261a5432b48cc6848a2cb0bd4", + "sha256:2f9fedc1f186697fda191e634ac1d02f03d4c260212ccb018fabbb6d4b03eee8", + "sha256:353aac2ce41ddeaf7599f1c73fed2b75750bef3b44b6ad12985a991bc002a0da", + "sha256:3f12705eabdd274b98f676e3e5a89f247ea86dc1af48a2d5a2b080abac4e1243", + "sha256:4efc67b9b3e2fddbe395700f91d5b8deb5980bfaaccb77b306310bd0b9e002eb", + "sha256:517e7528d1be7e187a5db7f0a3e479747307c1b897d9706b1c662014faba3116", + "sha256:68a098c104ae2b75e946b107ef69dd8398d54cb52ad57580dfb9fc78f7f997f0", + "sha256:746e0b0101b8efec34902810047f26a8c80e1efbb4fc554956d848c05ef85d76", + "sha256:8be7bbd091886bde9fcafed8dd089a766fa76eb223135fe5c9e9798f78023a20", + "sha256:9236c21194fde5df1b4d8ebc2ef2c1f2a5dc7f18bcbea54274937cae2e20a01c", + "sha256:9ef5355eaaf7a23ab157c21a44c614365238a7bdb3552ec3b80c393697d974e1", + "sha256:9f1d74eeb3f58c7bd3f3f92b8f63cb1678466a55e2c4612bf36909105d0724ab", + "sha256:a26d0e53e90815c765f91966442775cf03b8a7514a4e960de7b5320208b07269", + "sha256:ae94c31bb556ddb2310e4f913b706696ccbd43c62d3331cd3511caef466871d2", + "sha256:b5ba1f0d5f9087e03bf5958c28d421a03a4c1ad260bf81556195dffeccd979c4", + "sha256:b5dfcd22c6bab08dfeded8d5b44bdcb68c6f1ab261861e35c470b89074f78a70", + "sha256:cd01c599cf9f897b6b6c6b5d8b182557fb7d99326bcdf5d449a0fbbb4ccee4b9", + "sha256:e89880168c67cf4fde4506b80ee42f1537ad66ad366c101d388b3fd7d7ce2afd", + "sha256:ebe2bc9cb638475f5d39068d2dbe8ae1d605bb8d8d3ff281c695df1670ab3987", + "sha256:f89bfda7f0f66b789792ab64ce0978e4a991a0e4dd6197349d0767b0f1095b21", + "sha256:fc4d63da57ef0e8cd4ab45131f3fe5c286ce7dd7f032650d0fbc239c6190e167", + "sha256:fd634bc17b1e2d6ce716f0e43446d0d61cdadb1efcad5c56ca211c22b246ebc8" ], "index": "pypi", - "version": "==0.761" + "version": "==0.902" }, "mypy-extensions": { "hashes": [ @@ -230,43 +261,9 @@ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" }, - "typed-ast": { - "hashes": [ - "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace", - "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff", - "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266", - "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528", - "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6", - "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808", - "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4", - "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363", - "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341", - "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04", - "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41", - "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e", - "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3", - "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899", - "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805", - "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c", - "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c", - "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39", - "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a", - "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3", - "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7", - "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f", - "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075", - "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0", - "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40", - "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428", - "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927", - "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3", - "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f", - "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65" - ], - "version": "==1.4.3" - }, "typing-extensions": { "hashes": [ "sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497", diff --git a/README.md b/README.md index ee587ce..1c50afe 100644 --- a/README.md +++ b/README.md @@ -172,13 +172,26 @@ have that, just clone this repo, open `Cozette/Cozette.sfd` in FontForge, and go to *File → Generate Fonts...*. To run the build scripts I use to prepare releases, first install Python 3.8 -and [pipenv]. Then, install the dependencies and run `build.py fonts`: +and [pipenv]. For generating the images, you will also need `xorg-mkfontscale` +and `xterm`. +Then, install the dependencies and run `build.py fonts`: ```console $ pipenv install $ pipenv run python3.8 build.py fonts ``` +Then install the generated fonts, and run +```console +$ pipenv run python3.8 build.py images +``` + +Running +```console +$ pipenv run python3.8 build.py changelog +``` +will output the changelog between your local version and the last tag. + # License Cozette is licensed [MIT] 💜 diff --git a/build.py b/build.py index f387047..115bdf8 100644 --- a/build.py +++ b/build.py @@ -22,6 +22,7 @@ print_codepoints_for_changelog, find_missing_codepoints, ) +from cozette_builder.changeloggen import get_changelog REPO_ROOT = Path(__file__).resolve().parent BUILD_DIR = REPO_ROOT / "build" @@ -132,6 +133,7 @@ def fix_ttf(ttfpath: Path): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest="action") images = subparsers.add_parser("images") + changelog = subparsers.add_parser("changelog") fonts = subparsers.add_parser("fonts") scan = subparsers.add_parser("scan") # noinspection PyTypeChecker @@ -176,5 +178,7 @@ def fix_ttf(ttfpath: Path): print(crayons.blue("Fixing TTF...")) fix_ttf(Path("cozette-tmp.ttf")) print(crayons.green("Done!", bold=True)) + elif args.action == "changelog": + get_changelog() else: parser.print_usage() diff --git a/cozette_builder/changeloggen.py b/cozette_builder/changeloggen.py new file mode 100644 index 0000000..c2b15a0 --- /dev/null +++ b/cozette_builder/changeloggen.py @@ -0,0 +1,68 @@ +from git import Repo +import re +from pathlib import Path +from unicodedata import name + +REPO_ROOT = Path(__file__).parent.parent +COZETTE_SFD = REPO_ROOT / "Cozette" / "Cozette.sfd" +repo = Repo(REPO_ROOT) +last_ver = repo.tags[-1] +last_cozette_sfd: str = ( + last_ver + .commit + .tree["Cozette/Cozette.sfd"] + .data_stream + .read().decode('utf-8') +) +char_regex = re.compile(r'BDFChar: (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+)') + +def get_codepoints(cozette_sfd: str): + codepoints = {} + current_codepoint = None + for line in cozette_sfd.splitlines(): + if current_codepoint: + codepoints[current_codepoint] = line + current_codepoint = None + elif match := char_regex.match(line): + current_codepoint = int(match.group(2)) + return codepoints + +def print_codepoint(codepoint): + try: + chrname = " " + name(chr(codepoint)) + except ValueError: + chrname = "" + print( + f"- {chr(codepoint)} (U+{codepoint:04X}{chrname})" + ) + + +def get_changelog(): + previous_codepoints = get_codepoints(last_cozette_sfd) + with COZETTE_SFD.open() as f: + current_codepoints = get_codepoints(f.read()) + + added = set(current_codepoints) - set(previous_codepoints) + removed = set(previous_codepoints) - set(current_codepoints) + changed = set() + for k, v in current_codepoints.items(): + if k in previous_codepoints and previous_codepoints[k] != v: + changed.add(k) + + if added: + print("### Added\n") + for codepoint in sorted(added): + print_codepoint(codepoint) + print("") + + if changed: + print("### Changed\n") + for codepoint in sorted(changed): + print_codepoint(codepoint) + print("") + + if removed: + print("### Removed\n") + for codepoint in sorted(removed): + print_codepoint(codepoint) + print("") \ No newline at end of file diff --git a/cozette_builder/imagegen.py b/cozette_builder/imagegen.py index da9470c..a5d3cc1 100644 --- a/cozette_builder/imagegen.py +++ b/cozette_builder/imagegen.py @@ -6,8 +6,6 @@ from unicodedata import east_asian_width as charwidth from PIL import Image, ImageOps # type: ignore -from cozette_builder.bdffont import BdfFont - Color = Tuple[int, int, int] @@ -90,7 +88,7 @@ def save_sample( fp = f.name cmd = quote( f"tput civis &&" - f"cat {fp} && sleep 0 && " + f"cat {fp} && sleep 0.1 && " f"import -window $WINDOWID {output_path}" ) subprocess.run( @@ -192,8 +190,8 @@ def stitch_charmap(files: List[Path], target: Path): for im in images: new_im.paste(im, (0, y)) y += im.height - for p in files: - p.unlink() + # for p in files: + # p.unlink() new_im.save(target) diff --git a/img/characters.png b/img/characters.png index 9603469..9bd0301 100644 Binary files a/img/characters.png and b/img/characters.png differ diff --git a/img/charmap.png b/img/charmap.png index ae572b4..7d79117 100644 Binary files a/img/charmap.png and b/img/charmap.png differ diff --git a/img/sample.png b/img/sample.png index 8359cd3..9603adc 100644 Binary files a/img/sample.png and b/img/sample.png differ