From 401c142c75a4d88735cc263f1e7a0ed5332901c4 Mon Sep 17 00:00:00 2001 From: august Date: Tue, 13 Feb 2024 17:19:02 -0500 Subject: [PATCH] good god that took way to long but this kinda works --- Cozette.sfd | 793 ++++++++++++++++++++++++++-------------------------- cozette.png | Bin 2491 -> 5355 bytes src/main.rs | 82 ++---- 3 files changed, 432 insertions(+), 443 deletions(-) diff --git a/Cozette.sfd b/Cozette.sfd index 89b6662..805df70 100644 --- a/Cozette.sfd +++ b/Cozette.sfd @@ -1,7 +1,7 @@ SplineFontDB: 3.2 -FontName: Cozette -FullName: Cozette -FamilyName: Cozette +FontName: Cozette8Wide +FullName: Cozette8Wide +FamilyName: Cozette8Wide Weight: Medium Copyright: (c) 2020-2023 Slavfox UComments: "2024-2-11: Created with FontForge (http://fontforge.org)" @@ -22,7 +22,7 @@ OS2Version: 0 OS2_WeightWidthSlopeOnly: 0 OS2_UseTypoMetrics: 1 CreationTime: 1707687904 -ModificationTime: 1707715626 +ModificationTime: 1707765434 OS2TypoAscent: 0 OS2TypoAOffset: 1 OS2TypoDescent: 0 @@ -36,6 +36,7 @@ HheadAscent: 0 HheadAOffset: 1 HheadDescent: 0 HheadDOffset: 1 +MarkAttachClasses: 1 DEI: 91125 Encoding: UnicodeInterp: none @@ -43,1287 +44,1295 @@ NameList: AGL For New Fonts DisplaySize: 13 AntiAlias: 1 FitToEm: 0 -WinInfo: 0 32 14 +WinInfo: 0 32 11 OnlyBitmaps: 1 -BeginChars: 318 190 +BeginPrivate: 0 +EndPrivate +BeginChars: 319 191 StartChar: uni0295 Encoding: 0 661 0 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni0097 -Encoding: 1 151 1 -Width: 500 +Encoding: 256 151 1 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni1D25 Encoding: 2 7461 2 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni0294 Encoding: 3 660 3 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni2661 Encoding: 4 9825 4 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: heart Encoding: 5 9829 5 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni2B50 Encoding: 6 11088 6 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni272D Encoding: 7 10029 7 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uniF005 -Encoding: 256 61445 8 +Encoding: 257 61445 8 Width: 1000 LayerCount: 2 EndChar StartChar: uni2726 -Encoding: 257 10022 9 +Encoding: 258 10022 9 Width: 1000 LayerCount: 2 EndChar StartChar: uni2728 -Encoding: 258 10024 10 +Encoding: 259 10024 10 Width: 1000 LayerCount: 2 EndChar StartChar: female Encoding: 8 9792 11 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: male Encoding: 9 9794 12 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni26A2 -Encoding: 259 9890 13 +Encoding: 260 9890 13 Width: 1000 LayerCount: 2 EndChar StartChar: uni26A3 -Encoding: 260 9891 14 +Encoding: 261 9891 14 Width: 1000 LayerCount: 2 EndChar StartChar: uni26A5 -Encoding: 261 9893 15 +Encoding: 262 9893 15 Width: 1000 LayerCount: 2 EndChar StartChar: uni2669 Encoding: 10 9833 16 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: musicalnote Encoding: 11 9834 17 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: musicalnotedbl Encoding: 12 9835 18 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni266C -Encoding: 262 9836 19 +Encoding: 263 9836 19 Width: 1000 LayerCount: 2 EndChar StartChar: space Encoding: 32 32 20 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: exclam Encoding: 33 33 21 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: quotedbl Encoding: 34 34 22 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: numbersign Encoding: 35 35 23 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: dollar Encoding: 36 36 24 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: percent Encoding: 37 37 25 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: ampersand Encoding: 38 38 26 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: quotesingle Encoding: 39 39 27 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: parenleft Encoding: 40 40 28 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: parenright Encoding: 41 41 29 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: asterisk Encoding: 42 42 30 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: plus Encoding: 43 43 31 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: comma Encoding: 44 44 32 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: hyphen Encoding: 45 45 33 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: period Encoding: 46 46 34 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: slash Encoding: 47 47 35 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: zero Encoding: 48 48 36 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: one Encoding: 49 49 37 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: two Encoding: 50 50 38 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: three Encoding: 51 51 39 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: four Encoding: 52 52 40 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: five Encoding: 53 53 41 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: six Encoding: 54 54 42 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: seven Encoding: 55 55 43 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: eight Encoding: 56 56 44 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: nine Encoding: 57 57 45 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: colon Encoding: 58 58 46 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: semicolon Encoding: 59 59 47 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: less Encoding: 60 60 48 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: equal Encoding: 61 61 49 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: greater Encoding: 62 62 50 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: question Encoding: 63 63 51 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: at Encoding: 64 64 52 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: A Encoding: 65 65 53 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: B Encoding: 66 66 54 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: C Encoding: 67 67 55 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: D Encoding: 68 68 56 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: E Encoding: 69 69 57 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: F Encoding: 70 70 58 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: G Encoding: 71 71 59 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: H Encoding: 72 72 60 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: I Encoding: 73 73 61 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: J Encoding: 74 74 62 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: K Encoding: 75 75 63 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: L Encoding: 76 76 64 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: M Encoding: 77 77 65 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: N Encoding: 78 78 66 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: O Encoding: 79 79 67 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: P Encoding: 80 80 68 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: Q Encoding: 81 81 69 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: R Encoding: 82 82 70 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: S Encoding: 83 83 71 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: T Encoding: 84 84 72 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: U Encoding: 85 85 73 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: V Encoding: 86 86 74 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: W Encoding: 87 87 75 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: X Encoding: 88 88 76 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: Y Encoding: 89 89 77 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: Z Encoding: 90 90 78 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: bracketleft Encoding: 91 91 79 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: backslash Encoding: 92 92 80 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: bracketright Encoding: 93 93 81 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: asciicircum Encoding: 94 94 82 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: underscore Encoding: 95 95 83 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: grave Encoding: 96 96 84 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: a Encoding: 97 97 85 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: b Encoding: 98 98 86 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: c Encoding: 99 99 87 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: d Encoding: 100 100 88 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: e Encoding: 101 101 89 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: f Encoding: 102 102 90 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: g Encoding: 103 103 91 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: h Encoding: 104 104 92 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: i Encoding: 105 105 93 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: j Encoding: 106 106 94 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: k Encoding: 107 107 95 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: l Encoding: 108 108 96 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: m Encoding: 109 109 97 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: n Encoding: 110 110 98 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: o Encoding: 111 111 99 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: p Encoding: 112 112 100 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: q Encoding: 113 113 101 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: r Encoding: 114 114 102 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: s Encoding: 115 115 103 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: t Encoding: 116 116 104 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: u Encoding: 117 117 105 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: v Encoding: 118 118 106 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: w Encoding: 119 119 107 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: x Encoding: 120 120 108 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: y Encoding: 121 121 109 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: z Encoding: 122 122 110 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: braceleft Encoding: 123 123 111 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: bar Encoding: 124 124 112 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: braceright Encoding: 125 125 113 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: asciitilde Encoding: 126 126 114 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: SF100000 Encoding: 13 9472 115 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: SF110000 Encoding: 14 9474 116 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: SF010000 Encoding: 15 9484 117 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: SF020000 Encoding: 16 9492 118 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: SF080000 Encoding: 17 9500 119 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: SF090000 Encoding: 18 9508 120 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: SF060000 Encoding: 19 9516 121 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: SF070000 Encoding: 20 9524 122 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: SF050000 Encoding: 21 9532 123 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni256D -Encoding: 263 9581 124 +Encoding: 264 9581 124 Width: 1000 LayerCount: 2 EndChar StartChar: uni256E -Encoding: 264 9582 125 +Encoding: 265 9582 125 Width: 1000 LayerCount: 2 EndChar StartChar: uni256F -Encoding: 265 9583 126 +Encoding: 266 9583 126 Width: 1000 LayerCount: 2 EndChar StartChar: uni2570 -Encoding: 266 9584 127 +Encoding: 267 9584 127 Width: 1000 LayerCount: 2 EndChar StartChar: uni2571 -Encoding: 267 9585 128 +Encoding: 268 9585 128 Width: 1000 LayerCount: 2 EndChar StartChar: uni2572 -Encoding: 268 9586 129 +Encoding: 269 9586 129 Width: 1000 LayerCount: 2 EndChar StartChar: uni2573 -Encoding: 269 9587 130 +Encoding: 270 9587 130 Width: 1000 LayerCount: 2 EndChar StartChar: SF430000 -Encoding: 270 9552 131 +Encoding: 271 9552 131 Width: 1000 LayerCount: 2 EndChar StartChar: SF240000 -Encoding: 271 9553 132 +Encoding: 272 9553 132 Width: 1000 LayerCount: 2 EndChar StartChar: SF390000 -Encoding: 272 9556 133 +Encoding: 273 9556 133 Width: 1000 LayerCount: 2 EndChar StartChar: SF250000 -Encoding: 273 9559 134 +Encoding: 274 9559 134 Width: 1000 LayerCount: 2 EndChar StartChar: SF380000 -Encoding: 274 9562 135 +Encoding: 275 9562 135 Width: 1000 LayerCount: 2 EndChar StartChar: SF260000 -Encoding: 275 9565 136 +Encoding: 276 9565 136 Width: 1000 LayerCount: 2 EndChar StartChar: SF420000 -Encoding: 276 9568 137 +Encoding: 277 9568 137 Width: 1000 LayerCount: 2 EndChar StartChar: SF230000 -Encoding: 277 9571 138 +Encoding: 278 9571 138 Width: 1000 LayerCount: 2 EndChar StartChar: SF410000 -Encoding: 278 9574 139 +Encoding: 279 9574 139 Width: 1000 LayerCount: 2 EndChar StartChar: SF400000 -Encoding: 279 9577 140 +Encoding: 280 9577 140 Width: 1000 LayerCount: 2 EndChar StartChar: SF440000 -Encoding: 280 9580 141 +Encoding: 281 9580 141 Width: 1000 LayerCount: 2 EndChar StartChar: uniE0B0 -Encoding: 281 57520 142 +Encoding: 282 57520 142 Width: 1000 LayerCount: 2 EndChar StartChar: uniE0B2 -Encoding: 282 57522 143 +Encoding: 283 57522 143 Width: 1000 LayerCount: 2 EndChar StartChar: uniE0B4 -Encoding: 283 57524 144 +Encoding: 284 57524 144 Width: 1000 LayerCount: 2 EndChar StartChar: uniE0B6 -Encoding: 284 57526 145 +Encoding: 285 57526 145 Width: 1000 LayerCount: 2 EndChar StartChar: uniE0B8 -Encoding: 285 57528 146 +Encoding: 286 57528 146 Width: 1000 LayerCount: 2 EndChar StartChar: uniE0BA -Encoding: 286 57530 147 +Encoding: 287 57530 147 Width: 1000 LayerCount: 2 EndChar StartChar: uniE0BC -Encoding: 287 57532 148 +Encoding: 288 57532 148 Width: 1000 LayerCount: 2 EndChar StartChar: uniE0BE -Encoding: 288 57534 149 +Encoding: 289 57534 149 Width: 1000 LayerCount: 2 EndChar StartChar: uni2581 Encoding: 25 9601 150 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni2582 Encoding: 26 9602 151 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni2583 Encoding: 27 9603 152 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: dnblock Encoding: 28 9604 153 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni2585 Encoding: 29 9605 154 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni2586 Encoding: 30 9606 155 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni2587 Encoding: 31 9607 156 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: block Encoding: 127 9608 157 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni2589 -Encoding: 289 9609 158 +Encoding: 290 9609 158 Width: 1000 LayerCount: 2 EndChar StartChar: uni258A -Encoding: 290 9610 159 +Encoding: 291 9610 159 Width: 1000 LayerCount: 2 EndChar StartChar: uni258B -Encoding: 291 9611 160 +Encoding: 292 9611 160 Width: 1000 LayerCount: 2 EndChar StartChar: lfblock -Encoding: 292 9612 161 +Encoding: 293 9612 161 Width: 1000 LayerCount: 2 EndChar StartChar: uni258D -Encoding: 293 9613 162 +Encoding: 294 9613 162 Width: 1000 LayerCount: 2 EndChar StartChar: uni258E -Encoding: 294 9614 163 +Encoding: 295 9614 163 Width: 1000 LayerCount: 2 EndChar StartChar: uni258F -Encoding: 295 9615 164 +Encoding: 296 9615 164 Width: 1000 LayerCount: 2 EndChar StartChar: ltshade Encoding: 22 9617 165 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: shade Encoding: 23 9618 166 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: dkshade Encoding: 24 9619 167 -Width: 500 +Width: 615 Flags: W LayerCount: 2 EndChar StartChar: uni2596 -Encoding: 296 9622 168 +Encoding: 297 9622 168 Width: 1000 LayerCount: 2 EndChar StartChar: uni2597 -Encoding: 297 9623 169 +Encoding: 298 9623 169 Width: 1000 LayerCount: 2 EndChar StartChar: uni2598 -Encoding: 298 9624 170 +Encoding: 299 9624 170 Width: 1000 LayerCount: 2 EndChar StartChar: uni2599 -Encoding: 299 9625 171 +Encoding: 300 9625 171 Width: 1000 LayerCount: 2 EndChar StartChar: uni259A -Encoding: 300 9626 172 +Encoding: 301 9626 172 Width: 1000 LayerCount: 2 EndChar StartChar: uni259B -Encoding: 301 9627 173 +Encoding: 302 9627 173 Width: 1000 LayerCount: 2 EndChar StartChar: uni259C -Encoding: 302 9628 174 +Encoding: 303 9628 174 Width: 1000 LayerCount: 2 EndChar StartChar: uni259D -Encoding: 303 9629 175 +Encoding: 304 9629 175 Width: 1000 LayerCount: 2 EndChar StartChar: uni259E -Encoding: 304 9630 176 +Encoding: 305 9630 176 Width: 1000 LayerCount: 2 EndChar StartChar: uni259F -Encoding: 305 9631 177 +Encoding: 306 9631 177 Width: 1000 LayerCount: 2 EndChar StartChar: arrowleft -Encoding: 306 8592 178 +Encoding: 307 8592 178 Width: 1000 LayerCount: 2 EndChar StartChar: arrowup -Encoding: 307 8593 179 +Encoding: 308 8593 179 Width: 1000 LayerCount: 2 EndChar StartChar: arrowright -Encoding: 308 8594 180 +Encoding: 309 8594 180 Width: 1000 LayerCount: 2 EndChar StartChar: arrowdown -Encoding: 309 8595 181 +Encoding: 310 8595 181 Width: 1000 LayerCount: 2 EndChar StartChar: uni2B60 -Encoding: 310 11104 182 +Encoding: 311 11104 182 Width: 1000 LayerCount: 2 EndChar StartChar: uni2B61 -Encoding: 311 11105 183 +Encoding: 312 11105 183 Width: 1000 LayerCount: 2 EndChar StartChar: uni2B62 -Encoding: 312 11106 184 +Encoding: 313 11106 184 Width: 1000 LayerCount: 2 EndChar StartChar: uni2B63 -Encoding: 313 11107 185 +Encoding: 314 11107 185 Width: 1000 LayerCount: 2 EndChar StartChar: uni2B80 -Encoding: 314 11136 186 +Encoding: 315 11136 186 Width: 1000 LayerCount: 2 EndChar StartChar: uni2B81 -Encoding: 315 11137 187 +Encoding: 316 11137 187 Width: 1000 LayerCount: 2 EndChar StartChar: uni2B82 -Encoding: 316 11138 188 +Encoding: 317 11138 188 Width: 1000 LayerCount: 2 EndChar StartChar: uni2B83 -Encoding: 317 11139 189 +Encoding: 318 11139 189 +Width: 1000 +LayerCount: 2 +EndChar + +StartChar: periodcentered +Encoding: 1 183 190 Width: 1000 LayerCount: 2 EndChar EndChars -BitmapFont: 13 190 10 3 1 slavfox +BitmapFont: 13 191 10 3 1 slavfox BDFStartProperties: 45 -FONT 1 "-slavfox-Cozette-Medium-R-Normal--13-120-75-75-M-60--0" +FONT 1 "-slavfox-Cozette8Wide-Medium-R-Normal--13-120-75-75-M-60--0" SIZE 1 "12 75 75" FONTBOUNDINGBOX 16 "7 13 0 -3" COMMENT 0 "Generated by fontforge, http://fontforge.sourceforge.net" COMMENT 0 "(c) 2020-2023 Slavfox" FOUNDRY 16 "slavfox" -FAMILY_NAME 16 "Cozette" +FAMILY_NAME 16 "Cozette8Wide" WEIGHT_NAME 16 "Medium" SLANT 16 "R" SETWIDTH_NAME 16 "Normal" @@ -1337,7 +1346,7 @@ AVERAGE_WIDTH 18 60 CHARSET_REGISTRY 16 "" CHARSET_ENCODING 16 "0" FONTNAME_REGISTRY 16 "" -FONT_NAME 16 "Cozette" +FONT_NAME 16 "Cozette8Wide" FACE_NAME 16 "Cozette" COPYRIGHT 16 "(c) 2020-2023 Slavfox" FONT_VERSION 16 "1.232" @@ -1364,385 +1373,387 @@ AVG_LOWERCASE_WIDTH 18 60 AVG_UPPERCASE_WIDTH 18 60 BDFEndProperties Resolution: 75 -BDFChar: 0 0 6 1 5 0 7 +BDFChar: 0 0 8 1 5 0 7 E/9$p?m$R7 -BDFChar: 1 1 6 2 4 2 4 +BDFChar: 1 256 8 2 4 2 4 5i=m- -BDFChar: 2 2 6 1 5 0 5 +BDFChar: 2 2 8 1 5 0 5 E,]b=+P6Yo -BDFChar: 3 3 6 1 5 0 7 +BDFChar: 3 3 8 1 5 0 7 E/4c*0H_J\ -BDFChar: 4 4 6 0 6 0 6 +BDFChar: 4 4 8 0 6 0 6 Cm'C%6mrTH -BDFChar: 5 5 6 0 6 0 6 +BDFChar: 5 5 8 0 6 0 6 D#XG5HoMZ; -BDFChar: 6 6 6 1 5 1 6 +BDFChar: 6 6 8 1 5 1 6 +<^GUE/4Jo -BDFChar: 7 7 6 1 5 1 6 +BDFChar: 7 7 8 1 5 1 6 +<^GuE/4Jo -BDFChar: 8 256 6 0 0 0 0 +BDFChar: 8 257 6 0 0 0 0 z -BDFChar: 9 257 6 0 0 0 0 +BDFChar: 9 258 6 0 0 0 0 z -BDFChar: 10 258 12 0 0 0 0 +BDFChar: 10 259 12 0 0 0 0 z -BDFChar: 11 8 6 1 5 -2 5 +BDFChar: 11 8 8 1 5 -2 5 E/9=+E$0*B -BDFChar: 12 9 6 0 5 0 5 +BDFChar: 12 9 8 0 5 0 5 *"6qNOC/%g -BDFChar: 13 259 6 0 0 0 0 +BDFChar: 13 260 6 0 0 0 0 z -BDFChar: 14 260 6 0 0 0 0 +BDFChar: 14 261 6 0 0 0 0 z -BDFChar: 15 261 6 0 0 0 0 +BDFChar: 15 262 6 0 0 0 0 z -BDFChar: 16 10 6 2 3 0 6 +BDFChar: 16 10 8 2 3 0 6 5X7S"5et/8 -BDFChar: 17 11 6 2 5 0 6 +BDFChar: 17 11 8 2 5 0 6 ?r0*R5et/8 -BDFChar: 18 12 6 0 5 0 7 +BDFChar: 18 12 8 0 5 0 7 E(iYf7)[:X -BDFChar: 19 262 6 0 0 0 0 +BDFChar: 19 263 6 0 0 0 0 z -BDFChar: 20 32 6 6 6 -1 -1 +BDFChar: 20 32 8 6 6 -1 -1 z -BDFChar: 21 33 6 3 3 0 7 +BDFChar: 21 33 8 3 3 0 7 J:N0#J:IWM -BDFChar: 22 34 6 2 4 6 8 +BDFChar: 22 34 8 2 4 6 8 TV.qX -BDFChar: 23 35 6 1 5 0 7 +BDFChar: 23 35 8 1 5 0 7 :f-p`;#!j` -BDFChar: 24 36 6 1 5 -1 8 +BDFChar: 24 36 8 1 5 -1 8 +E49PE%!-5E$,,\ -BDFChar: 25 37 6 1 5 0 8 +BDFChar: 25 37 8 1 5 0 8 5bLXZ+@)#:&-)\1 -BDFChar: 26 38 6 1 5 0 8 +BDFChar: 26 38 8 1 5 0 8 +AblWBTS=;BE/#4 -BDFChar: 27 39 6 3 3 6 8 +BDFChar: 27 39 8 3 3 6 8 J:N.M -BDFChar: 28 40 6 2 4 -2 8 +BDFChar: 28 40 8 2 4 -2 8 +@&2BJ:N0#5X6Fl -BDFChar: 29 41 6 2 4 -2 8 +BDFChar: 29 41 8 2 4 -2 8 J3Z@B+9S -BDFChar: 64 76 6 1 5 0 7 +BDFChar: 64 76 8 1 5 0 7 J:N0#J:N1F -BDFChar: 65 77 6 1 5 0 7 +BDFChar: 65 77 8 1 5 0 7 LtJZ)LkpkC -BDFChar: 66 78 6 1 5 0 7 +BDFChar: 66 78 8 1 5 0 7 LrdZ9W0is. -BDFChar: 67 79 6 1 5 0 7 +BDFChar: 67 79 8 1 5 0 7 E/9=+Lkpk+ -BDFChar: 68 80 6 1 5 0 7 +BDFChar: 68 80 8 1 5 0 7 n;)mVn:6%> -BDFChar: 69 81 6 1 5 -1 7 +BDFChar: 69 81 8 1 5 -1 7 E/9=+Lkq.+#QOi) -BDFChar: 70 82 6 1 5 0 7 +BDFChar: 70 82 8 1 5 0 7 n;)niOGJ^K -BDFChar: 71 83 6 1 5 0 7 +BDFChar: 71 83 8 1 5 0 7 E/9$`#RH6* -BDFChar: 72 84 6 1 5 0 7 +BDFChar: 72 84 8 1 5 0 7 p`L\%+LkpkCn,NFg -BDFChar: 87 99 6 1 5 0 5 +BDFChar: 87 99 8 1 5 0 5 E/9$pLi<=o -BDFChar: 88 100 6 1 5 0 8 +BDFChar: 88 100 8 1 5 0 8 #RC]\LkpkCGQ7^D -BDFChar: 89 101 6 1 5 0 5 +BDFChar: 89 101 8 1 5 0 5 E/=:>Li<=o -BDFChar: 90 102 6 1 5 0 8 +BDFChar: 90 102 8 1 5 0 8 3']au5X7S"5QCca -BDFChar: 91 103 6 1 5 -3 5 +BDFChar: 91 103 8 1 5 -3 5 G_h03Lj012Du]k< -BDFChar: 92 104 6 1 5 0 8 +BDFChar: 92 104 8 1 5 0 8 J:N1>LkpkCL]@DT -BDFChar: 93 105 6 2 5 0 7 +BDFChar: 93 105 8 2 5 0 7 5QJSb5X7Rg -BDFChar: 94 106 6 2 4 -2 7 +BDFChar: 94 106 8 2 4 -2 7 +95dl+qUM -BDFChar: 115 13 6 0 6 3 3 +BDFChar: 115 13 8 0 6 3 3 rVuou -BDFChar: 116 14 6 3 3 -3 9 +BDFChar: 116 14 8 3 3 -3 9 J:N0#J:N0#J:N0#J,fQL -BDFChar: 117 15 6 3 6 -3 3 +BDFChar: 117 15 8 3 6 -3 3 n:6%>J:N.M -BDFChar: 118 16 6 3 6 3 9 +BDFChar: 118 16 8 3 6 3 9 J:N0#J:R+h -BDFChar: 119 17 6 3 6 -3 9 +BDFChar: 119 17 8 3 6 -3 9 J:N0#J:R->J:N0#J,fQL -BDFChar: 120 18 6 0 3 -3 9 +BDFChar: 120 18 8 0 3 -3 9 &.fBa&.n=B&.fBa&-)\1 -BDFChar: 121 19 6 0 6 -3 3 +BDFChar: 121 19 8 0 6 -3 3 rX]VP&.fBQ -BDFChar: 122 20 6 0 6 3 9 +BDFChar: 122 20 8 0 6 3 9 &.fBa&.ng@ -BDFChar: 123 21 6 0 6 -3 9 +BDFChar: 123 21 8 0 6 -3 9 &.fBa&.ngP&.fBa&-)\1 -BDFChar: 124 263 6 0 0 0 0 +BDFChar: 124 264 6 0 0 0 0 z -BDFChar: 125 264 6 0 0 0 0 +BDFChar: 125 265 6 0 0 0 0 z -BDFChar: 126 265 6 0 0 0 0 +BDFChar: 126 266 6 0 0 0 0 z -BDFChar: 127 266 6 0 0 0 0 +BDFChar: 127 267 6 0 0 0 0 z -BDFChar: 128 267 6 0 0 0 0 +BDFChar: 128 268 6 0 0 0 0 z -BDFChar: 129 268 6 0 0 0 0 +BDFChar: 129 269 6 0 0 0 0 z -BDFChar: 130 269 6 0 0 0 0 +BDFChar: 130 270 6 0 0 0 0 z -BDFChar: 131 270 6 0 0 0 0 +BDFChar: 131 271 6 0 0 0 0 z -BDFChar: 132 271 6 0 0 0 0 +BDFChar: 132 272 6 0 0 0 0 z -BDFChar: 133 272 6 0 0 0 0 +BDFChar: 133 273 6 0 0 0 0 z -BDFChar: 134 273 6 0 0 0 0 +BDFChar: 134 274 6 0 0 0 0 z -BDFChar: 135 274 6 0 0 0 0 +BDFChar: 135 275 6 0 0 0 0 z -BDFChar: 136 275 6 0 0 0 0 +BDFChar: 136 276 6 0 0 0 0 z -BDFChar: 137 276 6 0 0 0 0 +BDFChar: 137 277 6 0 0 0 0 z -BDFChar: 138 277 6 0 0 0 0 +BDFChar: 138 278 6 0 0 0 0 z -BDFChar: 139 278 6 0 0 0 0 +BDFChar: 139 279 6 0 0 0 0 z -BDFChar: 140 279 6 0 0 0 0 +BDFChar: 140 280 6 0 0 0 0 z -BDFChar: 141 280 6 0 0 0 0 +BDFChar: 141 281 6 0 0 0 0 z -BDFChar: 142 281 6 0 0 0 0 +BDFChar: 142 282 6 0 0 0 0 z -BDFChar: 143 282 6 0 0 0 0 +BDFChar: 143 283 6 0 0 0 0 z -BDFChar: 144 283 6 0 0 0 0 +BDFChar: 144 284 6 0 0 0 0 z -BDFChar: 145 284 6 0 0 0 0 +BDFChar: 145 285 6 0 0 0 0 z -BDFChar: 146 285 6 0 0 0 0 +BDFChar: 146 286 6 0 0 0 0 z -BDFChar: 147 286 6 0 0 0 0 +BDFChar: 147 287 6 0 0 0 0 z -BDFChar: 148 287 6 0 0 0 0 +BDFChar: 148 288 6 0 0 0 0 z -BDFChar: 149 288 6 0 0 0 0 +BDFChar: 149 289 6 0 0 0 0 z -BDFChar: 150 25 6 0 6 -3 -2 +BDFChar: 150 25 8 0 6 -3 -2 rr)lt -BDFChar: 151 26 6 0 6 -3 0 +BDFChar: 151 26 8 0 6 -3 0 rr2or -BDFChar: 152 27 6 0 6 -3 1 +BDFChar: 152 27 8 0 6 -3 1 rr2orrVuou -BDFChar: 153 28 6 0 6 -3 3 +BDFChar: 153 28 8 0 6 -3 3 rr2orrr2ls -BDFChar: 154 29 6 0 6 -3 5 +BDFChar: 154 29 8 0 6 -3 5 rr2orrr2orrVuou -BDFChar: 155 30 6 0 6 -3 7 +BDFChar: 155 30 8 0 6 -3 7 rr2orrr2orrr2ls -BDFChar: 156 31 6 0 6 -3 8 +BDFChar: 156 31 8 0 6 -3 8 rr2orrr2orrr2or -BDFChar: 157 127 6 0 6 -3 9 +BDFChar: 157 127 8 0 6 -3 9 rr2orrr2orrr2orrVuou -BDFChar: 158 289 6 0 0 0 0 +BDFChar: 158 290 6 0 0 0 0 z -BDFChar: 159 290 6 0 0 0 0 +BDFChar: 159 291 6 0 0 0 0 z -BDFChar: 160 291 6 0 0 0 0 +BDFChar: 160 292 6 0 0 0 0 z -BDFChar: 161 292 6 0 0 0 0 +BDFChar: 161 293 6 0 0 0 0 z -BDFChar: 162 293 6 0 0 0 0 +BDFChar: 162 294 6 0 0 0 0 z -BDFChar: 163 294 6 0 0 0 0 +BDFChar: 163 295 6 0 0 0 0 z -BDFChar: 164 295 6 0 0 0 0 +BDFChar: 164 296 6 0 0 0 0 z -BDFChar: 165 22 6 0 6 -3 9 +BDFChar: 165 22 8 0 6 -3 9 La%X!La%X!La%X!L]@DT -BDFChar: 166 23 6 0 6 -3 9 +BDFChar: 166 23 8 0 6 -3 9 W`5utW`5utW`5utWW3#! -BDFChar: 167 24 6 0 6 -3 9 +BDFChar: 167 24 8 0 6 -3 9 ]'d/t]'d/t]'d/t\c;^1 -BDFChar: 168 296 6 0 0 0 0 +BDFChar: 168 297 6 0 0 0 0 z -BDFChar: 169 297 6 0 0 0 0 +BDFChar: 169 298 6 0 0 0 0 z -BDFChar: 170 298 6 0 0 0 0 +BDFChar: 170 299 6 0 0 0 0 z -BDFChar: 171 299 6 0 0 0 0 +BDFChar: 171 300 6 0 0 0 0 z -BDFChar: 172 300 6 0 0 0 0 +BDFChar: 172 301 6 0 0 0 0 z -BDFChar: 173 301 6 0 0 0 0 +BDFChar: 173 302 6 0 0 0 0 z -BDFChar: 174 302 6 0 0 0 0 +BDFChar: 174 303 6 0 0 0 0 z -BDFChar: 175 303 6 0 0 0 0 +BDFChar: 175 304 6 0 0 0 0 z -BDFChar: 176 304 6 0 0 0 0 +BDFChar: 176 305 6 0 0 0 0 z -BDFChar: 177 305 6 0 0 0 0 +BDFChar: 177 306 6 0 0 0 0 z -BDFChar: 178 306 6 0 0 0 0 +BDFChar: 178 307 6 0 0 0 0 z -BDFChar: 179 307 6 0 0 0 0 +BDFChar: 179 308 6 0 0 0 0 z -BDFChar: 180 308 6 0 0 0 0 +BDFChar: 180 309 6 0 0 0 0 z -BDFChar: 181 309 6 0 0 0 0 +BDFChar: 181 310 6 0 0 0 0 z -BDFChar: 182 310 6 0 0 0 0 +BDFChar: 182 311 6 0 0 0 0 z -BDFChar: 183 311 6 0 0 0 0 +BDFChar: 183 312 6 0 0 0 0 z -BDFChar: 184 312 6 0 0 0 0 +BDFChar: 184 313 6 0 0 0 0 z -BDFChar: 185 313 6 0 0 0 0 +BDFChar: 185 314 6 0 0 0 0 z -BDFChar: 186 314 6 0 0 0 0 +BDFChar: 186 315 6 0 0 0 0 z -BDFChar: 187 315 6 0 0 0 0 +BDFChar: 187 316 6 0 0 0 0 z -BDFChar: 188 316 6 0 0 0 0 +BDFChar: 188 317 6 0 0 0 0 z -BDFChar: 189 317 6 0 0 0 0 +BDFChar: 189 318 6 0 0 0 0 +z +BDFChar: 190 1 13 0 0 0 0 z EndBitmapFont EndSplineFont diff --git a/cozette.png b/cozette.png index 303518bc564187400543e362ff128adcd8960acf..851f38ec6d203044e49a0d493a72a59abc8e0f8a 100644 GIT binary patch literal 5355 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 literal 2491 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 Result, io::Error> { + let decoder = png::Decoder::new(File::open(path)?); + let mut reader = decoder.read_info()?; + let mut buf = vec![0; reader.output_buffer_size()]; + let info = reader.next_frame(&mut buf)?; + let bytes = &buf[..info.buffer_size()]; + let compressed: Vec = bytes.iter().step_by(4).cloned().collect(); // We're not using color, so we skip duplicate color components + let mut finalbuf = Vec::new(); + for (i, _bit) in compressed.iter().step_by(8).enumerate() { + let mut byte = 0u8; + for j in (0..8).rev() { + if compressed[i * 8 + j] == 255 { + byte |= 0x80 >> j; + } + } + finalbuf.push(byte); + } + Ok(finalbuf) } -impl CharRowAddress { - fn new() -> Self { - Self { - row_address: 0x00, - char_address: 0x00, - } - } - fn inc_row(&mut self) { - if self.row_address.add(0x01) > 0b0001_1111 { - } else { - self.row_address.add_assign(0x01); - } - } - fn inc_char(&mut self) { - if self.char_address.add(0x01) > 0b0111_1111 { - } else { - self.char_address.add_assign(0x01); - } - } -} - -impl std::fmt::Display for CharRowAddress { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{:05b}{:07b}", self.row_address, self.char_address) - } +fn reorder_bitmap(bitmap: Vec) -> Vec { + unimplemented!() } fn main() -> std::io::Result<()> { - let decoder = png::Decoder::new(File::open("./cozette.png").unwrap()); - let mut reader = decoder.read_info().unwrap(); - let mut buf = vec![0; reader.output_buffer_size()]; - let info = reader.next_frame(&mut buf).unwrap(); - let bytes = &buf[..info.buffer_size()]; - let compressed: Vec = bytes.iter().step_by(4).cloned().collect(); - let mut address = CharRowAddress::new(); + let compressed = to_bitmap("./cozette.png", MAX_CHARS, MAX_ROWS)?; for row in 0..MAX_ROWS { - address.inc_row(); - for character in 0x00..0x7F { - address.inc_char(); - print!("{} ", character as usize * row); - for i in 0..7 { - if compressed[character as usize * 7 + i + (row * 0x7f)] == 255 { + for character in 0x00..MAX_CHARS { + print!("{:#04x}, {} ", character, row); // character as usize * row); + print!("{:#04x}: ", compressed[character as usize + (row * 0xFF)]); + for i in 0..8 { + // character number * char width + pixel offset + row offset = pixel + if compressed[character as usize + (row * 0xFF)] & 0x80 >> i > 0 { print!("█"); } else { print!(" ");