Compare commits

..

No commits in common. "main" and "v.1.25.0" have entirely different histories.

23 changed files with 1805 additions and 35215 deletions

3
.gitignore vendored
View file

@ -61,6 +61,3 @@ dmypy.json
*.ttf
*.otf
.vim
.direnv
.envrc
result

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -1,467 +0,0 @@
SplineFontDB: 3.2
FontName: Cozette
FullName: Cozette
FamilyName: Cozette
Weight: Medium
Copyright: (c) 2020-2025 Ines <ines@moonwit.ch>
Version: 1.252
ItalicAngle: 0
UnderlinePosition: -100
UnderlineWidth: 50
Ascent: 1575
Descent: 473
InvalidEm: 0
sfntRevision: 0x00010000
LayerCount: 2
Layer: 0 0 "Back" 1
Layer: 1 0 "Fore" 0
XUID: [1021 693 57709195 13213585]
StyleMap: 0x0040
FSType: 0
OS2Version: 1
OS2_WeightWidthSlopeOnly: 0
OS2_UseTypoMetrics: 0
CreationTime: -2082812035
ModificationTime: 1753860679
PfmFamily: 49
TTFWeight: 500
TTFWidth: 5
LineGap: 102
VLineGap: 0
Panose: 0 0 0 9 0 0 0 0 0 0
OS2TypoAscent: 1655
OS2TypoAOffset: 0
OS2TypoDescent: 472
OS2TypoDOffset: 0
OS2TypoLinegap: 2127
OS2WinAscent: 1655
OS2WinAOffset: 0
OS2WinDescent: 472
OS2WinDOffset: 0
HheadAscent: 1655
HheadAOffset: 0
HheadDescent: -472
HheadDOffset: 0
OS2SubXSize: 409
OS2SubYSize: 409
OS2SubXOff: 0
OS2SubYOff: 409
OS2SupXSize: 409
OS2SupYSize: 409
OS2SupXOff: 0
OS2SupYOff: 409
OS2StrikeYSize: 2048
OS2StrikeYPos: 512
OS2Vendor: 'UNKN'
MarkAttachClasses: 1
DEI: 91125
LangName: 1033 "" "" "" "" "" "" "" "" "" "" "" "" "" "Copyright (c) 2020 Ines <ines@moonwit.ch>+AAoACgAA-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the +ACIA-Software+ACIA), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:+AAoACgAA-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.+AAoACgAA-THE SOFTWARE IS PROVIDED +ACIA-AS IS+ACIA, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." "https://opensource.org/licenses/MIT"
MATH:ScriptPercentScaleDown: 80
MATH:ScriptScriptPercentScaleDown: 60
MATH:DelimitedSubFormulaMinHeight: 3072
MATH:DisplayOperatorMinHeight: 0
MATH:MathLeading: 0
MATH:AxisHeight: 0
MATH:AccentBaseHeight: 0
MATH:FlattenedAccentBaseHeight: 0
MATH:SubscriptShiftDown: 409
MATH:SubscriptTopMax: 0
MATH:SubscriptBaselineDropMin: 0
MATH:SuperscriptShiftUp: 409
MATH:SuperscriptShiftUpCramped: 0
MATH:SuperscriptBottomMin: 0
MATH:SuperscriptBaselineDropMax: 0
MATH:SubSuperscriptGapMin: 200
MATH:SuperscriptBottomMaxWithSubscript: 0
MATH:SpaceAfterScript: 85
MATH:UpperLimitGapMin: 0
MATH:UpperLimitBaselineRiseMin: 0
MATH:LowerLimitGapMin: 0
MATH:LowerLimitBaselineDropMin: 0
MATH:StackTopShiftUp: 0
MATH:StackTopDisplayStyleShiftUp: 0
MATH:StackBottomShiftDown: 0
MATH:StackBottomDisplayStyleShiftDown: 0
MATH:StackGapMin: 150
MATH:StackDisplayStyleGapMin: 350
MATH:StretchStackTopShiftUp: 0
MATH:StretchStackBottomShiftDown: 0
MATH:StretchStackGapAboveMin: 0
MATH:StretchStackGapBelowMin: 0
MATH:FractionNumeratorShiftUp: 0
MATH:FractionNumeratorDisplayStyleShiftUp: 0
MATH:FractionDenominatorShiftDown: 0
MATH:FractionDenominatorDisplayStyleShiftDown: 0
MATH:FractionNumeratorGapMin: 50
MATH:FractionNumeratorDisplayStyleGapMin: 150
MATH:FractionRuleThickness: 50
MATH:FractionDenominatorGapMin: 50
MATH:FractionDenominatorDisplayStyleGapMin: 150
MATH:SkewedFractionHorizontalGap: 0
MATH:SkewedFractionVerticalGap: 0
MATH:OverbarVerticalGap: 150
MATH:OverbarRuleThickness: 50
MATH:OverbarExtraAscender: 50
MATH:UnderbarVerticalGap: 150
MATH:UnderbarRuleThickness: 50
MATH:UnderbarExtraDescender: 50
MATH:RadicalVerticalGap: 50
MATH:RadicalDisplayStyleVerticalGap: 50
MATH:RadicalRuleThickness: 50
MATH:RadicalExtraAscender: 50
MATH:RadicalKernBeforeDegree: 568
MATH:RadicalKernAfterDegree: -1137
MATH:RadicalDegreeBottomRaisePercent: 60
MATH:MinConnectorOverlap: 40
Encoding: UnicodeFull
Compacted: 1
UnicodeInterp: none
NameList: AGL with PUA
DisplaySize: 13
AntiAlias: 1
FitToEm: 0
WidthSeparation: 307
WinInfo: 0 16 20
OnlyBitmaps: 1
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 32
StartChar: seven
Encoding: 55 55 0
Width: 1024
Flags: W
LayerCount: 2
Fore
Validated: 1
EndChar
StartChar: uni2077
Encoding: 8311 8311 1
Width: 1024
Flags: W
LayerCount: 2
EndChar
StartChar: uni2087
Encoding: 8327 8327 2
Width: 1024
Flags: W
LayerCount: 2
EndChar
StartChar: uniFF17
Encoding: 65303 65303 3
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: u1CCF7
Encoding: 118007 118007 4
Width: 945
Flags: W
LayerCount: 2
EndChar
StartChar: u1E0A7
Encoding: 123047 123047 5
Width: 2048
LayerCount: 2
EndChar
StartChar: u1F0A7
Encoding: 127143 127143 6
Width: 945
Flags: W
LayerCount: 2
EndChar
StartChar: u1F0B7
Encoding: 127159 127159 7
Width: 945
Flags: W
LayerCount: 2
EndChar
StartChar: u1F0C7
Encoding: 127175 127175 8
Width: 945
Flags: W
LayerCount: 2
EndChar
StartChar: u1F0D7
Encoding: 127191 127191 9
Width: 945
Flags: W
LayerCount: 2
EndChar
StartChar: uni2150
Encoding: 8528 8528 10
Width: 945
Flags: W
LayerCount: 2
EndChar
StartChar: seveneighths
Encoding: 8542 8542 11
Width: 945
Flags: W
LayerCount: 2
EndChar
StartChar: uni2466
Encoding: 9318 9318 12
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni2470
Encoding: 9328 9328 13
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni24FB
Encoding: 9467 9467 14
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni24F1
Encoding: 9457 9457 15
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni2786
Encoding: 10118 10118 16
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni277C
Encoding: 10108 10108 17
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni2790
Encoding: 10128 10128 18
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni3257
Encoding: 12887 12887 19
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni32B2
Encoding: 12978 12978 20
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni32BC
Encoding: 12988 12988 21
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni247A
Encoding: 9338 9338 22
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni2484
Encoding: 9348 9348 23
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni2498
Encoding: 9368 9368 24
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni248E
Encoding: 9358 9358 25
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni32C6
Encoding: 12998 12998 26
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni335F
Encoding: 13151 13151 27
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni3369
Encoding: 13161 13161 28
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni33E6
Encoding: 13286 13286 29
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni33F0
Encoding: 13296 13296 30
Width: 1890
Flags: W
LayerCount: 2
EndChar
StartChar: uni33FA
Encoding: 13306 13306 31
Width: 1890
Flags: W
LayerCount: 2
EndChar
EndChars
BitmapFont: 13 33 10 3 1
BDFStartProperties: 42
FONT 1 "-inesw-Cozette-Medium-R-Normal--13-120-75-75-M-60-ISO10646-1"
COMMENT 0 "(c) 2020-2025 Ines <ines@moonwit.ch>"
FOUNDRY 16 "inesw"
FAMILY_NAME 16 "Cozette"
WEIGHT_NAME 16 "Medium"
SLANT 16 "R"
SETWIDTH_NAME 16 "Normal"
ADD_STYLE_NAME 16 ""
PIXEL_SIZE 18 13
POINT_SIZE 18 120
RESOLUTION_X 19 75
RESOLUTION_Y 19 75
SPACING 16 "M"
AVERAGE_WIDTH 18 60
CHARSET_REGISTRY 16 "ISO10646"
CHARSET_ENCODING 16 "1"
FONTNAME_REGISTRY 16 ""
FONT_NAME 16 "Cozette"
FACE_NAME 16 "Cozette"
COPYRIGHT 16 "(c) 2020-2025 Ines <ines@moonwit.ch>"
FONT_VERSION 16 "1.252"
FONT_ASCENT 18 10
FONT_DESCENT 18 3
UNDERLINE_POSITION 18 -19
UNDERLINE_THICKNESS 18 13
X_HEIGHT 18 5
CAP_HEIGHT 18 7
DEFAULT_CHAR 19 0
RAW_ASCENT 18 769
RAW_DESCENT 18 230
NORM_SPACE 18 6
RELATIVE_WEIGHT 19 50
RELATIVE_SETWIDTH 19 50
SUPERSCRIPT_X 18 0
SUPERSCRIPT_Y 18 2
SUPERSCRIPT_SIZE 18 2
SUBSCRIPT_X 18 0
SUBSCRIPT_Y 18 2
SUBSCRIPT_SIZE 18 2
FIGURE_WIDTH 18 6
AVG_LOWERCASE_WIDTH 18 60
AVG_UPPERCASE_WIDTH 18 60
BDFEndProperties
Resolution: 75
BDFChar: 0 55 6 1 5 0 7
p]qERGT]7:
BDFChar: 1 8311 6 1 4 4 8
n.=MC5QCca
BDFChar: 2 8327 6 1 4 -2 2
n.=MC5QCca
BDFChar: 3 65303 12 4 8 0 7
p]qERGT]7:
BDFChar: 4 118007 6 0 5 0 7
r.O]Y6u482
BDFChar: 5 123047 6 0 0 0 0
z
BDFChar: 6 127143 6 1 5 -2 8
pk\-if\#uOLoC(K
BDFChar: 7 127159 6 1 5 -2 8
pk\-if\#ttLtMJ&
BDFChar: 8 127175 6 1 5 -2 8
pk\-if\#uOLtMJ&
BDFChar: 9 127191 6 1 5 -2 8
pk\-if\#uOW7^kF
BDFChar: 10 8528 6 1 5 0 8
Lld^k+BV1%O8o7\
BDFChar: 11 8542 6 1 5 0 8
aAC6V0PF:]O8o7\
BDFChar: 12 9318 12 1 11 -2 8
*ro]a5X:>PJfp'rKHPpj5X8_m*rl9@
BDFChar: 13 9328 12 1 11 -2 8
*ro]a5X:O+Yb72QOW_1W5X8_m*rl9@
BDFChar: 14 9467 12 1 11 -2 8
*rpf+@).dFJfp'rKHPpj@).9-*rl9@
BDFChar: 15 9457 12 2 10 -1 7
4og'4fRTQDfRVe.NIZKY4obQ_
BDFChar: 16 10118 12 1 11 -2 8
*ro]a5X:>PJfp'rKHPpj5X8_m*rl9@
BDFChar: 17 10108 12 2 10 -1 7
4og'4j+.#Wj+-lSpOI_n4obQ_
BDFChar: 18 10128 12 2 10 -1 7
4og'4j+.#Wj+-lSpOI_n4obQ_
BDFChar: 19 12887 12 1 11 -2 8
*ro]a5X;ZKLnKs)Tcglg5X8_m*rl9@
BDFChar: 20 12978 12 1 11 -2 8
*ro]a5X;ZKLnKs)M'0&G5X8_m*rl9@
BDFChar: 21 12988 12 1 11 -2 8
*ro]a5X:g3W1^bqM'.Wt5X8_m*rl9@
BDFChar: 22 9338 12 1 11 -2 8
+Fmfa5sU#EKHQ<uKHQ'n83fF*+FjFl
BDFChar: 23 9348 12 1 11 -2 8
+Fm6Q8O/[dMBIs&MBId!?9gb@+FjFl
BDFChar: 24 9368 12 1 10 0 7
:&mT\_>lt(:&mZ^7)7m!
BDFChar: 25 9358 12 2 9 0 7
p]qERGT]@@
BDFChar: 26 12998 12 1 10 -1 7
o=tu('>PeWo=uP869mq("Mb!;
BDFChar: 27 13151 12 1 11 -1 8
!<DZ*&HEK[,!b]a,JZPE6biku
BDFChar: 28 13161 12 1 11 -1 8
!.\=i7"E7l8O-QH8\djsks,<C
BDFChar: 29 13286 12 1 10 0 7
pV7J.'L4%]oKXZe8&.MX
BDFChar: 30 13296 12 1 11 0 7
?/S-o`?7b1>p)]]8`8hU
BDFChar: 31 13306 12 1 11 0 7
?/VP%,p4Yp>p)]]M;[V@
EndBitmapFont
EndSplineFont

View file

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2020 Samhain <samhain@moonwit.ch> & contributors <https://github.com/the-moonwitch/Cozette/contributors>
Copyright (c) 2020, Slavfox
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View file

@ -19,3 +19,6 @@ pip = "*"
[requires]
python_version = "3.12"
[pipenv]
allow_prereleases = true

487
Pipfile.lock generated
View file

@ -34,58 +34,52 @@
},
"fonttools": {
"hashes": [
"sha256:07e005dc454eee1cc60105d6a29593459a06321c21897f769a281ff2d08939f6",
"sha256:0a911591200114969befa7f2cb74ac148bce5a91df5645443371aba6d222e263",
"sha256:0d1d353ef198c422515a3e974a1e8d5b304cd54a4c2eebcae708e37cd9eeffb1",
"sha256:0e88e3018ac809b9662615072dcd6b84dca4c2d991c6d66e1970a112503bba7e",
"sha256:1d152d1be65652fc65e695e5619e0aa0982295a95a9b29b52b85775243c06556",
"sha256:262705b1663f18c04250bd1242b0515d3bbae177bee7752be67c979b7d47f43d",
"sha256:278913a168f90d53378c20c23b80f4e599dca62fbffae4cc620c8eed476b723e",
"sha256:301540e89cf4ce89d462eb23a89464fef50915255ece765d10eee8b2bf9d75b2",
"sha256:31c32d7d4b0958600eac75eaf524b7b7cb68d3a8c196635252b7a2c30d80e986",
"sha256:357cacb988a18aace66e5e55fe1247f2ee706e01debc4b1a20d77400354cddeb",
"sha256:37cddd62d83dc4f72f7c3f3c2bcf2697e89a30efb152079896544a93907733bd",
"sha256:41bb0b250c8132b2fcac148e2e9198e62ff06f3cc472065dff839327945c5882",
"sha256:4aa4817f0031206e637d1e685251ac61be64d1adef111060df84fdcbc6ab6c44",
"sha256:4e10d2e0a12e18f4e2dd031e1bf7c3d7017be5c8dbe524d07706179f355c5dac",
"sha256:5419771b64248484299fa77689d4f3aeed643ea6630b2ea750eeab219588ba20",
"sha256:54471032f7cb5fca694b5f1a0aaeba4af6e10ae989df408e0216f7fd6cdc405d",
"sha256:58974b4987b2a71ee08ade1e7f47f410c367cdfc5a94fabd599c88165f56213a",
"sha256:58d29b9a294573d8319f16f2f79e42428ba9b6480442fa1836e4eb89c4d9d61c",
"sha256:5eb2474a7c5be8a5331146758debb2669bf5635c021aee00fd7c353558fc659d",
"sha256:6e37561751b017cf5c40fce0d90fd9e8274716de327ec4ffb0df957160be3bff",
"sha256:76ae5091547e74e7efecc3cbf8e75200bc92daaeb88e5433c5e3e95ea8ce5aa7",
"sha256:7965af9b67dd546e52afcf2e38641b5be956d68c425bef2158e95af11d229f10",
"sha256:7e3b7d44e18c085fd8c16dcc6f1ad6c61b71ff463636fcb13df7b1b818bd0c02",
"sha256:7ed7ee041ff7b34cc62f07545e55e1468808691dddfd315d51dd82a6b37ddef2",
"sha256:82834962b3d7c5ca98cb56001c33cf20eb110ecf442725dc5fdf36d16ed1ab07",
"sha256:8583e563df41fdecef31b793b4dd3af8a9caa03397be648945ad32717a92885b",
"sha256:8fa92cb248e573daab8d032919623cc309c005086d743afb014c836636166f08",
"sha256:93d458c8a6a354dc8b48fc78d66d2a8a90b941f7fec30e94c7ad9982b1fa6bab",
"sha256:957f669d4922f92c171ba01bef7f29410668db09f6c02111e22b2bce446f3285",
"sha256:9dc080e5a1c3b2656caff2ac2633d009b3a9ff7b5e93d0452f40cd76d3da3b3c",
"sha256:9ef1b167e22709b46bf8168368b7b5d3efeaaa746c6d39661c1b4405b6352e58",
"sha256:a7a310c6e0471602fe3bf8efaf193d396ea561486aeaa7adc1f132e02d30c4b9",
"sha256:ab774fa225238986218a463f3fe151e04d8c25d7de09df7f0f5fce27b1243dbc",
"sha256:ada215fd079e23e060157aab12eba0d66704316547f334eee9ff26f8c0d7b8ab",
"sha256:c39287f5c8f4a0c5a55daf9eaf9ccd223ea59eed3f6d467133cc727d7b943a55",
"sha256:c9c563351ddc230725c4bdf7d9e1e92cbe6ae8553942bd1fb2b2ff0884e8b714",
"sha256:d26732ae002cc3d2ecab04897bb02ae3f11f06dd7575d1df46acd2f7c012a8d8",
"sha256:d3b659d1029946f4ff9b6183984578041b520ce0f8fb7078bb37ec7445806b33",
"sha256:dd9cc95b8d6e27d01e1e1f1fae8559ef3c02c76317da650a19047f249acd519d",
"sha256:e4564cf40cebcb53f3dc825e85910bf54835e8a8b6880d59e5159f0f325e637e",
"sha256:e7d82b9e56716ed32574ee106cabca80992e6bbdcf25a88d97d21f73a0aae664",
"sha256:e8a4b261c1ef91e7188a30571be6ad98d1c6d9fa2427244c545e2fa0a2494dd7",
"sha256:e96bc94c8cda58f577277d4a71f51c8e2129b8b36fd05adece6320dd3d57de8a",
"sha256:ed2f80ca07025551636c555dec2b755dd005e2ea8fbeb99fc5cdff319b70b23b",
"sha256:f5b8a096e649768c2f4233f947cf9737f8dbf8728b90e2771e2497c6e3d21d13",
"sha256:f8e953cc0bddc2beaf3a3c3b5dd9ab7554677da72dfaf46951e193c9653e515a",
"sha256:fda582236fee135d4daeca056c8c88ec5f6f6d88a004a79b84a02547c8f57386",
"sha256:fdb062893fd6d47b527d39346e0c5578b7957dcea6d6a3b6794569370013d9ac"
"sha256:0118ef998a0699a96c7b28457f15546815015a2710a1b23a7bf6c1be60c01636",
"sha256:0d145976194a5242fdd22df18a1b451481a88071feadf251221af110ca8f00ce",
"sha256:0e19bd9e9964a09cd2433a4b100ca7f34e34731e0758e13ba9a1ed6e5468cc0f",
"sha256:0f08c901d3866a8905363619e3741c33f0a83a680d92a9f0e575985c2634fcc1",
"sha256:1250e818b5f8a679ad79660855528120a8f0288f8f30ec88b83db51515411fcc",
"sha256:15c94eeef6b095831067f72c825eb0e2d48bb4cea0647c1b05c981ecba2bf39f",
"sha256:1621ee57da887c17312acc4b0e7ac30d3a4fb0fec6174b2e3754a74c26bbed1e",
"sha256:180194c7fe60c989bb627d7ed5011f2bef1c4d36ecf3ec64daec8302f1ae0716",
"sha256:278e50f6b003c6aed19bae2242b364e575bcb16304b53f2b64f6551b9c000e15",
"sha256:32b17504696f605e9e960647c5f64b35704782a502cc26a37b800b4d69ff3c77",
"sha256:3bee3f3bd9fa1d5ee616ccfd13b27ca605c2b4270e45715bd2883e9504735034",
"sha256:4060acc2bfa2d8e98117828a238889f13b6f69d59f4f2d5857eece5277b829ba",
"sha256:54dcf21a2f2d06ded676e3c3f9f74b2bafded3a8ff12f0983160b13e9f2fb4a7",
"sha256:56fc244f2585d6c00b9bcc59e6593e646cf095a96fe68d62cd4da53dd1287b55",
"sha256:599bdb75e220241cedc6faebfafedd7670335d2e29620d207dd0378a4e9ccc5a",
"sha256:5f6bc991d1610f5c3bbe997b0233cbc234b8e82fa99fc0b2932dc1ca5e5afec0",
"sha256:60a3409c9112aec02d5fb546f557bca6efa773dcb32ac147c6baf5f742e6258b",
"sha256:68b3fb7775a923be73e739f92f7e8a72725fd333eab24834041365d2278c3671",
"sha256:76f1777d8b3386479ffb4a282e74318e730014d86ce60f016908d9801af9ca2a",
"sha256:806e7912c32a657fa39d2d6eb1d3012d35f841387c8fc6cf349ed70b7c340039",
"sha256:84d7751f4468dd8cdd03ddada18b8b0857a5beec80bce9f435742abc9a851a74",
"sha256:865a58b6e60b0938874af0968cd0553bcd88e0b2cb6e588727117bd099eef836",
"sha256:8ac27f436e8af7779f0bb4d5425aa3535270494d3bc5459ed27de3f03151e4c2",
"sha256:8b4850fa2ef2cfbc1d1f689bc159ef0f45d8d83298c1425838095bf53ef46308",
"sha256:8b5ad456813d93b9c4b7ee55302208db2b45324315129d85275c01f5cb7e61a2",
"sha256:8e2f1a4499e3b5ee82c19b5ee57f0294673125c65b0a1ff3764ea1f9db2f9ef5",
"sha256:9696fe9f3f0c32e9a321d5268208a7cc9205a52f99b89479d1b035ed54c923f1",
"sha256:96a48e137c36be55e68845fc4284533bda2980f8d6f835e26bca79d7e2006438",
"sha256:a8feca65bab31479d795b0d16c9a9852902e3a3c0630678efb0b2b7941ea9c74",
"sha256:aefa011207ed36cd280babfaa8510b8176f1a77261833e895a9d96e57e44802f",
"sha256:b2b92381f37b39ba2fc98c3a45a9d6383bfc9916a87d66ccb6553f7bdd129097",
"sha256:b3c61423f22165541b9403ee39874dcae84cd57a9078b82e1dce8cb06b07fa2e",
"sha256:b5b48a1121117047d82695d276c2af2ee3a24ffe0f502ed581acc2673ecf1037",
"sha256:c18b49adc721a7d0b8dfe7c3130c89b8704baf599fb396396d07d4aa69b824a1",
"sha256:c5b8cab0c137ca229433570151b5c1fc6af212680b58b15abd797dcdd9dd5051",
"sha256:c7e91abdfae1b5c9e3a543f48ce96013f9a08c6c9668f1e6be0beabf0a569c1b",
"sha256:cadf4e12a608ef1d13e039864f484c8a968840afa0258b0b843a0556497ea9ed",
"sha256:dc0673361331566d7a663d7ce0f6fdcbfbdc1f59c6e3ed1165ad7202ca183c68",
"sha256:de7c29bdbdd35811f14493ffd2534b88f0ce1b9065316433b22d63ca1cd21f14",
"sha256:e9d9298be7a05bb4801f558522adbe2feea1b0b103d5294ebf24a92dd49b78e5",
"sha256:ee1af4be1c5afe4c96ca23badd368d8dc75f611887fb0c0dac9f71ee5d6f110e",
"sha256:f7e89853d8bea103c8e3514b9f9dc86b5b4120afb4583b57eb10dfa5afbe0936"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==4.54.1"
"version": "==4.51.0"
},
"gitdb": {
"hashes": [
@ -106,168 +100,149 @@
},
"numpy": {
"hashes": [
"sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5",
"sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0",
"sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550",
"sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c",
"sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7",
"sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2",
"sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b",
"sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df",
"sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f",
"sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d",
"sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270",
"sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd",
"sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504",
"sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec",
"sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647",
"sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f",
"sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab",
"sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe",
"sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5",
"sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5",
"sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e",
"sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd",
"sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313",
"sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0",
"sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f",
"sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6",
"sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553",
"sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed",
"sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb",
"sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e",
"sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39",
"sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728",
"sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e",
"sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a",
"sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95",
"sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f",
"sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480",
"sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9",
"sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0",
"sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f",
"sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd",
"sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae",
"sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201",
"sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136",
"sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf",
"sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78",
"sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468",
"sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca",
"sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef",
"sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0",
"sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556",
"sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521",
"sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"
"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",
"markers": "python_version >= '3.10'",
"version": "==2.1.1"
"markers": "python_version >= '3.9'",
"version": "==2.0.0rc1"
},
"pillow": {
"hashes": [
"sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885",
"sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea",
"sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df",
"sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5",
"sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c",
"sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d",
"sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd",
"sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06",
"sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908",
"sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a",
"sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be",
"sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0",
"sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b",
"sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80",
"sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a",
"sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e",
"sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9",
"sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696",
"sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b",
"sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309",
"sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e",
"sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab",
"sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d",
"sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060",
"sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d",
"sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d",
"sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4",
"sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3",
"sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6",
"sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb",
"sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94",
"sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b",
"sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496",
"sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0",
"sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319",
"sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b",
"sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856",
"sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef",
"sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680",
"sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b",
"sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42",
"sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e",
"sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597",
"sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a",
"sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8",
"sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3",
"sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736",
"sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da",
"sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126",
"sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd",
"sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5",
"sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b",
"sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026",
"sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b",
"sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc",
"sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46",
"sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2",
"sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c",
"sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe",
"sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984",
"sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a",
"sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70",
"sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca",
"sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b",
"sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91",
"sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3",
"sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84",
"sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1",
"sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5",
"sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be",
"sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f",
"sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc",
"sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9",
"sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e",
"sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141",
"sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef",
"sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22",
"sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27",
"sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e",
"sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"
"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",
"markers": "python_version >= '3.8'",
"version": "==10.4.0"
"version": "==10.3.0"
},
"pip": {
"hashes": [
"sha256:2cd581cf58ab7fcfca4ce8efa6dcacd0de5bf8d0a3eb9ec927e07405f4d9e2a2",
"sha256:5b5e490b5e9cb275c879595064adce9ebd31b854e3e803740b72f9ccf34a45b8"
"sha256:752516cffafef5cf29d3fb2f06c978f27e98709654689cf277b2fce984c7a591",
"sha256:a9bd4c037d72325b4e903ec3f383263deea3eb73cd01db7a844edd026fc68afe"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==24.2"
"version": "==24.1b1"
},
"setuptools": {
"hashes": [
"sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2",
"sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"
"sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987",
"sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==75.1.0"
"version": "==69.5.1"
},
"smmap": {
"hashes": [
@ -281,32 +256,32 @@
"develop": {
"black": {
"hashes": [
"sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6",
"sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e",
"sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f",
"sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018",
"sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e",
"sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd",
"sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4",
"sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed",
"sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2",
"sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42",
"sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af",
"sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb",
"sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368",
"sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb",
"sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af",
"sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed",
"sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47",
"sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2",
"sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a",
"sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c",
"sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920",
"sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"
"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",
"markers": "python_version >= '3.8'",
"version": "==24.8.0"
"version": "==24.4.2"
},
"click": {
"hashes": [
@ -318,46 +293,46 @@
},
"isort": {
"hashes": [
"sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109",
"sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"
"sha256:0ec8b74806e80fec33e6e7ba89d35e17b3eb1c4c74316ea44cf877cc26e8b118",
"sha256:cde11e804641edbe1b6b95d56582eb541f27eebc77864c6015545944bb0e9c76"
],
"index": "pypi",
"markers": "python_full_version >= '3.8.0'",
"version": "==5.13.2"
"markers": "python_full_version >= '3.7.0'",
"version": "==6.0.0b2"
},
"mypy": {
"hashes": [
"sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36",
"sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce",
"sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6",
"sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b",
"sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca",
"sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24",
"sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383",
"sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7",
"sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86",
"sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d",
"sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4",
"sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8",
"sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987",
"sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385",
"sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79",
"sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef",
"sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6",
"sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70",
"sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca",
"sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70",
"sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12",
"sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104",
"sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a",
"sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318",
"sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1",
"sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b",
"sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"
"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",
"markers": "python_version >= '3.8'",
"version": "==1.11.2"
"version": "==1.10.0"
},
"mypy-extensions": {
"hashes": [
@ -369,11 +344,11 @@
},
"packaging": {
"hashes": [
"sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002",
"sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"
"sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5",
"sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"
],
"markers": "python_version >= '3.8'",
"version": "==24.1"
"markers": "python_version >= '3.7'",
"version": "==24.0"
},
"pathspec": {
"hashes": [
@ -385,19 +360,19 @@
},
"platformdirs": {
"hashes": [
"sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907",
"sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"
"sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf",
"sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"
],
"markers": "python_version >= '3.8'",
"version": "==4.3.6"
"version": "==4.2.1"
},
"typing-extensions": {
"hashes": [
"sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d",
"sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"
"sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0",
"sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"
],
"markers": "python_version >= '3.8'",
"version": "==4.12.2"
"version": "==4.11.0"
}
}
}

View file

@ -1,10 +1,10 @@
# Cozette
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/the-moonwitch/Cozette?logo=github&style=flat-square)](https://github.com/the-moonwitch/Cozette/releases/latest)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/slavfox/Cozette?logo=github&style=flat-square)](https://github.com/slavfox/Cozette/releases/latest)
[![AUR version](https://img.shields.io/aur/version/cozette-otb?color=%231793d1&label=AUR&logo=arch-linux&logoColor=%23fff&style=flat-square)](https://aur.archlinux.org/packages/cozette-otb/)
![GitHub Workflow Status](https://img.shields.io/github/workflow/status/the-moonwitch/Cozette/Build%20fonts?logo=github&style=flat-square)
![GitHub All Releases](https://img.shields.io/github/downloads/the-moonwitch/Cozette/total?style=flat-square)
[![GitHub license](https://img.shields.io/github/license/the-moonwitch/Cozette?style=flat-square)](https://github.com/the-moonwitch/Cozette/blob/master/LICENSE)
![GitHub Workflow Status](https://img.shields.io/github/workflow/status/slavfox/Cozette/Build%20fonts?logo=github&style=flat-square)
![GitHub All Releases](https://img.shields.io/github/downloads/slavfox/Cozette/total?style=flat-square)
[![GitHub license](https://img.shields.io/github/license/slavfox/Cozette?style=flat-square)](https://github.com/slavfox/Cozette/blob/master/LICENSE)
![Cozette](./img/sample.png)
@ -93,13 +93,6 @@ The preferred format is `.otb` (for bitmaps) or `.ttf`
(you probably want to follow your distro's instructions). On Ubuntu you might need to
[specifically enable bitmap fonts].
**If you're on Void**, [ifreund] made [a Void package](https://github.com/void-linux/void-packages/tree/master/srcpkgs/font-cozette) for the .otb! Install it
using XBPS:
```
$ sudo xbps-install font-cozette
```
**If you're on Arch**, [ifreund] made [an AUR package] for the .otb! Install it
using your AUR helper of choice:
@ -156,23 +149,6 @@ will want to use CozetteVector there. In applications that do support bitmap
fonts, you will want to use the normal, bitmap Cozette (unless it's too
small for you, in which case, CozetteVector scales better).
#### VSCode Letter Spacing
Sometimes the font might render without proper space betweening the characters (font size set to 13):
![vscode-before-letterspacing](https://github.com/user-attachments/assets/a26eab50-a92e-4a9d-b72f-bbdfcd8b7be7)
To fix this you need to set (in your settings):
- terminal.integrated.letterSpacing to 1
![vscode-settings-fix-incorrect-letterspacing](https://github.com/user-attachments/assets/1936c07a-f45b-4476-8d49-bd489ff9b9ae)
After that your terminal should look like this (font size set to 13):
![vscode-after-letterspacing](https://github.com/user-attachments/assets/dbd9e722-8503-45cd-aac3-c8fcc9fc2c1e)
_Note: VSCode also provides the option editor.letterSpacing which adjusts the spacing for the file editor._
#### Kitty
**[4e554c4c](https://github.com/4e554c4c) made [an AUR package for `kitty` patched to support bitmap fonts](https://aur.archlinux.org/packages/kitty-bitmap/).**
@ -188,7 +164,7 @@ explicitly set Cozette(Vector)'s `spacing` to 100, and `scalable` to `true` in `
You can also make Cozette work flawlessly by uninstalling `kitty` and using a terminal emulator for which _not rendering fonts_ isn't a design principle - I cannot recommend [alacritty](https://github.com/alacritty/alacritty/) enough. it's excellent, has worked flawlessly for me for quite some time, and both configuring and getting bitmap fonts to work in it is a breeze.
(The support was discussed in [the-moonwitch/Cozette#18](https://github.com/the-moonwitch/Cozette/issues/18). Many thanks to all the participants there, especially to to Luflosi, who brought up flipping the `allow_bitmapped_fonts` flag in [their fork](https://github.com/Luflosi/kitty/commit/e645e0b5ed084c2c57ecfb8acafc07e76f5717bb), and to [4e554c4c](https://github.com/4e554c4c), who made the AUR package.)
(The support was discussed in [slavfox/Cozette#18](https://github.com/slavfox/Cozette/issues/18). Many thanks to all the participants there, especially to to Luflosi, who brought up flipping the `allow_bitmapped_fonts` flag in [their fork](https://github.com/Luflosi/kitty/commit/e645e0b5ed084c2c57ecfb8acafc07e76f5717bb), and to [4e554c4c](https://github.com/4e554c4c), who made the AUR package.)
# Roadmap
@ -217,18 +193,17 @@ implemented:
date)
- [x] "True" TTF version
- [x] Windows support
- [x] Full [vim-airline] and [bufferline.nvim] support!
- [x] Full [vim-airline] support!
- [x] Full [ranger_devicons] support!
- [x] [starship] supported out of the box!
- [x] Full [powerlevel10k] support! (if it doesn't work, try setting
`POWERLEVEL9K_MODE` to `nerdfont-complete`)
- [x] All glyphs used by [maturin](https://github.com/PyO3/maturin) and many other CLI tools!
- [x] All glyphs used by [maturin](https://github.com/PyO3/maturin) and
many other CLI tools!
- [x] Charmap including the code points (to make it easier for users to
report issues/request additions)
- [x] Codepoints above U+FFFF in vector fonts
- [x] Upscaled hi-dpi variant
- [x] Crossed seven variant!
![Crossed seven demo](./img/crossed_seven.png)
# Recommended alternatives
@ -291,14 +266,6 @@ Cozette includes contributions from:
- [sungodmoth]
- [yoshiyoshyosh]
- [bluetoad07]
- [PhMajerus]
- [theridane]
- [supersurviveur]
- [breitnw]
- [kachick]
- [Eejit43]
- [WhyNotHugo]
- [Mogwump]
- [estradiol enantate]
# License & Acknowledgements
@ -311,10 +278,10 @@ Cozette's builds use [bdfscale](https://github.com/philj56/bdfscale) by [philj56
[proggy]: https://github.com/bluescan/proggyfonts
[creep]: https://github.com/romeovs/creep
[great coverage of all the glyphs i might encounter in the terminal]: #character-map
[file an issue]: https://github.com/the-moonwitch/Cozette/issues/new
[file an issue]: https://github.com/slavfox/Cozette/issues/new
[nerd fonts]: https://www.nerdfonts.com/
[the bottom of this readme]: #character-map
[you can get cozette over at the releases tab]: https://github.com/the-moonwitch/Cozette/releases
[you can get cozette over at the releases tab]: https://github.com/slavfox/Cozette/releases
[ifreund]: https://github.com/ifreund
[an aur package]: https://aur.archlinux.org/packages/cozette-otb/
[specifically enable bitmap fonts]: https://bugs.launchpad.net/ubuntu/+source/fontconfig/+bug/1560114
@ -336,14 +303,5 @@ Cozette's builds use [bdfscale](https://github.com/philj56/bdfscale) by [philj56
[laxul]: https://github.com/laxul
[sungodmoth]: https://github.com/sungodmoth
[bluetoad07]: https://github.com/bluetoad07
[PhMajerus]: https://github.com/PhMajerus
[theridane]: https://github.com/theridane
[supersurviveur]: https://github.com/supersurviveur
[breitnw]: https://github.com/breitnw
[kachick]: https://github.com/kachick
[Eejit43]: https://github.com/Eejit43
[WhyNotHugo]: https://github.com/WhyNotHugo
[Mogwump]: https://github.com/Mogwump
[estradiol enantate]: https://en.wikipedia.org/wiki/Estradiol_enantate
[port]: https://cgit.freebsd.org/ports/tree/x11-fonts/cozette
[bufferline.nvim]: https://github.com/akinsho/bufferline.nvim

116
build.py
View file

@ -1,9 +1,7 @@
import argparse
import re
import subprocess
from dataclasses import dataclass
from pathlib import Path
from pickle import BUILD
from shlex import quote
from shutil import rmtree
from typing import Optional, Sequence, cast
@ -46,7 +44,7 @@ class Generate:
def save_images():
print(crayons.yellow("Saving character map"))
save_charlist(FONTNAME, SFDPATH, REPO_ROOT / "img")
#save_charlist(FONTNAME, SFDPATH, REPO_ROOT / "img")
print(crayons.yellow("Saving sample image"))
save_sample(
@ -77,24 +75,24 @@ def rename_single(dir: Path, pattern: str, newname: str) -> Path:
return cast(Path, next(dir.glob(pattern)).rename(dir / newname))
def gen_bitmap_formats(sfd_path: Path, prefix: str) -> Path:
def gen_bitmap_formats() -> Path:
fontforge(
open=sfd_path,
open=REPO_ROOT / "Cozette" / "Cozette.sfd",
generate=[
Generate(f"{prefix}.", bitmap_fmt="bdf"),
Generate("cozette.", bitmap_fmt="bdf"),
],
)
bdf_path = rename_single(BUILD_DIR, f"{prefix}-*.bdf", f"{prefix}.bdf")
bdf_path = rename_single(BUILD_DIR, "*.bdf", "cozette.bdf")
fontforge(
open=sfd_path,
open=REPO_ROOT / "Cozette" / "Cozette.sfd",
generate=[
Generate(f"{prefix}.", "otb"),
Generate(f"{prefix}.", "psf"),
Generate(f"{prefix}.", "fnt"),
Generate(f"{prefix}.dfont", "sbit"),
Generate("cozette.", "otb"),
Generate("cozette.", "psf"),
Generate("cozette.", "fnt"),
Generate("cozette.dfont", "sbit"),
],
)
rename_single(BUILD_DIR, f"{prefix}-*.fnt", f"{prefix}.fnt")
rename_single(BUILD_DIR, "*.fnt", "cozette.fnt")
return bdf_path
@ -106,16 +104,6 @@ def fix_ttf(ttfpath: Path, name: str):
if line.startswith("Version "):
version = line.split()[1]
break
if name.endswith("Bold"):
family_name = name.removesuffix("Bold")
style_name = "Bold"
weight = 700
else:
family_name = name
style_name = "Regular"
weight = 400
with NamedTemporaryFile() as sfd:
subprocess.run(
[
@ -138,18 +126,13 @@ def fix_ttf(ttfpath: Path, name: str):
"ScaleToEm(2048)",
'RenameGlyphs("AGL with PUA")',
'Reencode("unicode")',
f'SetTTFName(0x409, 1, "{family_name}")',
f'SetTTFName(0x409, 2, "{style_name}")',
f'SetTTFName(0x409, 3, "{family_name} {style_name}")', # Unique font identifier
f'SetTTFName(0x409, 4, "{family_name} {style_name}")', # Full font name
f'SetTTFName(0x409, 3, "{name}")',
f'SetTTFName(0x409, 5, "{version}")',
f'SetTTFName(0x409, 6, "{family_name}-{style_name}")', # PostScript name
f'SetTTFName(0x409, 8, "Ines <ines@moonwit.ch>")',
f'SetTTFName(0x409, 9, "Ines <ines@moonwit.ch>")',
f'SetTTFName(0x409, 11, "https://github.com/the-moonwitch/Cozette")',
f'SetTTFName(0x409, 8, "Slavfox")',
f'SetTTFName(0x409, 9, "Slavfox")',
f'SetTTFName(0x409, 11, "https://github.com/slavfox/Cozette")',
f'SetTTFName(0x409, 13, LoadStringFromFile({repr(str((REPO_ROOT / "LICENSE").resolve()))}))',
'SetTTFName(0x409, 14, "https://github.com/the-moonwitch/Cozette/blob/master/LICENSE")',
f'SetOS2Value("Weight", {weight})',
'SetTTFName(0x409, 14, "https://github.com/slavfox/Cozette/blob/master/LICENSE")',
f'Generate("{name}.dfont")',
f'Generate("{name}.otf")',
f'Generate("{name}.ttf")',
@ -180,39 +163,8 @@ def make_hidpi(bdf_path: Path, out_path: Path):
print(crayons.green("Done!"))
BDF_CODEPOINT_RE = re.compile(r"BDFChar: \S+ (\d+)")
def variant(
sfd_path: Path, variant_name: str, variant_source: Path
) -> tuple[Path, str]:
outpath = BUILD_DIR / f"{variant_name}.sfd"
replacements = {}
with variant_source.open() as f:
for line in f:
if codepoint := BDF_CODEPOINT_RE.match(line):
replacements[int(codepoint.group(1))] = next(f)
with outpath.open("w") as f:
with sfd_path.open() as src:
replacement = None
for line in src:
if replacement is not None:
f.write(replacement)
replacement = None
elif line.startswith("FAMILY_NAME"):
f.write(line)
else:
f.write(line.replace("Cozette", variant_name))
if codepoint := BDF_CODEPOINT_RE.match(line):
if int(codepoint.group(1)) in replacements:
replacement = replacements[int(codepoint.group(1))]
return (outpath, variant_name)
def gen_versions(bdf_path: Path, font_name: str, filename_prefix: str):
hidpi_path = BUILD_DIR / f"{filename_prefix}_hidpi.bdf"
def gen_variants(bdf_path: Path):
hidpi_path = BUILD_DIR / "cozette_hidpi.bdf"
def bnp_invoc_ttf(name: str, format: str):
return [
@ -236,23 +188,21 @@ def gen_versions(bdf_path: Path, font_name: str, filename_prefix: str):
"-f",
"psf",
"-o",
BUILD_DIR / f"{filename_prefix}.psf",
BUILD_DIR / f"cozette.psf",
bdf_path,
],
check=True,
)
subprocess.run(
bnp_invoc_ttf(f"{font_name}Vector", "ttf") + [bdf_path], check=True
bnp_invoc_ttf("CozetteVector", "ttf") + [bdf_path], check=True
)
subprocess.run(
bnp_invoc_ttf(f"{font_name}VectorBold", "ttf") + ["-b", bdf_path],
bnp_invoc_ttf("CozetteVectorBold", "ttf") + ["-b", bdf_path],
check=True,
)
print(crayons.yellow("Fixing TTF variants..."))
fix_ttf(BUILD_DIR / f"{font_name}Vector_tmp.ttf", f"{font_name}Vector")
fix_ttf(
BUILD_DIR / f"{font_name}VectorBold_tmp.ttf", f"{font_name}VectorBold"
)
fix_ttf(BUILD_DIR / "CozetteVector_tmp.ttf", "CozetteVector")
fix_ttf(BUILD_DIR / "CozetteVectorBold_tmp.ttf", "CozetteVectorBold")
print(crayons.green("Done!"))
make_hidpi(bdf_path, hidpi_path)
fontforge(
@ -263,7 +213,7 @@ def gen_versions(bdf_path: Path, font_name: str, filename_prefix: str):
Generate(f"{hidpi_path.stem}.dfont", "sbit"),
],
)
rename_single(BUILD_DIR, "*-26.fnt", f"{filename_prefix}_hidpi.fnt")
rename_single(BUILD_DIR, "*-26.fnt", "cozette_hidpi.fnt")
subprocess.run(
[
BUILD_DIR.parent / "bitsnpicas.sh",
@ -315,19 +265,11 @@ if __name__ == "__main__":
elif args.action == "fonts":
rmtree(BUILD_DIR, ignore_errors=True)
BUILD_DIR.mkdir(exist_ok=True)
for sfd_path, font_name in (
(SFDPATH, "Cozette"),
variant(
SFDPATH,
"CozetteCrossedSeven",
SFDPATH.parent / "variants" / "CozetteCrossedSeven.sfd",
),
):
print(crayons.blue(f"Building bitmap formats for {font_name}..."))
bdf_path = gen_bitmap_formats(sfd_path, font_name.lower())
print(crayons.green("Done!", bold=True))
print(crayons.blue(f"Building versions for {font_name}..."))
gen_versions(bdf_path, font_name, font_name.lower())
print(crayons.blue("Building bitmap formats..."))
bdf_path = gen_bitmap_formats()
print(crayons.green("Done!", bold=True))
print(crayons.blue("Building variants..."))
gen_variants(bdf_path)
print(crayons.green("Done!", bold=True))
elif args.action == "changelog":
get_changelog()

View file

@ -17,7 +17,6 @@ def get_last_cozette_sfd() -> str:
content = get_last_ver().commit.tree["Cozette/Cozette.sfd"]
return content.data_stream.read().decode("utf-8")
char_regex = re.compile(
r"BDFChar: (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+) (-?\d+)"
)

View file

@ -90,7 +90,4 @@ def double_size(src: TextIO, out: TextIO):
line = "FONT " + "-".join(xlfd) + "\n"
elif line.startswith("BITMAP"):
bitmap = True
if line.startswith("FAMILY_NAME"):
out.write(line)
continue
out.write(line.replace("Cozette", "CozetteHiDpi"))

View file

@ -1,11 +1,11 @@
STARTFONT 2.1
FONT -inesw-CozetteHiDpi-Medium-R-Normal--26-240-75-75-M-120-ISO10646-1
FONT -slavfox-CozetteHiDpi-Medium-R-Normal--26-240-75-75-M-120-ISO10646-1
SIZE 24 75 75
FONTBOUNDINGBOX 17 28 -5 -3
COMMENT "Generated by fontforge, http://fontforge.sourceforge.net"
COMMENT "(c) 2020-2025 Ines <ines@moonwit.ch>"
COMMENT "(c) 2020-2023 Slavfox"
STARTPROPERTIES 40
FOUNDRY "inesw"
FOUNDRY "slavfox"
FAMILY_NAME "Cozette"
WEIGHT_NAME "Medium"
SLANT "R"
@ -22,7 +22,7 @@ CHARSET_ENCODING "1"
FONTNAME_REGISTRY ""
FONT_NAME "Cozette"
FACE_NAME "Cozette"
COPYRIGHT "(c) 2020-2025 Ines <ines@moonwit.ch>"
COPYRIGHT "(c) 2020-2023 Slavfox"
FONT_VERSION "1.192"
FONT_ASCENT 10
FONT_DESCENT 3

View file

@ -55,7 +55,7 @@ def wrap_text(src: str, width=79) -> Sample:
):
idx += len(h)
else:
running_w += 1 if charwidth(src[idx]) not in "FW" else 2
running_w += 1 if charwidth(src[idx]) != "W" else 2
idx += 1
for idx in reversed(linebreaks):
src = src[:idx].rstrip() + "\n" + src[idx:].lstrip()
@ -104,7 +104,7 @@ def save_sample(
"-fa",
fnt,
"-geometry",
f"{sample.width}x{sample.height}+100+100",
f"{sample.width}x{sample.height - 1}+100+100",
"-dc",
"-cu",
"-cn",
@ -186,7 +186,7 @@ def make_charlist_text(sfd: Path) -> str:
text += f" {chr(c)} "
else:
ch = chr(c)
text += ch if charwidth(ch) in "FWN" else f"{ch} "
text += ch if charwidth(ch) in "FW" else f"{ch} "
else:
print("Skipping", c, category(chr(c)))
return text
@ -227,15 +227,14 @@ def save_charlist(fnt: str, sfd: Path, output_dir: Path):
charmap = make_charmap(sfd)
with (output_dir / "charmap.txt").open("w") as f:
f.write(" ")
f.write("\n ".join(charmap))
f.write("\n".join(charmap))
files = []
for chunk in range(0, len(charmap), 50):
path = output_dir / f"charmap{chunk//50}_tmp.png"
text = " \n".join(charmap[chunk : chunk + 50])
text = "\n".join(charmap[chunk : chunk + 50])
save_sample(
fnt,
Sample(text, 41, len(charmap[chunk : chunk + 49])),
Sample(text, 40, len(charmap[chunk : chunk + 49])),
path,
fgcolor="#24292e",
bgcolor="#ffffff",
@ -254,8 +253,9 @@ def expand(sample_path: Path, margin: int = 40, color: str = "#282c34"):
def add_margins(sample_path: Path, color: str = "#282c34"):
im: Image.Image = Image.open(sample_path).convert("RGB")
new_w = round((im.height / 10) * 16)
im.load()
new_im = ImageOps.pad(
im, (im.width * 2, im.height), method=Image.NEAREST, color=color
im, (new_w, im.height), method=Image.NEAREST, color=color
)
new_im.save(sample_path)

View file

@ -1,61 +0,0 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1765838191,
"narHash": "sha256-m5KWt1nOm76ILk/JSCxBM4MfK3rYY7Wq9/TZIIeGnT8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c6f52ebd45e5925c188d1a20119978aa4ffd5ef6",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View file

@ -1,97 +0,0 @@
{
description = "A bitmap programming font optimized for coziness";
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs =
{
self,
nixpkgs,
flake-utils,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
inherit (pkgs) lib;
in
{
devShells = {
default = pkgs.mkShellNoCC {
packages = with pkgs; [
# FontForge GUI
fontforge-gtk
# Python tools
python312Packages.black
python312Packages.mypy
python312Packages.isort
python312Packages.ruff
];
};
};
packages = rec {
# Derivation to build and install cozette
cozette = pkgs.stdenvNoCC.mkDerivation {
pname = "cozette";
version =
let
sfdLines = lib.strings.splitString "\n" (builtins.readFile ./Cozette/Cozette.sfd);
sfdVersionLine = lib.lists.findFirst (l: lib.strings.hasPrefix "Version: " l) null sfdLines;
sfdVersion =
if sfdVersionLine != null then lib.strings.removePrefix "Version: " sfdVersionLine else "0.00";
majorRest = lib.strings.splitString "." sfdVersion;
major = builtins.elemAt majorRest 0;
minorPatch = builtins.elemAt majorRest 1;
minor = builtins.substring 0 2 minorPatch;
patch = builtins.substring 2 1 minorPatch;
in
"${major}.${minor}.${patch}";
src = ./.;
buildInputs = with pkgs; [
(pkgs.python312.withPackages (
ppkgs: with ppkgs; [
numpy
pillow
fonttools
crayons
gitpython
setuptools
pip
]
))
fontforge
bitsnpicas
];
postPatch = ''
substituteInPlace build.py --replace-fail \
'bitsnpicas.sh' '${lib.getExe pkgs.bitsnpicas}'
'';
buildPhase = ''
python3 build.py fonts
'';
installPhase = ''
runHook preInstall
cd build
install -Dm644 *.ttf -t $out/share/fonts/truetype
install -Dm644 *.otf -t $out/share/fonts/opentype
install -Dm644 *.bdf -t $out/share/fonts/misc
install -Dm644 *.otb -t $out/share/fonts/misc
install -Dm644 *.woff -t $out/share/fonts/woff
install -Dm644 *.woff2 -t $out/share/fonts/woff2
runHook postInstall
'';
};
default = cozette;
};
}
);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 51 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 KiB

After

Width:  |  Height:  |  Size: 101 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View file

@ -5,6 +5,6 @@ force_grid_wrap = 0
use_parentheses = true
line_length = 79
[tool.ruff]
target-version = "py312"
line-length = 79
[tool.black]
target-version = ['py38']
line_length = 79