diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d8612b0..44019c7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,17 +20,22 @@ jobs: pacman -S --noconfirm base git tar which zip libffi jre17-openjdk wget - name: Install python run: | - pacman -S --noconfirm python python-pipenv python-setuptools + pacman -S --noconfirm python python-pip python-pipenv python-setuptools - name: Install fontforge run: pacman -S --noconfirm fontforge - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Build fonts run: | - pipenv --python /bin/python install; pipenv run python build.py fonts + pipenv --python /bin/python install + pipenv run python build.py fonts - name: Save version id: version run: | echo "version=${GITHUB_REF#refs/tags/}" | tr . - >> $GITHUB_OUTPUT + - name: Save commit message + id: msg + run: | + git show -s --format="msg=%s" >> $GITHUB_OUTPUT - name: Zip fonts run: | mv build CozetteFonts; cp ./LICENSE CozetteFonts/LICENSE; zip -r CozetteFonts-${{ steps.version.outputs.version }}.zip CozetteFonts @@ -38,4 +43,4 @@ jobs: with: artifacts: "CozetteFonts-${{ steps.version.outputs.version }}.zip,CozetteFonts/*" token: ${{ secrets.GITHUB_TOKEN }} - body: "See [CHANGELOG.md](https://github.com/slavfox/Cozette/blob/master/CHANGELOG.md)" + body: "${{ steps.msg.outputs.version }} See [CHANGELOG.md](https://github.com/slavfox/Cozette/blob/master/CHANGELOG.md)" diff --git a/CHANGELOG.md b/CHANGELOG.md index c3bba3c..e2703d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,90 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog], and this project adheres to [Semantic Versioning]. +## [1.24.0] + +The IPA update! + +### Added + +- fi (U+FB01 LATIN SMALL LIGATURE FI) +- ȡ (U+0221 LATIN SMALL LETTER D WITH CURL) +- ȴ (U+0234 LATIN SMALL LETTER L WITH CURL) +- ȵ (U+0235 LATIN SMALL LETTER N WITH CURL) +- ȶ (U+0236 LATIN SMALL LETTER T WITH CURL) +- ȸ (U+0238 LATIN SMALL LETTER DB DIGRAPH) +- ȹ (U+0239 LATIN SMALL LETTER QP DIGRAPH) +- ʣ (U+02A3 LATIN SMALL LETTER DZ DIGRAPH) +- ʤ (U+02A4 LATIN SMALL LETTER DEZH DIGRAPH) +- ʥ (U+02A5 LATIN SMALL LETTER DZ DIGRAPH WITH CURL) +- ʦ (U+02A6 LATIN SMALL LETTER TS DIGRAPH) +- ʧ (U+02A7 LATIN SMALL LETTER TESH DIGRAPH) +- ʨ (U+02A8 LATIN SMALL LETTER TC DIGRAPH WITH CURL) +- ʮ (U+02AE LATIN SMALL LETTER TURNED H WITH FISHHOOK) +- ʯ (U+02AF LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL) +- ʰ (U+02B0 MODIFIER LETTER SMALL H) +- ʱ (U+02B1 MODIFIER LETTER SMALL H WITH HOOK) +- ʲ (U+02B2 MODIFIER LETTER SMALL J) +- ʳ (U+02B3 MODIFIER LETTER SMALL R) +- ʴ (U+02B4 MODIFIER LETTER SMALL TURNED R) +- ʵ (U+02B5 MODIFIER LETTER SMALL TURNED R WITH HOOK) +- ʶ (U+02B6 MODIFIER LETTER SMALL CAPITAL INVERTED R) +- ʷ (U+02B7 MODIFIER LETTER SMALL W) +- ʾ (U+02BE MODIFIER LETTER RIGHT HALF RING) +- ʿ (U+02BF MODIFIER LETTER LEFT HALF RING) +- ˀ (U+02C0 MODIFIER LETTER GLOTTAL STOP) +- ˁ (U+02C1 MODIFIER LETTER REVERSED GLOTTAL STOP) +- ˞ (U+02DE MODIFIER LETTER RHOTIC HOOK) +- ˥ (U+02E5 MODIFIER LETTER EXTRA-HIGH TONE BAR) +- ˦ (U+02E6 MODIFIER LETTER HIGH TONE BAR) +- ˧ (U+02E7 MODIFIER LETTER MID TONE BAR) +- ˨ (U+02E8 MODIFIER LETTER LOW TONE BAR) +- ˩ (U+02E9 MODIFIER LETTER EXTRA-LOW TONE BAR) +- ̹ (U+0339 COMBINING RIGHT HALF RING BELOW) +- ͑ (U+0351 COMBINING LEFT HALF RING ABOVE) +- ͗ (U+0357 COMBINING RIGHT HALF RING ABOVE) +- ͜ (U+035C COMBINING DOUBLE BREVE BELOW) +- ͝ (U+035D COMBINING DOUBLE BREVE) +- ͡ (U+0361 COMBINING DOUBLE INVERTED BREVE) +- ᴀ (U+1D00 LATIN LETTER SMALL CAPITAL A) +- ᴇ (U+1D07 LATIN LETTER SMALL CAPITAL E) +- ᵊ (U+1D4A MODIFIER LETTER SMALL SCHWA) +- ᶑ (U+1D91 LATIN SMALL LETTER D WITH HOOK AND TAIL) +- ⱱ (U+2C71 LATIN SMALL LETTER V WITH RIGHT HOOK) +- ꭥ (U+AB65 GREEK LETTER SMALL CAPITAL OMEGA) + +### Changed + +- ɗ (U+0257 LATIN SMALL LETTER D WITH HOOK) +- ɟ (U+025F LATIN SMALL LETTER DOTLESS J WITH STROKE) +- ɠ (U+0260 LATIN SMALL LETTER G WITH HOOK) +- ɯ (U+026F LATIN SMALL LETTER TURNED M) +- ɰ (U+0270 LATIN SMALL LETTER TURNED M WITH LONG LEG) +- ɶ (U+0276 LATIN LETTER SMALL CAPITAL OE) +- ɷ (U+0277 LATIN SMALL LETTER CLOSED OMEGA) +- ʄ (U+0284 LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK) +- ʎ (U+028E LATIN SMALL LETTER TURNED Y) +- ʑ (U+0291 LATIN SMALL LETTER Z WITH CURL) +- ʛ (U+029B LATIN LETTER SMALL CAPITAL G WITH HOOK) +- ʠ (U+02A0 LATIN SMALL LETTER Q WITH HOOK) +- ʢ (U+02A2 LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE) +- ˂ (U+02C2 MODIFIER LETTER LEFT ARROWHEAD) +- ˃ (U+02C3 MODIFIER LETTER RIGHT ARROWHEAD) +- ˄ (U+02C4 MODIFIER LETTER UP ARROWHEAD) +- ˅ (U+02C5 MODIFIER LETTER DOWN ARROWHEAD) +- ː (U+02D0 MODIFIER LETTER TRIANGULAR COLON) +- ˑ (U+02D1 MODIFIER LETTER HALF TRIANGULAR COLON) +- ˠ (U+02E0 MODIFIER LETTER SMALL GAMMA) +- ˡ (U+02E1 MODIFIER LETTER SMALL L) +- ☰ (U+2630 TRIGRAM FOR HEAVEN) +- ☱ (U+2631 TRIGRAM FOR LAKE) +- ☲ (U+2632 TRIGRAM FOR FIRE) +- ☳ (U+2633 TRIGRAM FOR THUNDER) +- ☴ (U+2634 TRIGRAM FOR WIND) +- ☵ (U+2635 TRIGRAM FOR WATER) +- ☶ (U+2636 TRIGRAM FOR MOUNTAIN) +- ☷ (U+2637 TRIGRAM FOR EARTH) + ## [1.23.2] ### Added @@ -2458,8 +2542,9 @@ 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.23.2...HEAD -[1.23.1]: https://github.com/slavfox/Cozette/compare/v.1.23.1...v.1.23.2 +[unreleased]: https://github.com/slavfox/Cozette/compare/v.1.24.0...HEAD +[1.24.0]: https://github.com/slavfox/Cozette/compare/v.1.23.2...v.1.24.0 +[1.23.2]: https://github.com/slavfox/Cozette/compare/v.1.23.1...v.1.23.2 [1.23.1]: https://github.com/slavfox/Cozette/compare/v.1.23.0...v.1.23.1 [1.23.0]: https://github.com/slavfox/Cozette/compare/v.1.22.2...v.1.23.0 [1.22.2]: https://github.com/slavfox/Cozette/compare/v.1.22.1...v.1.22.2 diff --git a/Cozette/Cozette.sfd b/Cozette/Cozette.sfd index a081d26..f849fa0 100644 --- a/Cozette/Cozette.sfd +++ b/Cozette/Cozette.sfd @@ -3,8 +3,8 @@ FontName: Cozette FullName: Cozette FamilyName: Cozette Weight: Medium -Copyright: (c) 2020-2023 Slavfox -Version: 1.232 +Copyright: (c) 2020-2024 Slavfox +Version: 1.240 ItalicAngle: 0 UnderlinePosition: -100 UnderlineWidth: 50 @@ -22,7 +22,7 @@ OS2Version: 1 OS2_WeightWidthSlopeOnly: 0 OS2_UseTypoMetrics: 0 CreationTime: -2082812035 -ModificationTime: 1714234787 +ModificationTime: 1715153089 PfmFamily: 49 TTFWeight: 500 TTFWidth: 5 @@ -120,11 +120,11 @@ DisplaySize: 13 AntiAlias: 1 FitToEm: 0 WidthSeparation: 307 -WinInfo: 0 46 33 +WinInfo: 0 46 26 BeginPrivate: 0 EndPrivate TeXData: 1 0 0 524288 262144 174762 0 -1048576 174762 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144 -BeginChars: 1114112 3208 +BeginChars: 1114112 3209 StartChar: uni0000 Encoding: 0 0 0 @@ -28408,11 +28408,18 @@ Width: 1024 Flags: HW LayerCount: 2 EndChar + +StartChar: f_i +Encoding: 64257 64257 3208 +Width: 1024 +Flags: HW +LayerCount: 2 +EndChar EndChars -BitmapFont: 13 3208 10 3 1 +BitmapFont: 13 3209 10 3 1 BDFStartProperties: 42 FONT 1 "-slavfox-Cozette-Medium-R-Normal--13-120-75-75-M-60-ISO10646-1" -COMMENT 0 "(c) 2020-2023 Slavfox" +COMMENT 0 "(c) 2020-2024 Slavfox" FOUNDRY 16 "slavfox" FAMILY_NAME 16 "Cozette" WEIGHT_NAME 16 "Medium" @@ -28430,8 +28437,8 @@ CHARSET_ENCODING 16 "1" FONTNAME_REGISTRY 16 "" FONT_NAME 16 "Cozette" FACE_NAME 16 "Cozette" -COPYRIGHT 16 "(c) 2020-2023 Slavfox" -FONT_VERSION 16 "1.232" +COPYRIGHT 16 "(c) 2020-2024 Slavfox" +FONT_VERSION 16 "1.240" FONT_ASCENT 18 10 FONT_DESCENT 18 3 UNDERLINE_POSITION 18 -19 @@ -30467,22 +30474,22 @@ BDFChar: 1004 9654 6 1 5 -1 7 JAC+4q!d4WJ,fQL BDFChar: 1005 9664 6 1 5 -1 7 #T,OGpinb8#QOi) -BDFChar: 1006 9776 6 0 6 0 6 -rVurt!!)uu -BDFChar: 1007 9777 6 0 6 0 6 -mJm7d!!)uu -BDFChar: 1008 9778 6 0 6 0 6 -rVurd!!)uu -BDFChar: 1009 9779 6 0 6 0 6 -mJm7T!!)uu -BDFChar: 1010 9780 6 0 6 0 6 -rVurt!!)Ee -BDFChar: 1011 9781 6 0 6 0 6 -mJm7d!!)Ee -BDFChar: 1012 9782 6 0 6 0 6 -rVurd!!)Ee -BDFChar: 1013 9783 6 0 6 0 6 -mJm7T!!)Ee +BDFChar: 1006 9776 6 1 5 0 6 +p](= '3.8'", + "version": "==4.51.0" }, "gitdb": { "hashes": [ - "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a", - "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7" + "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4", + "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b" ], "markers": "python_version >= '3.7'", - "version": "==4.0.10" + "version": "==4.0.11" }, "gitpython": { "hashes": [ - "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573", - "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d" + "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c", + "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff" ], "index": "pypi", - "version": "==3.1.31" + "markers": "python_version >= '3.7'", + "version": "==3.1.43" }, "numpy": { "hashes": [ - "sha256:04847257662eef90599a1beca30c757d8e562aa8c7d64e91ea465f299469075d", - "sha256:06bae17a3629416eb5bae3a429655dc075561206b6d3c1ddfa38b51f273bae5c", - "sha256:1365157813810cfda2be9518806bf32f6b5f56e5e501d8299e3b681d53e405e2", - "sha256:165b0fb4d5b6349eef7b909be2d61a673bc6e75e0eec43776eea3222385a9d11", - "sha256:1bed69508b3b97dd3fb8c439352881c1bd232a0c8dd1e11d8df4e68046d434cf", - "sha256:20dd2352806eb229bc79c4fa308431eaf1721c66f7928950ee0381df98a2d269", - "sha256:224e8862a1cd357eede831b270b9e6c51d2cbc2bb5cc2e2b8d0c76d52cbd1edc", - "sha256:236c8ff573c02677b873e0934419c8e9873bd2b35aaba885170b7b43cb26d5da", - "sha256:416da35914d2fecc3afd31127b1eb1a283df33292cfcb453e1c8fb46d52611a1", - "sha256:472bdc3ade289d3efa331738b1daa5a529eef0550650f5d5d2eadb936a2f83a5", - "sha256:48e33b46b7db13de75dd0c1c919b8b297b5d7a4dc50b181066977ee17bed7cc3", - "sha256:5e7ba92ad63ffded03400d5038af89f7788843794c77ad1a37522fa69762b06f", - "sha256:7261d100c9bf722057fd5b9cd5b48f2973b17792b41e689eeaf9b55843cd1afd", - "sha256:763fca81a8d8beb6bf4b9a9bbf4045b0c134c15ea66c81d26e5b8683b1861293", - "sha256:7cf92c2bfbaf7bd52df1a21e56e8d34cff711594498ecbd02a39df3aaada763b", - "sha256:8aad2f86d2036622af1e1eb9db94e26618f42a571e02583fa72d5b1983782bf8", - "sha256:9a18d2c173a44e48e72614748df5624875439af2d352a416b9f3840583ad9efb", - "sha256:a0dab69ef25ccabf6f066a4902e238767cbbe52bc5ff90aa99514f87812ba76a", - "sha256:a4a9f1eaa63b5e35e23e5465ed59746b0a680eb5b5da06f2d432f828d32b26c1", - "sha256:b1a22ae597ee1d0e2336044854b33965fd92e731efe3c2ab965826e02cca2a8c", - "sha256:bd1de5d7ab75cdf56f2247aace7940dfd0a8fd048e07808358d8fca604f1d102", - "sha256:dfe2e3845c3b630f6617f9e8a15c8a1cbaf452c9fa32c71ec0a77d09548cd662", - "sha256:f59080829bbfe46660a201fc17315a4e8ec6e4499ee745bab3df61866f63e771", - "sha256:f64b730004e500f836f6405ad5cd36d309b6ac065366a0855860155f23eb2ad5", - "sha256:f8cbdb428d848f03a4f6f534284cf7fb168a6ec0e742357bf65ad268316906ea" + "sha256:00236e0e8a588fef8f70e0535b898bcebd97becc0b27686d2fc7cb35b5d1ab91", + "sha256:015df68fd97bc00e1b7719e80cea401b23a601b639c6d6545922f7a21876b771", + "sha256:060635ab843ea0e2aa6ad153d5656193014eedd90ec4ef6e2b738d81bfe28170", + "sha256:070a8b1c93b0bf21c1a3c51514145acbba612e9f3fd86870c1ca37a36cebbfce", + "sha256:08d7d73d5b7d97decfb6584f41492f5584f81a3147514b67ac21ccccb3418b35", + "sha256:09bedcb99b9ac5472d2e63cd18be861750acc7570ae3661be7cb6018ce376694", + "sha256:09e7a6cab5eac8aca0f17ad29b42ee1cd357e09a76076d5f4cb90ca62a0229b8", + "sha256:1860507cb082ee8d9920db806d74d8a3936081b9ecf274b0fdb6d99b664680a1", + "sha256:1e2478ca8b4b0c5a7146fc316c83843bc47b2d73cf6c02000561794ae5dba537", + "sha256:25d43c681fefb4d7e0ffa949097b20eacbad4be9af7c136b1f69dc4c34c1f6d4", + "sha256:2b5f87d88212e54263f64257b28daa04f3fde627c204abd7557a80b582de4a63", + "sha256:39a65e8c127d51419942a9e0ec467273536acd373507ce64e63451690ed47bfc", + "sha256:5be315e916e7d4d372acf62dcc86900eb47b2f76c185d835634dd0503f441e35", + "sha256:5c62c0d071681391b9c73ba09b35cb46477659012fd88af2c877a2a9da84aa2f", + "sha256:5e289dafe89a0dd756430fa03332c428c897c41cc3143230c38d7d2bb9ad475e", + "sha256:67f9707c3df26ca5bce34162fe0721646504c5961ccfca94c294fbeaf42cfa5b", + "sha256:684eef178a2039cba72bce740cdf2f592e67a41885a0f09d5622380fc59af0f8", + "sha256:6e0438e248b5e7e46e80a686868d36d6a4ce875cedce87122d1616ffd8e2a669", + "sha256:706f66648712385f5ca5e22ad4f32d1a1a93c143882969d951122b5cf9e40a24", + "sha256:7511694264a1219458a4e77d185a7ee350506b4e1e3b2b82845a5e9db044b6f5", + "sha256:7517f752cad3d8bf297ed6421c63be769a03b8e3c34282eec803bae693dae67a", + "sha256:7d990411f2821bf2812ec66ae85e8f351103fe7c3a229152ab6f8c9a620e82eb", + "sha256:8798ee3db69d2f531b12897929583021206feb4d45234d035e5511a5bd0cee38", + "sha256:8a7c01e9c14216e386e42a0c75c76a015a002dd5ed833ffbdaa6a7f2aeed9258", + "sha256:8b510bab996ad7b7fa59ca14fdaae4c68a36ff0f71ccd9ddec769b58f9d19258", + "sha256:9085f9a3e4f994ee8027db503627ae34aa867dc5f00ee7fe2b930608534a9293", + "sha256:91103edc14b5b70bc25af26ea5d75a45b6490bed5f1da9478f5bbe82542ba1b5", + "sha256:9d96878db0d4f267e62e21f6feb7d0e7f07ec02784e705f37b7f6493a935c7fd", + "sha256:9da7cddeaf312a3645325a7da3b18bfad345cae5005cb4d6fcf24796bedaf239", + "sha256:afa4679bcbade6a4197c27874c0dacf5d45470d56cee8b1e2398e80859ab797c", + "sha256:b1bfbde0e9221920d02735ced823e53be46786589a5e8db91824bccd5115e5c8", + "sha256:c0af260d6818eab709b65953e1e5ce31a34d68230f488589b4bb96b13a28d18f", + "sha256:cdea89bba67157bd8ec2ba9613d9f5ba2d18deab113171ca106953fdf8f7f314", + "sha256:cf1b08d8ee6d24576c0552dee71f36859de157481ed283e839d630b50242bbe1", + "sha256:cfd4e2f1605e3a607674dd3173c03b2e2f8520fa3ec2db04f2da2a3d5339df1b", + "sha256:d4b56e9abe2c3cec5615725320e002396c1e4b78011831a78427c7ff7b185816", + "sha256:d93d29d07b2da78869793ec30321adda61a5a48b9e00d12160d0cd658f5f2e0b", + "sha256:dfcd76a018c728ce7a3e6e09717e7a3dfbffdf87a57118dbc5ddc2167a678258", + "sha256:f0e169ec6cbc1b8e5f6a235845a80961f76f88352082213a1728a0967a761ad2", + "sha256:f36b7ccac6a3bfb342a61dd08be73fbe0286d2cb64c976bb1ed22feda0deb16f", + "sha256:f6539759d26e9b60dd9691732528dda7fe46a8c82be6294d109203dce4a8b89c", + "sha256:f9e566457284cb55447eab7566fad2b59e17f01776bb1b76828a6a931d111c72", + "sha256:fb009d69b3a362240acc5155e3de8f90311eb7f9f3958803af866945b8c9ee43", + "sha256:fbee730ae5265735e2c9b006a0d3fe1443d08d9399d0103245b99ecba10ddff0", + "sha256:fe19044006aeaf783c64f22ee03330caccb4d3e54fe605b57444f448954b022d" ], "index": "pypi", - "version": "==1.25.0rc1" + "markers": "python_version >= '3.9'", + "version": "==2.0.0rc1" }, "pillow": { "hashes": [ - "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1", - "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba", - "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a", - "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799", - "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51", - "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb", - "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5", - "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270", - "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6", - "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47", - "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf", - "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e", - "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b", - "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66", - "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865", - "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec", - "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c", - "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1", - "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38", - "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906", - "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705", - "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef", - "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc", - "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f", - "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf", - "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392", - "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d", - "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe", - "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32", - "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5", - "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7", - "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44", - "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d", - "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3", - "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625", - "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e", - "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829", - "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089", - "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3", - "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78", - "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96", - "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964", - "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597", - "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99", - "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a", - "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140", - "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7", - "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16", - "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903", - "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1", - "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296", - "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572", - "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115", - "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a", - "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd", - "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4", - "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1", - "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb", - "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa", - "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a", - "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569", - "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c", - "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf", - "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082", - "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062", - "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579" + "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c", + "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2", + "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb", + "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d", + "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa", + "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3", + "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1", + "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a", + "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd", + "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8", + "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999", + "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599", + "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936", + "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375", + "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d", + "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b", + "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60", + "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572", + "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3", + "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced", + "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f", + "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b", + "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19", + "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f", + "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d", + "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383", + "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795", + "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355", + "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57", + "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09", + "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b", + "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462", + "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf", + "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f", + "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a", + "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad", + "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9", + "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d", + "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45", + "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994", + "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d", + "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338", + "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463", + "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451", + "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591", + "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c", + "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd", + "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32", + "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9", + "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf", + "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5", + "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828", + "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3", + "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5", + "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2", + "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b", + "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2", + "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475", + "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3", + "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb", + "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef", + "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015", + "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002", + "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170", + "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84", + "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57", + "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f", + "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27", + "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a" ], "index": "pypi", - "version": "==9.5.0" + "markers": "python_version >= '3.8'", + "version": "==10.3.0" }, "pip": { "hashes": [ - "sha256:0e7c86f486935893c708287b30bd050a36ac827ec7fe5e43fe7cb198dd835fba", - "sha256:3ef6ac33239e4027d9a5598a381b9d30880a1477e50039db2eac6e8a8f6d1b18" + "sha256:752516cffafef5cf29d3fb2f06c978f27e98709654689cf277b2fce984c7a591", + "sha256:a9bd4c037d72325b4e903ec3f383263deea3eb73cd01db7a844edd026fc68afe" ], "index": "pypi", - "version": "==23.1.2" + "markers": "python_version >= '3.8'", + "version": "==24.1b1" }, "setuptools": { "hashes": [ - "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f", - "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102" + "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987", + "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32" ], "index": "pypi", - "version": "==67.8.0" + "markers": "python_version >= '3.8'", + "version": "==69.5.1" }, "smmap": { "hashes": [ - "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94", - "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936" + "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62", + "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da" ], - "markers": "python_version >= '3.6'", - "version": "==5.0.0" + "markers": "python_version >= '3.7'", + "version": "==5.0.1" } }, "develop": { "black": { "hashes": [ - "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5", - "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915", - "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326", - "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940", - "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b", - "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30", - "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c", - "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c", - "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab", - "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27", - "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2", - "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961", - "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9", - "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb", - "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70", - "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331", - "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2", - "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266", - "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d", - "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6", - "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b", - "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925", - "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8", - "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4", - "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3" + "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474", + "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1", + "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0", + "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8", + "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96", + "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1", + "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04", + "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021", + "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94", + "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d", + "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c", + "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7", + "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c", + "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc", + "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7", + "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d", + "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c", + "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741", + "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce", + "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb", + "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063", + "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e" ], "index": "pypi", - "version": "==23.3.0" + "markers": "python_version >= '3.8'", + "version": "==24.4.2" }, "click": { "hashes": [ - "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", - "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" + "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" ], "markers": "python_version >= '3.7'", - "version": "==8.1.3" + "version": "==8.1.7" }, "isort": { "hashes": [ @@ -230,39 +297,42 @@ "sha256:cde11e804641edbe1b6b95d56582eb541f27eebc77864c6015545944bb0e9c76" ], "index": "pypi", + "markers": "python_full_version >= '3.7.0'", "version": "==6.0.0b2" }, "mypy": { "hashes": [ - "sha256:1c4c42c60a8103ead4c1c060ac3cdd3ff01e18fddce6f1016e08939647a0e703", - "sha256:44797d031a41516fcf5cbfa652265bb994e53e51994c1bd649ffcd0c3a7eccbf", - "sha256:473117e310febe632ddf10e745a355714e771ffe534f06db40702775056614c4", - "sha256:4c99c3ecf223cf2952638da9cd82793d8f3c0c5fa8b6ae2b2d9ed1e1ff51ba85", - "sha256:550a8b3a19bb6589679a7c3c31f64312e7ff482a816c96e0cecec9ad3a7564dd", - "sha256:658fe7b674769a0770d4b26cb4d6f005e88a442fe82446f020be8e5f5efb2fae", - "sha256:6e33bb8b2613614a33dff70565f4c803f889ebd2f859466e42b46e1df76018dd", - "sha256:6e42d29e324cdda61daaec2336c42512e59c7c375340bd202efa1fe0f7b8f8ca", - "sha256:74bc9b6e0e79808bf8678d7678b2ae3736ea72d56eede3820bd3849823e7f305", - "sha256:76ec771e2342f1b558c36d49900dfe81d140361dd0d2df6cd71b3db1be155409", - "sha256:7d23370d2a6b7a71dc65d1266f9a34e4cde9e8e21511322415db4b26f46f6b8c", - "sha256:87df44954c31d86df96c8bd6e80dfcd773473e877ac6176a8e29898bfb3501cb", - "sha256:8c5979d0deb27e0f4479bee18ea0f83732a893e81b78e62e2dda3e7e518c92ee", - "sha256:95d8d31a7713510685b05fbb18d6ac287a56c8f6554d88c19e73f724a445448a", - "sha256:a22435632710a4fcf8acf86cbd0d69f68ac389a3892cb23fbad176d1cddaf228", - "sha256:a8763e72d5d9574d45ce5881962bc8e9046bf7b375b0abf031f3e6811732a897", - "sha256:c1eb485cea53f4f5284e5baf92902cd0088b24984f4209e25981cc359d64448d", - "sha256:c5d2cc54175bab47011b09688b418db71403aefad07cbcd62d44010543fc143f", - "sha256:cbc07246253b9e3d7d74c9ff948cd0fd7a71afcc2b77c7f0a59c26e9395cb152", - "sha256:d0b6c62206e04061e27009481cb0ec966f7d6172b5b936f3ead3d74f29fe3dcf", - "sha256:ddae0f39ca146972ff6bb4399f3b2943884a774b8771ea0a8f50e971f5ea5ba8", - "sha256:e1f4d16e296f5135624b34e8fb741eb0eadedca90862405b1f1fde2040b9bd11", - "sha256:e86c2c6852f62f8f2b24cb7a613ebe8e0c7dc1402c61d36a609174f63e0ff017", - "sha256:ebc95f8386314272bbc817026f8ce8f4f0d2ef7ae44f947c4664efac9adec929", - "sha256:f9dca1e257d4cc129517779226753dbefb4f2266c4eaad610fc15c6a7e14283e", - "sha256:faff86aa10c1aa4a10e1a301de160f3d8fc8703b88c7e98de46b531ff1276a9a" + "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061", + "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99", + "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de", + "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a", + "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9", + "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec", + "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1", + "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131", + "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f", + "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821", + "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5", + "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee", + "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e", + "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746", + "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2", + "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0", + "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b", + "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53", + "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30", + "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda", + "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051", + "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2", + "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7", + "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee", + "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727", + "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976", + "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4" ], "index": "pypi", - "version": "==1.3.0" + "markers": "python_version >= '3.8'", + "version": "==1.10.0" }, "mypy-extensions": { "hashes": [ @@ -274,35 +344,35 @@ }, "packaging": { "hashes": [ - "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", - "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" + "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", + "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9" ], "markers": "python_version >= '3.7'", - "version": "==23.1" + "version": "==24.0" }, "pathspec": { "hashes": [ - "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687", - "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293" + "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", + "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712" ], - "markers": "python_version >= '3.7'", - "version": "==0.11.1" + "markers": "python_version >= '3.8'", + "version": "==0.12.1" }, "platformdirs": { "hashes": [ - "sha256:0ade98a4895e87dc51d47151f7d2ec290365a585151d97b4d8d6312ed6132fed", - "sha256:e48fabd87db8f3a7df7150a4a5ea22c546ee8bc39bc2473244730d4b56d2cc4e" + "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf", + "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1" ], - "markers": "python_version >= '3.7'", - "version": "==3.5.3" + "markers": "python_version >= '3.8'", + "version": "==4.2.1" }, "typing-extensions": { "hashes": [ - "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26", - "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5" + "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", + "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" ], - "markers": "python_version >= '3.7'", - "version": "==4.6.3" + "markers": "python_version >= '3.8'", + "version": "==4.11.0" } } } diff --git a/README.md b/README.md index de154d6..eb884e8 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ A bitmap programming font optimized for coziness. +![Cozette in Nvim](./img/vim.png) + # Contents - [About Cozette](#about-cozette) @@ -177,9 +179,10 @@ implemented: - [x] Box-drawing (mostly) - [x] Braille - [x] Cyrillic! -- [x] APL Glyphs (based on the list from [APL386](https://abrudz.github.io/APL386/))! +- [x] IPA glyphs! +- [x] APL glyphs (based on the list from [APL386](https://abrudz.github.io/APL386/))! - [x] [Uiua](https://www.uiua.org/) glyphs! -- [x] [BQN](https://mlochbaum.github.io/BQN/fonts.html) Glyphs! +- [x] [BQN](https://mlochbaum.github.io/BQN/fonts.html) glyphs! - [ ] Nerdfonts: - [x] nf-pom-\* - [x] nf-seti-\* @@ -253,7 +256,14 @@ will output the changelog between your local version and the last tag. Massive thanks to [ym1234] for helping me figure out how to make the font tables behave nicely. -Thanks to [autumn], [cpkio], [yoshiyoshyosh], [klinegareth], and [dariof4] for contributing characters! +Cozette includes contributions from: + +- [autumn] +- [cpkio] +- [dariof4] +- [klinegareth] +- [sungodmoth] +- [yoshiyoshyosh] # License & Acknowledgements @@ -289,4 +299,5 @@ Cozette's builds use [bdfscale](https://github.com/philj56/bdfscale) by [philj56 [klinegareth]: https://github.com/klinegareth [dariof4]: https://github.com/dariof4 [laxul]: https://github.com/laxul +[sungodmoth]: https://github.com/sungodmoth [port]: https://cgit.freebsd.org/ports/tree/x11-fonts/cozette diff --git a/build.py b/build.py index e354332..e749b1b 100644 --- a/build.py +++ b/build.py @@ -106,11 +106,13 @@ def fix_ttf(ttfpath: Path, name: str): break with NamedTemporaryFile() as sfd: subprocess.run( - [f"fontforge -c '" - f"f = open(\"{ttfpath}\"); " - f"f.os2_version = 4; " - f"f.os2_weight_width_slope_only = True; " - f"f.save(\"{sfd.name}\")'"], + [ + f"fontforge -c '" + f'f = open("{ttfpath}"); ' + f"f.os2_version = 4; " + f"f.os2_weight_width_slope_only = True; " + f'f.save("{sfd.name}")\'' + ], cwd=BUILD_DIR, shell=True, check=True, diff --git a/cozette_builder/imagegen.py b/cozette_builder/imagegen.py index 13fbf3c..b81dcb8 100644 --- a/cozette_builder/imagegen.py +++ b/cozette_builder/imagegen.py @@ -3,7 +3,7 @@ from pathlib import Path from shlex import quote from typing import Dict, List, NamedTuple, Optional, Tuple -from unicodedata import east_asian_width as charwidth +from unicodedata import east_asian_width as charwidth, category from PIL import Image, ImageOps # type: ignore @@ -148,8 +148,10 @@ def make_charmap(sfd: Path) -> List[str]: for i in range(0, codepoints[-1] + 16, 16): line = "" for j in range(16): - if (cp := i + j) > 32 and cp not in (127,) and cp in codepoints: - ch = chr(i + j) + if (cp := i + j) in codepoints and not ( + category(chr(cp)).startswith(("Z", "Cc", "Cf")) + ): + ch = chr(cp) else: ch = " " # Workaround for combining characters @@ -179,12 +181,14 @@ def sfd_codepoints(sfd: Path) -> List[int]: def make_charlist_text(sfd: Path) -> str: text = "" for c in sfd_codepoints(sfd): - if c > 32 and c not in (127,): + if not (category(chr(c)).startswith(("Z", "Cc", "Cf"))): if 0x300 <= c < 0x370: text += f" {chr(c)} " else: ch = chr(c) text += ch if charwidth(ch) in "FW" else f"{ch} " + else: + print("Skipping", c, category(chr(c))) return text @@ -210,6 +214,8 @@ def save_charlist(fnt: str, sfd: Path, output_dir: Path): text = make_charlist_text(sfd) sample = wrap_text(text) sample = Sample(text, sample.width + 1, sample.height) + with (output_dir / "characters.txt").open("w") as f: + f.write(text) save_sample( fnt, sample, @@ -218,7 +224,6 @@ def save_charlist(fnt: str, sfd: Path, output_dir: Path): bgcolor="#ffffff", ) expand(output_dir / "characters.png", color="#ffffff") - print(sample.text) charmap = make_charmap(sfd) with (output_dir / "charmap.txt").open("w") as f: diff --git a/img/characters.png b/img/characters.png index 7d10c9b..63c38df 100644 Binary files a/img/characters.png and b/img/characters.png differ diff --git a/img/characters.txt b/img/characters.txt new file mode 100644 index 0000000..39c6223 --- /dev/null +++ b/img/characters.txt @@ -0,0 +1 @@ +! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 ij Ĵ ĵ Ķ ķ ĸ Ĺ ĺ Ļ ļ Ľ ľ Ŀ ŀ Ł ł Ń ń Ņ ņ Ň ň ʼn Ŋ ŋ Ō ō Ŏ ŏ Ő ő Œ œ Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ŝ ŝ Ş ş Š š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű Ų ų Ŵ ŵ Ŷ ŷ Ÿ Ź ź Ż ż Ž ž ſ ƀ Ɓ Ƃ ƃ Ƅ ƅ Ɔ Ƈ ƈ Ɖ Ɗ Ƌ ƌ ƍ Ǝ Ə Ɛ Ƒ ƒ Ɠ Ɣ ƕ Ɩ Ɨ Ƙ ƙ ƚ ƛ Ɯ Ɲ ƞ Ɵ Ơ ơ Ƣ ƣ Ƥ ƥ Ʀ Ƨ ƨ Ʃ ƪ ƫ Ƭ ƭ Ʈ Ư ư Ʊ Ʋ Ƴ ƴ Ƶ ƶ Ʒ Ƹ ƹ ƺ ƻ Ƽ ƽ ƾ ƿ ǀ ǁ ǂ ǃ Ǎ ǎ Ǐ ǐ Ǒ ǒ Ǔ ǔ Ǖ ǖ Ǘ ǘ Ǚ ǚ Ǜ ǜ ǝ Ǟ ǟ Ǡ ǡ Ǣ ǣ Ǥ ǥ Ǧ ǧ Ǩ ǩ Ǫ ǫ Ǭ ǭ Ǯ ǯ ǰ Ǵ ǵ Ƕ Ƿ Ǹ ǹ Ǻ ǻ Ǽ ǽ Ǿ ǿ Ȁ ȁ Ȃ ȃ Ȅ ȅ Ȇ ȇ Ȉ ȉ Ȋ ȋ Ȍ ȍ Ȏ ȏ Ȑ ȑ Ȓ ȓ Ȕ ȕ Ȗ ȗ Ș ș Ț ț Ȝ ȝ Ȟ ȟ Ƞ ȡ Ȥ ȥ Ȧ ȧ Ȩ ȩ ȫ ȭ Ȯ ȯ ȱ Ȳ ȳ ȴ ȵ ȶ ȸ ȹ Ɂ ɂ Ɇ ɇ ɐ ɑ ɒ ɓ ɔ ɕ ɖ ɗ ɘ ə ɚ ɛ ɜ ɝ ɞ ɟ ɠ ɡ ɢ ɣ ɤ ɥ ɦ ɧ ɨ ɩ ɪ ɫ ɬ ɭ ɮ ɯ ɰ ɱ ɲ ɳ ɴ ɵ ɶ ɷ ɸ ɹ ɺ ɻ ɼ ɽ ɾ ɿ ʀ ʁ ʂ ʃ ʄ ʅ ʆ ʇ ʈ ʉ ʊ ʋ ʌ ʍ ʎ ʏ ʐ ʑ ʒ ʓ ʔ ʕ ʖ ʗ ʘ ʙ ʚ ʛ ʜ ʝ ʞ ʟ ʠ ʡ ʢ ʣ ʤ ʥ ʦ ʧ ʨ ʮ ʯ ʰ ʱ ʲ ʳ ʴ ʵ ʶ ʷ ʹ ʺ ʻ ʼ ʽ ʾ ʿ ˀ ˁ ˂ ˃ ˄ ˅ ˆ ˇ ˈ ˉ ˊ ˋ ˌ ˍ ˎ ˏ ː ˑ ˒ ˓ ˔ ˕ ˖ ˗ ˘ ˙ ˚ ˛ ˜ ˝ ˞ ˟ ˠ ˡ ˢ ˣ ˤ ˥ ˦ ˧ ˨ ˩ ˬ ˭ ˯ ˰ ˱ ˲ ˳ ˴ ˵ ˶ ˷ ˹ ˺ ˻ ˼ ˽ ˾ ̀ ́ ̂ ̃ ̄ ̅ ̆ ̇ ̈ ̉ ̊ ̋ ̌ ̍ ̎ ̏ ̐ ̑ ̒ ̓ ̔ ̕ ̖ ̗ ̘ ̙ ̚ ̛ ̜ ̝ ̞ ̟ ̠ ̣ ̤ ̥ ̦ ̧ ̨ ̩ ̪ ̫ ̬ ̭ ̮ ̯ ̰ ̱ ̲ ̳ ̹ ̺ ̻ ̼ ̽ ̾ ̿ ̀ ́ ͂ ̓ ͆ ͇ ͈ ͑ ͗ ͜ ͝ ͡ Ά Έ Ή Ί Ό Ύ Ώ ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ ς σ τ υ φ χ ψ ω ϊ ϋ ό ύ ώ ϕ Ϛ ϛ Ϝ ϝ ϴ Ϸ ϸ Ϲ Ѐ Ё Ђ Ѓ Є Ѕ І Ї Ј Љ Њ Ћ Ќ Ѝ Ў Џ А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я ѐ ё ђ ѓ є ѕ і ї ј љ њ ћ ќ ѝ ў џ Ѡ ѡ Ѣ ѣ Ѥ ѥ Ѧ ѧ Ѩ ѩ Ѫ ѫ Ѭ ѭ Ѯ ѯ Ѱ ѱ Ѳ ѳ Ѵ ѵ Ѷ ѷ Ѹ ѹ Ѻ ѻ Ѽ ѽ Ѿ ѿ Ҁ ҁ ҂ Ҋ ҋ Ҍ ҍ Ҏ ҏ Ґ ґ Ғ ғ Ҕ ҕ Җ җ Ҙ ҙ Қ қ Ҝ ҝ Ҟ ҟ Ҡ ҡ Ң ң Ҥ ҥ Ҧ ҧ Ҩ ҩ Ҫ ҫ Ҭ ҭ Ү ү Ұ ұ Ҳ ҳ Ҵ ҵ Ҷ ҷ Ҹ ҹ Һ һ Ҽ ҽ Ҿ ҿ Ӏ Ӂ ӂ Ӄ ӄ Ӆ ӆ Ӈ ӈ Ӊ ӊ Ӌ ӌ Ӎ ӎ ӏ Ӑ ӑ Ӓ ӓ Ӕ ӕ Ӗ ӗ Ә ә Ӛ ӛ Ӝ ӝ Ӟ ӟ Ӡ ӡ Ӣ ӣ Ӥ ӥ Ӧ ӧ Ө ө Ӫ ӫ Ӭ ӭ Ӯ ӯ Ӱ ӱ Ӳ ӳ Ӵ ӵ Ӷ ӷ Ӹ ӹ Ӻ ӻ Ӽ ӽ Ӿ ӿ Ԁ ԁ Ԃ ԃ Ԅ ԅ Ԇ ԇ Ԉ ԉ Ԋ ԋ Ԍ ԍ Ԏ ԏ Ԑ ԑ Ԓ ԓ Ԕ ԕ Ԗ ԗ Ԙ ԙ Ԛ ԛ Ԝ ԝ Ԟ ԟ Ԡ ԡ Ԣ ԣ Ԥ ԥ Ԧ ԧ Ԩ ԩ Ԫ ԫ Ԭ ԭ Ԯ ԯ ಠ ᚠ ᚢ ᚣ ᚤ ᚥ ᚦ ᚨ ᚩ ᚪ ᚫ ᚬ ᴀ ᴇ ᴥ ᵊ ᶑ Ḁ ḁ Ḃ ḃ Ḅ ḅ Ḇ ḇ Ḉ ḉ Ḋ ḋ Ḍ ḍ Ḏ ḏ Ḑ ḑ Ḓ ḓ Ḕ ḕ Ḗ ḗ Ḙ ḙ Ḛ ḛ Ḝ ḝ Ḟ ḟ Ḡ ḡ Ḣ ḣ Ḥ ḥ Ḧ ḧ Ḩ ḩ Ḫ ḫ Ḭ ḭ Ḯ ḯ Ḱ ḱ Ḳ ḳ Ḵ ḵ Ḷ ḷ Ḹ ḹ Ḻ ḻ Ḽ ḽ Ḿ ḿ Ṁ ṁ Ṃ ṃ Ṅ ṅ Ṇ ṇ Ṉ ṉ Ṋ ṋ Ṍ ṍ Ṏ ṏ Ṑ ṑ Ṓ ṓ Ṕ ṕ Ṗ ṗ Ṙ ṙ Ṛ ṛ Ṝ ṝ Ṟ ṟ Ṡ ṡ Ṣ ṣ Ṥ ṥ Ṧ ṧ Ṩ ṩ Ṫ ṫ Ṭ ṭ Ṯ ṯ Ṱ ṱ Ṳ ṳ Ṵ ṵ Ṷ ṷ Ṹ ṹ Ṻ ṻ Ṽ ṽ Ṿ ṿ Ẁ ẁ Ẃ ẃ Ẅ ẅ Ẇ ẇ Ẉ ẉ Ẋ ẋ Ẍ ẍ Ẏ ẏ Ẑ ẑ Ẓ ẓ Ẕ ẕ ẖ ẗ ẘ ẙ ẚ ẛ ẜ ẝ ẞ ẟ Ạ ạ Ả ả Ấ ấ Ầ ầ Ẩ ẩ Ẫ ẫ Ậ ậ Ắ ắ Ằ ằ Ẳ ẳ Ẵ ẵ Ặ ặ Ẹ ẹ Ẻ ẻ Ẽ ẽ Ế ế Ề ề Ể ể Ễ ễ Ệ ệ Ỉ ỉ Ị ị Ọ ọ Ỏ ỏ Ố ố Ồ ồ Ổ ổ Ỗ ỗ Ộ ộ Ớ ớ Ờ ờ Ở ở Ỡ ỡ Ợ ợ Ụ ụ Ủ ủ Ứ ứ Ừ ừ Ử ử Ữ ữ Ự ự Ỳ ỳ Ỵ ỵ Ỷ ỷ Ỹ ỹ ἀ ἁ ἂ ἃ ἄ ἅ Ἀ Ἁ Ἂ Ἃ Ἄ Ἅ ἐ ἑ ἒ ἓ ἔ ἕ Ἐ Ἑ Ἒ Ἓ Ἔ Ἕ ἠ ἡ ἢ ἣ ἤ ἥ Ἠ Ἡ Ἢ Ἣ Ἤ Ἥ ἰ ἱ ἲ ἳ ἴ ἵ Ἰ Ἱ Ἲ Ἳ Ἴ Ἵ ὀ ὁ ὂ ὃ ὄ ὅ Ὀ Ὁ Ὂ Ὃ Ὄ Ὅ ὐ ὑ ὒ ὓ ὔ ὕ Ὑ Ὓ Ὕ ὠ ὡ ὢ ὣ ὤ ὥ Ὠ Ὡ Ὢ Ὣ Ὤ Ὥ ὰ ά ὲ έ ὴ ή ὶ ί ὸ ό ὺ ύ ὼ ώ ᾀ ᾁ ᾂ ᾃ ᾄ ᾅ ᾈ ᾉ ᾊ ᾋ ᾌ ᾍ ᾐ ᾑ ᾒ ᾓ ᾔ ᾕ ᾘ ᾙ ᾚ ᾛ ᾜ ᾝ ᾠ ᾡ ᾢ ᾣ ᾤ ᾥ ᾨ ᾩ ᾪ ᾫ ᾬ ᾭ ᾰ ᾱ ᾲ ᾳ ᾴ ᾶ ᾷ Ᾰ Ᾱ Ὰ Ά ᾼ ῂ ῃ ῄ ῆ ῇ Ὲ Έ Ὴ Ή ῌ ῐ ῑ ῒ ΐ ῖ ῗ Ῐ Ῑ Ὶ Ί ῠ ῡ ῢ ΰ ῤ ῥ ῦ Ῠ Ῡ Ὺ Ύ Ῥ ῲ ῳ ῴ ῶ ῷ Ὸ Ό Ὼ Ώ ῼ ‐ ‑ ‒ – — ― ‖ ‗ ‘ ’ ‚ ‛ “ ” „ ‟ † ‡ • ‣ ․ ‥ … ‧ ‰ ′ ″ ‴ ‵ ‶ ‷ ‸ ‹ › ※ ‼ ‽ ‾ ‿ ⁃ ⁄ ⁅ ⁆ ⁖ ⁘ ⁙ ⁚ ⁛ ⁜ ⁝ ⁞ ⁰ ⁱ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ⁿ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎ ₐ ₑ ₒ ₓ ₔ ₕ ₖ ₗ ₘ ₙ ₚ ₛ ₜ ₤ ₪ € ₽ ₿ № ™ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅸ Ⅹ Ⅺ ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ⅺ ⅻ ← ↑ → ↓ ↔ ↕ ↖ ↗ ↘ ↙ ↚ ↛ ↢ ↣ ↤ ↥ ↦ ↧ ↩ ↪ ↫ ↬ ↯ ↰ ↱ ↲ ↳ ↴ ↵ ↶ ↷ ↸ ↹ ↺ ↻ ↼ ↽ ↾ ↿ ⇀ ⇁ ⇂ ⇃ ⇋ ⇌ ⇐ ⇑ ⇒ ⇓ ⇔ ⇕ ⇠ ⇡ ⇢ ⇣ ⇱ ⇲ ∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏ ∐ ∑ − ∓ ∔ ∕ ∖ ∗ ∘ ∙ √ ∛ ∜ ∝ ∞ ∟ ∠ ∡ ∢ ∣ ∤ ∥ ∦ ∧ ∨ ∩ ∪ ∫ ∬ ∭ ∴ ∵ ∶ ∷ ∺ ∾ ≅ ≈ ≉ ≍ ≠ ≡ ≢ ≤ ≥ ⊂ ⊃ ⊄ ⊅ ⊆ ⊇ ⊈ ⊉ ⊊ ⊋ ⊏ ⊐ ⊑ ⊒ ⊓ ⊔ ⊕ ⊖ ⊗ ⊘ ⊛ ⊜ ⊝ ⊞ ⊟ ⊠ ⊡ ⊢ ⊣ ⊤ ⊥ ⊲ ⊳ ⊴ ⊵ ⊶ ⊷ ⊸ ⋀ ⋁ ⋂ ⋃ ⋄ ⋅ ⋆ ⋈ ⋮ ⋯ ⋰ ⋱ ⌀ ⌂ ⌈ ⌉ ⌊ ⌋ ⌌ ⌍ ⌎ ⌏ ⌕ ⌘ ⌜ ⌝ ⌞ ⌟ ⌠ ⌡ 〈〉⌵ ⌶ ⌷ ⌸ ⌹ ⌺ ⌽ ⌾ ⌿ ⍀ ⍁ ⍂ ⍉ ⍋ ⍍ ⍎ ⍒ ⍕ ⍘ ⍙ ⍚ ⍛ ⍜ ⍝ ⍞ ⍟ ⍠ ⍡ ⍢ ⍣ ⍤ ⍥ ⍨ ⍪ ⍫ ⍬ ⍭ ⍮ ⍯ ⍱ ⍲ ⍳ ⍴ ⍵ ⍶ ⍷ ⍸ ⍹ ⍺ ⍿ ⎇ ⎈ ⎉ ⎊ ⎋ ⎕ ⏎ ⏏ ⏨ ⏳⏴ ⏵ ⏶ ⏷ ⏸ ⏹ ⏺ ⏻ ⏼ ␀ ␈ ␉ ␊ ␋ ␌ ␍ ␎ ␏ ␜ ␝ ␞ ␟ ␠ ␤ ─ ━ │ ┃ ┄ ┅ ┆ ┇ ┈ ┉ ┊ ┋ ┌ ┍ ┎ ┏ ┐ ┑ ┒ ┓ └ ┕ ┖ ┗ ┘ ┙ ┚ ┛ ├ ┝ ┞ ┟ ┠ ┡ ┢ ┣ ┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫ ┬ ┭ ┮ ┯ ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻ ┼ ┽ ┾ ┿ ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋ ╌ ╍ ╎ ╏ ═ ║ ╒ ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟ ╠ ╡ ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫ ╬ ╭ ╮ ╯ ╰ ╱ ╲ ╳ ╴ ╵ ╶ ╷ ╸ ╹ ╺ ╻ ╼ ╽ ╾ ╿ ▀ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▉ ▊ ▋ ▌ ▍ ▎ ▏ ▐ ░ ▒ ▓ ▔ ▖ ▗ ▘ ▙ ▚ ▛ ▜ ▝ ▞ ▟ ■ □ ▢ ▣ ▪ ▫ ▲ △ ▶ ▼ ▽ ◀ ◆ ◇ ◈ ◉ ○ ◎ ● ◐ ◑ ◒ ◓ ◔ ◕ ◫ ◰ ◱ ◲ ◳ ◴ ◵ ◶ ◷ ◿ ☁ ☃ ☐ ☑ ☒ ☕☰ ☱ ☲ ☳ ☴ ☵ ☶ ☷ ☸ ☹ ☺ ☻ ☿ ♀ ♁ ♂ ♈♉♊♋♌♍♎♏♐♑♒♓♠ ♡ ♢ ♣ ♤ ♥ ♦ ♧ ♩ ♪ ♫ ♬ ♭ ♮ ♯ ⚀ ⚁ ⚂ ⚃ ⚄ ⚅ ⚇ ⚐ ⚑ ⚙ ⚠ ⚡⚢ ⚣ ⚥ ⚦ ⚨ ⚲ ⚳ ⚴ ⚵ ⚸ ⛔✅✓ ✔ ✕ ✖ ✗ ✘ ✙ ✚ ✛ ✜ ✦ ✨✭ ✮ ✹ ❄ ❌❎❓❤ ❬ ❭ ❮ ❯ ➜ ⟜ ⟦ ⟧ ⟨ ⟩ ⟪ ⟫ ⠁ ⠂ ⠃ ⠄ ⠅ ⠆ ⠇ ⠈ ⠉ ⠊ ⠋ ⠌ ⠍ ⠎ ⠏ ⠐ ⠑ ⠒ ⠓ ⠔ ⠕ ⠖ ⠗ ⠘ ⠙ ⠚ ⠛ ⠜ ⠝ ⠞ ⠟ ⠠ ⠡ ⠢ ⠣ ⠤ ⠥ ⠦ ⠧ ⠨ ⠩ ⠪ ⠫ ⠬ ⠭ ⠮ ⠯ ⠰ ⠱ ⠲ ⠳ ⠴ ⠵ ⠶ ⠷ ⠸ ⠹ ⠺ ⠻ ⠼ ⠽ ⠾ ⠿ ⡀ ⡁ ⡂ ⡃ ⡄ ⡅ ⡆ ⡇ ⡈ ⡉ ⡊ ⡋ ⡌ ⡍ ⡎ ⡏ ⡐ ⡑ ⡒ ⡓ ⡔ ⡕ ⡖ ⡗ ⡘ ⡙ ⡚ ⡛ ⡜ ⡝ ⡞ ⡟ ⡠ ⡡ ⡢ ⡣ ⡤ ⡥ ⡦ ⡧ ⡨ ⡩ ⡪ ⡫ ⡬ ⡭ ⡮ ⡯ ⡰ ⡱ ⡲ ⡳ ⡴ ⡵ ⡶ ⡷ ⡸ ⡹ ⡺ ⡻ ⡼ ⡽ ⡾ ⡿ ⢀ ⢁ ⢂ ⢃ ⢄ ⢅ ⢆ ⢇ ⢈ ⢉ ⢊ ⢋ ⢌ ⢍ ⢎ ⢏ ⢐ ⢑ ⢒ ⢓ ⢔ ⢕ ⢖ ⢗ ⢘ ⢙ ⢚ ⢛ ⢜ ⢝ ⢞ ⢟ ⢠ ⢡ ⢢ ⢣ ⢤ ⢥ ⢦ ⢧ ⢨ ⢩ ⢪ ⢫ ⢬ ⢭ ⢮ ⢯ ⢰ ⢱ ⢲ ⢳ ⢴ ⢵ ⢶ ⢷ ⢸ ⢹ ⢺ ⢻ ⢼ ⢽ ⢾ ⢿ ⣀ ⣁ ⣂ ⣃ ⣄ ⣅ ⣆ ⣇ ⣈ ⣉ ⣊ ⣋ ⣌ ⣍ ⣎ ⣏ ⣐ ⣑ ⣒ ⣓ ⣔ ⣕ ⣖ ⣗ ⣘ ⣙ ⣚ ⣛ ⣜ ⣝ ⣞ ⣟ ⣠ ⣡ ⣢ ⣣ ⣤ ⣥ ⣦ ⣧ ⣨ ⣩ ⣪ ⣫ ⣬ ⣭ ⣮ ⣯ ⣰ ⣱ ⣲ ⣳ ⣴ ⣵ ⣶ ⣷ ⣸ ⣹ ⣺ ⣻ ⣼ ⣽ ⣾ ⣿ ⥊ ⧻ ⬢ ⭐⭠ ⭡ ⭢ ⭣ ⭤ ⭥ ⭦ ⭧ ⭨ ⭩ ⮀ ⮁ ⮂ ⮃ ⱱ ⸽ 。㏑Ꞩ ꭥ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      墳奄奔婢直睊襁謹fi ﭨ ﯱ ﰮ ﱛ ﱜ ﱝ ﳌ ﳤ ﴃ ﴅ ﴆ ﴇ ﴈ ﴉ ﴊ ﴋ ﴌ ﴍ ﴎ ﴏ ﴐ ﴲ ﵂ ﹔﹕﹖﹗﹘﹙﹚﹛﹜﹝﹞﹟﹠﹡﹢﹣﹤﹥﹦﹨﹩﹪﹫+Rans𐅯 𐊦 𐋉 𐋏 𐌕 𐍃 𓂺 𝔽 𝔾 𝕊 𝕎 𝕏 𝕗 𝕘 𝕣 𝕤 𝕨 𝕩 🌑🌒🌓🌔🌕🌖🌗🌘🌞🌱🌳🍹🎁🐍🐏🐘🐛🐩🐪🐫🐬🐹👇👈👩👽💎💠💡💥💩💼📄📖📝📡📦📩🔋🔐🔑🔒🔗🔧🔬🔮🖨 😈😊😎🚀🛠 🛡 🤷🦀🦊🦌󰀂 󰁯 󰅲 󰆨 󰇰 󰈲 󰋑 󰋔 󰌆 󰌛 󰌠 󰐑 󰒍 󰗆 󰙅 󰚩 󰜫 󰟔 󰡄 󰨊 󱐗 \ No newline at end of file diff --git a/img/charmap.png b/img/charmap.png index 85f6547..ea3976d 100644 Binary files a/img/charmap.png and b/img/charmap.png differ diff --git a/img/charmap.txt b/img/charmap.txt index 9bb70d4..c165d7e 100644 --- a/img/charmap.txt +++ b/img/charmap.txt @@ -6,7 +6,7 @@ U+0004_│@ A B C D E F G H I J K L M N O U+0005_│P Q R S T U V W X Y Z [ \ ] ^ _ U+0006_│` a b c d e f g h i j k l m n o U+0007_│p q r s t u v w x y z { | } ~ -U+000A_│  ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ +U+000A_│ ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯ U+000B_│° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ U+000C_│À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï U+000D_│Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß @@ -30,25 +30,27 @@ U+001E_│Ǡ ǡ Ǣ ǣ Ǥ ǥ Ǧ ǧ Ǩ ǩ Ǫ ǫ Ǭ ǭ Ǯ ǯ U+001F_│ǰ Ǵ ǵ Ƕ Ƿ Ǹ ǹ Ǻ ǻ Ǽ ǽ Ǿ ǿ U+0020_│Ȁ ȁ Ȃ ȃ Ȅ ȅ Ȇ ȇ Ȉ ȉ Ȋ ȋ Ȍ ȍ Ȏ ȏ U+0021_│Ȑ ȑ Ȓ ȓ Ȕ ȕ Ȗ ȗ Ș ș Ț ț Ȝ ȝ Ȟ ȟ -U+0022_│Ƞ Ȥ ȥ Ȧ ȧ Ȩ ȩ ȫ ȭ Ȯ ȯ -U+0023_│ ȱ Ȳ ȳ +U+0022_│Ƞ ȡ Ȥ ȥ Ȧ ȧ Ȩ ȩ ȫ ȭ Ȯ ȯ +U+0023_│ ȱ Ȳ ȳ ȴ ȵ ȶ ȸ ȹ U+0024_│ Ɂ ɂ Ɇ ɇ U+0025_│ɐ ɑ ɒ ɓ ɔ ɕ ɖ ɗ ɘ ə ɚ ɛ ɜ ɝ ɞ ɟ U+0026_│ɠ ɡ ɢ ɣ ɤ ɥ ɦ ɧ ɨ ɩ ɪ ɫ ɬ ɭ ɮ ɯ U+0027_│ɰ ɱ ɲ ɳ ɴ ɵ ɶ ɷ ɸ ɹ ɺ ɻ ɼ ɽ ɾ ɿ U+0028_│ʀ ʁ ʂ ʃ ʄ ʅ ʆ ʇ ʈ ʉ ʊ ʋ ʌ ʍ ʎ ʏ U+0029_│ʐ ʑ ʒ ʓ ʔ ʕ ʖ ʗ ʘ ʙ ʚ ʛ ʜ ʝ ʞ ʟ -U+002A_│ʠ ʡ ʢ -U+002B_│ ʹ ʺ ʻ ʼ ʽ -U+002C_│ ˂ ˃ ˄ ˅ ˆ ˇ ˈ ˉ ˊ ˋ ˌ ˍ ˎ ˏ -U+002D_│ː ˑ ˒ ˓ ˔ ˕ ˖ ˗ ˘ ˙ ˚ ˛ ˜ ˝ ˟ -U+002E_│ˠ ˡ ˢ ˣ ˤ ˬ ˭ ˯ +U+002A_│ʠ ʡ ʢ ʣ ʤ ʥ ʦ ʧ ʨ ʮ ʯ +U+002B_│ʰ ʱ ʲ ʳ ʴ ʵ ʶ ʷ ʹ ʺ ʻ ʼ ʽ ʾ ʿ +U+002C_│ˀ ˁ ˂ ˃ ˄ ˅ ˆ ˇ ˈ ˉ ˊ ˋ ˌ ˍ ˎ ˏ +U+002D_│ː ˑ ˒ ˓ ˔ ˕ ˖ ˗ ˘ ˙ ˚ ˛ ˜ ˝ ˞ ˟ +U+002E_│ˠ ˡ ˢ ˣ ˤ ˥ ˦ ˧ ˨ ˩ ˬ ˭ ˯ U+002F_│˰ ˱ ˲ ˳ ˴ ˵ ˶ ˷ ˹ ˺ ˻ ˼ ˽ ˾ U+0030_│ ̀ ́ ̂ ̃ ̄ ̅ ̆ ̇ ̈ ̉ ̊ ̋ ̌ ̍ ̎ ̏ U+0031_│ ̐ ̑ ̒ ̓ ̔ ̕ ̖ ̗ ̘ ̙ ̚ ̛ ̜ ̝ ̞ ̟ U+0032_│ ̠ ̣ ̤ ̥ ̦ ̧ ̨ ̩ ̪ ̫ ̬ ̭ ̮ ̯ -U+0033_│ ̰ ̱ ̲ ̳ ̺ ̻ ̼ ̽ ̾ ̿ +U+0033_│ ̰ ̱ ̲ ̳ ̹ ̺ ̻ ̼ ̽ ̾ ̿ U+0034_│ ̀ ́ ͂ ̓ ͆ ͇ ͈ +U+0035_│ ͑ ͗ ͜ ͝ +U+0036_│ ͡ U+0038_│ Ά Έ Ή Ί Ό Ύ Ώ U+0039_│ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο U+003A_│Π Ρ Σ Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί @@ -77,7 +79,10 @@ U+0051_│Ԑ ԑ Ԓ ԓ Ԕ ԕ Ԗ ԗ Ԙ ԙ Ԛ ԛ Ԝ ԝ Ԟ ԟ U+0052_│Ԡ ԡ Ԣ ԣ Ԥ ԥ Ԧ ԧ Ԩ ԩ Ԫ ԫ Ԭ ԭ Ԯ ԯ U+00CA_│ಠ U+016A_│ᚠ ᚢ ᚣ ᚤ ᚥ ᚦ ᚨ ᚩ ᚪ ᚫ ᚬ +U+01D0_│ᴀ ᴇ U+01D2_│ ᴥ +U+01D4_│ ᵊ +U+01D9_│ ᶑ U+01E0_│Ḁ ḁ Ḃ ḃ Ḅ ḅ Ḇ ḇ Ḉ ḉ Ḋ ḋ Ḍ ḍ Ḏ ḏ U+01E1_│Ḑ ḑ Ḓ ḓ Ḕ ḕ Ḗ ḗ Ḙ ḙ Ḛ ḛ Ḝ ḝ Ḟ ḟ U+01E2_│Ḡ ḡ Ḣ ḣ Ḥ ḥ Ḧ ḧ Ḩ ḩ Ḫ ḫ Ḭ ḭ Ḯ ḯ @@ -219,10 +224,12 @@ U+02B2_│ ⬢ U+02B5_│⭐ U+02B6_│⭠ ⭡ ⭢ ⭣ ⭤ ⭥ ⭦ ⭧ ⭨ ⭩ U+02B8_│⮀ ⮁ ⮂ ⮃ +U+02C7_│ ⱱ U+02E3_│ ⸽ U+0300_│ 。 U+033D_│ ㏑ U+0A7A_│ Ꞩ +U+0AB6_│ ꭥ U+0E00_│           U+0E0A_│    U+0E0B_│                @@ -347,6 +354,7 @@ U+0FA7_│ 墳奄奔 U+0FA8_│婢 U+0FAA_│ 直睊 U+0FAB_│ 襁 謹 +U+0FB0_│ fi U+0FB6_│ ﭨ U+0FBF_│ ﯱ U+0FC2_│ ﰮ diff --git a/img/sample.png b/img/sample.png index 07e286c..6dea539 100644 Binary files a/img/sample.png and b/img/sample.png differ diff --git a/img/vim.png b/img/vim.png new file mode 100644 index 0000000..45924bc Binary files /dev/null and b/img/vim.png differ