cozette: build psfu font for vty (#371226)

authored by Peder Bergebakken Sundt and committed by GitHub 326f02df 6683adea

+734
+712
pkgs/by-name/co/cozette/default-codepoints.nix
··· 1 + [ 2 + # ISO-8859-1 3 + "U+0000" 4 + "U+0001" 5 + "U+0002" 6 + "U+0003" 7 + "U+0004" 8 + "U+0005" 9 + "U+0006" 10 + "U+0007" 11 + "U+0008" 12 + "U+0009" 13 + "U+000A" 14 + "U+000B" 15 + "U+000C" 16 + "U+000D" 17 + "U+000E" 18 + "U+000F" 19 + "U+0010" 20 + "U+0011" 21 + "U+0012" 22 + "U+0013" 23 + "U+0014" 24 + "U+0015" 25 + "U+0016" 26 + "U+0017" 27 + "U+0018" 28 + "U+0019" 29 + "U+001A" 30 + "U+001B" 31 + "U+001C" 32 + "U+001D" 33 + "U+001E" 34 + "U+001F" 35 + "U+0020" 36 + "U+0021" 37 + "U+0022" 38 + "U+0023" 39 + "U+0024" 40 + "U+0025" 41 + "U+0026" 42 + "U+0027" 43 + "U+0028" 44 + "U+0029" 45 + "U+002A" 46 + "U+002B" 47 + "U+002C" 48 + "U+002D" 49 + "U+002E" 50 + "U+002F" 51 + "U+0030" 52 + "U+0031" 53 + "U+0032" 54 + "U+0033" 55 + "U+0034" 56 + "U+0035" 57 + "U+0036" 58 + "U+0037" 59 + "U+0038" 60 + "U+0039" 61 + "U+003A" 62 + "U+003B" 63 + "U+003C" 64 + "U+003D" 65 + "U+003E" 66 + "U+003F" 67 + "U+0040" 68 + "U+0041" 69 + "U+0042" 70 + "U+0043" 71 + "U+0044" 72 + "U+0045" 73 + "U+0046" 74 + "U+0047" 75 + "U+0048" 76 + "U+0049" 77 + "U+004A" 78 + "U+004B" 79 + "U+004C" 80 + "U+004D" 81 + "U+004E" 82 + "U+004F" 83 + "U+0050" 84 + "U+0051" 85 + "U+0052" 86 + "U+0053" 87 + "U+0054" 88 + "U+0055" 89 + "U+0056" 90 + "U+0057" 91 + "U+0058" 92 + "U+0059" 93 + "U+005A" 94 + "U+005B" 95 + "U+005C" 96 + "U+005D" 97 + "U+005E" 98 + "U+005F" 99 + "U+0060" 100 + "U+0061" 101 + "U+0062" 102 + "U+0063" 103 + "U+0064" 104 + "U+0065" 105 + "U+0066" 106 + "U+0067" 107 + "U+0068" 108 + "U+0069" 109 + "U+006A" 110 + "U+006B" 111 + "U+006C" 112 + "U+006D" 113 + "U+006E" 114 + "U+006F" 115 + "U+0070" 116 + "U+0071" 117 + "U+0072" 118 + "U+0073" 119 + "U+0074" 120 + "U+0075" 121 + "U+0076" 122 + "U+0077" 123 + "U+0078" 124 + "U+0079" 125 + "U+007A" 126 + "U+007B" 127 + "U+007C" 128 + "U+007D" 129 + "U+007E" 130 + "U+007F" 131 + "U+0080" 132 + "U+0081" 133 + "U+0082" 134 + "U+0083" 135 + "U+0084" 136 + "U+0085" 137 + "U+0086" 138 + "U+0087" 139 + "U+0088" 140 + "U+0089" 141 + "U+008A" 142 + "U+008B" 143 + "U+008C" 144 + "U+008D" 145 + "U+008E" 146 + "U+008F" 147 + "U+0090" 148 + "U+0091" 149 + "U+0092" 150 + "U+0093" 151 + "U+0094" 152 + "U+0095" 153 + "U+0096" 154 + "U+0097" 155 + "U+0098" 156 + "U+0099" 157 + "U+009A" 158 + "U+009B" 159 + "U+009C" 160 + "U+009D" 161 + "U+009E" 162 + "U+009F" 163 + "U+00A0" 164 + "U+00A1" 165 + "U+00A2" 166 + "U+00A3" 167 + "U+00A4" 168 + "U+00A5" 169 + "U+00A6" 170 + "U+00A7" 171 + "U+00A8" 172 + "U+00A9" 173 + "U+00AA" 174 + "U+00AB" 175 + "U+00AC" 176 + "U+00AD" 177 + "U+00AE" 178 + "U+00AF" 179 + "U+00B0" 180 + "U+00B1" 181 + "U+00B2" 182 + "U+00B3" 183 + "U+00B4" 184 + "U+00B5" 185 + "U+00B6" 186 + "U+00B7" 187 + "U+00B8" 188 + "U+00B9" 189 + "U+00BA" 190 + "U+00BB" 191 + "U+00BC" 192 + "U+00BD" 193 + "U+00BE" 194 + "U+00BF" 195 + "U+00C0" 196 + "U+00C1" 197 + "U+00C2" 198 + "U+00C3" 199 + "U+00C4" 200 + "U+00C5" 201 + "U+00C6" 202 + "U+00C7" 203 + "U+00C8" 204 + "U+00C9" 205 + "U+00CA" 206 + "U+00CB" 207 + "U+00CC" 208 + "U+00CD" 209 + "U+00CE" 210 + "U+00CF" 211 + "U+00D0" 212 + "U+00D1" 213 + "U+00D2" 214 + "U+00D3" 215 + "U+00D4" 216 + "U+00D5" 217 + "U+00D6" 218 + "U+00D7" 219 + "U+00D8" 220 + "U+00D9" 221 + "U+00DA" 222 + "U+00DB" 223 + "U+00DC" 224 + "U+00DD" 225 + "U+00DE" 226 + "U+00DF" 227 + "U+00E0" 228 + "U+00E1" 229 + "U+00E2" 230 + "U+00E3" 231 + "U+00E4" 232 + "U+00E5" 233 + "U+00E6" 234 + "U+00E7" 235 + "U+00E8" 236 + "U+00E9" 237 + "U+00EA" 238 + "U+00EB" 239 + "U+00EC" 240 + "U+00ED" 241 + "U+00EE" 242 + "U+00EF" 243 + "U+00F0" 244 + "U+00F1" 245 + "U+00F2" 246 + "U+00F3" 247 + "U+00F4" 248 + "U+00F5" 249 + "U+00F6" 250 + "U+00F7" 251 + "U+00F8" 252 + "U+00F9" 253 + "U+00FA" 254 + "U+00FB" 255 + "U+00FC" 256 + "U+00FD" 257 + "U+00FE" 258 + "U+00FF" 259 + 260 + # Box Drawing and Block Elements 261 + "U+2500" 262 + "U+2501" 263 + "U+2502" 264 + "U+2503" 265 + "U+2504" 266 + "U+2505" 267 + "U+2506" 268 + "U+2507" 269 + "U+2508" 270 + "U+2509" 271 + "U+250A" 272 + "U+250B" 273 + "U+250C" 274 + "U+250D" 275 + "U+250E" 276 + "U+250F" 277 + "U+2510" 278 + "U+2511" 279 + "U+2512" 280 + "U+2513" 281 + "U+2514" 282 + "U+2515" 283 + "U+2516" 284 + "U+2517" 285 + "U+2518" 286 + "U+2519" 287 + "U+251A" 288 + "U+251B" 289 + "U+251C" 290 + "U+251D" 291 + "U+251E" 292 + "U+251F" 293 + "U+2520" 294 + "U+2521" 295 + "U+2522" 296 + "U+2523" 297 + "U+2524" 298 + "U+2525" 299 + "U+2526" 300 + "U+2527" 301 + "U+2528" 302 + "U+2529" 303 + "U+252A" 304 + "U+252B" 305 + "U+252C" 306 + "U+252D" 307 + "U+252E" 308 + "U+252F" 309 + "U+2530" 310 + "U+2531" 311 + "U+2532" 312 + "U+2533" 313 + "U+2534" 314 + "U+2535" 315 + "U+2536" 316 + "U+2537" 317 + "U+2538" 318 + "U+2539" 319 + "U+253A" 320 + "U+253B" 321 + "U+253C" 322 + "U+253D" 323 + "U+253E" 324 + "U+253F" 325 + "U+2540" 326 + "U+2541" 327 + "U+2542" 328 + "U+2543" 329 + "U+2544" 330 + "U+2545" 331 + "U+2546" 332 + "U+2547" 333 + "U+2548" 334 + "U+2549" 335 + "U+254A" 336 + "U+254B" 337 + "U+254C" 338 + "U+254D" 339 + "U+254E" 340 + "U+254F" 341 + "U+2550" 342 + "U+2551" 343 + "U+2552" 344 + "U+2553" 345 + "U+2554" 346 + "U+2555" 347 + "U+2556" 348 + "U+2557" 349 + "U+2558" 350 + "U+2559" 351 + "U+255A" 352 + "U+255B" 353 + "U+255C" 354 + "U+255D" 355 + "U+255E" 356 + "U+255F" 357 + "U+2560" 358 + "U+2561" 359 + "U+2562" 360 + "U+2563" 361 + "U+2564" 362 + "U+2565" 363 + "U+2566" 364 + "U+2567" 365 + "U+2568" 366 + "U+2569" 367 + "U+256A" 368 + "U+256B" 369 + "U+256C" 370 + "U+256D" 371 + "U+256E" 372 + "U+256F" 373 + "U+2570" 374 + "U+2571" 375 + "U+2572" 376 + "U+2573" 377 + "U+2574" 378 + "U+2575" 379 + "U+2576" 380 + "U+2577" 381 + "U+2578" 382 + "U+2579" 383 + "U+257A" 384 + "U+257B" 385 + "U+257C" 386 + "U+257D" 387 + "U+257E" 388 + "U+257F" 389 + "U+2580" 390 + "U+2581" 391 + "U+2582" 392 + "U+2583" 393 + "U+2584" 394 + "U+2585" 395 + "U+2586" 396 + "U+2587" 397 + "U+2588" 398 + "U+2589" 399 + "U+258A" 400 + "U+258B" 401 + "U+258C" 402 + "U+258D" 403 + "U+258E" 404 + "U+258F" 405 + "U+2590" 406 + "U+2591" 407 + "U+2592" 408 + "U+2593" 409 + #"U+2594" 410 + #"U+2595" 411 + "U+2596" 412 + "U+2597" 413 + "U+2598" 414 + "U+2599" 415 + "U+259A" 416 + "U+259B" 417 + "U+259C" 418 + "U+259D" 419 + "U+259E" 420 + "U+259F" 421 + 422 + # Braille Patterns 423 + #"U+2800" 424 + "U+2801" 425 + "U+2802" 426 + "U+2803" 427 + "U+2804" 428 + "U+2805" 429 + "U+2806" 430 + "U+2807" 431 + "U+2808" 432 + "U+2809" 433 + "U+280A" 434 + "U+280B" 435 + "U+280C" 436 + "U+280D" 437 + "U+280E" 438 + "U+280F" 439 + "U+2810" 440 + "U+2811" 441 + "U+2812" 442 + "U+2813" 443 + "U+2814" 444 + "U+2815" 445 + "U+2816" 446 + "U+2817" 447 + "U+2818" 448 + "U+2819" 449 + "U+281A" 450 + "U+281B" 451 + "U+281C" 452 + "U+281D" 453 + "U+281E" 454 + "U+281F" 455 + "U+2820" 456 + "U+2821" 457 + "U+2822" 458 + "U+2823" 459 + "U+2824" 460 + "U+2825" 461 + "U+2826" 462 + "U+2827" 463 + "U+2828" 464 + "U+2829" 465 + "U+282A" 466 + "U+282B" 467 + "U+282C" 468 + "U+282D" 469 + "U+282E" 470 + "U+282F" 471 + "U+2830" 472 + "U+2831" 473 + "U+2832" 474 + "U+2833" 475 + "U+2834" 476 + "U+2835" 477 + "U+2836" 478 + "U+2837" 479 + "U+2838" 480 + "U+2839" 481 + "U+283A" 482 + "U+283B" 483 + "U+283C" 484 + "U+283D" 485 + "U+283E" 486 + "U+283F" 487 + "U+2840" 488 + "U+2841" 489 + "U+2842" 490 + "U+2843" 491 + "U+2844" 492 + "U+2845" 493 + "U+2846" 494 + "U+2847" 495 + "U+2848" 496 + "U+2849" 497 + "U+284A" 498 + "U+284B" 499 + "U+284C" 500 + "U+284D" 501 + "U+284E" 502 + "U+284F" 503 + "U+2850" 504 + "U+2851" 505 + "U+2852" 506 + "U+2853" 507 + "U+2854" 508 + "U+2855" 509 + "U+2856" 510 + "U+2857" 511 + "U+2858" 512 + "U+2859" 513 + "U+285A" 514 + "U+285B" 515 + "U+285C" 516 + "U+285D" 517 + "U+285E" 518 + "U+285F" 519 + "U+2860" 520 + "U+2861" 521 + "U+2862" 522 + "U+2863" 523 + "U+2864" 524 + "U+2865" 525 + "U+2866" 526 + "U+2867" 527 + "U+2868" 528 + "U+2869" 529 + "U+286A" 530 + "U+286B" 531 + "U+286C" 532 + "U+286D" 533 + "U+286E" 534 + "U+286F" 535 + "U+2870" 536 + "U+2871" 537 + "U+2872" 538 + "U+2873" 539 + "U+2874" 540 + "U+2875" 541 + "U+2876" 542 + "U+2877" 543 + "U+2878" 544 + "U+2879" 545 + "U+287A" 546 + "U+287B" 547 + "U+287C" 548 + "U+287D" 549 + "U+287E" 550 + "U+287F" 551 + "U+2880" 552 + "U+2881" 553 + "U+2882" 554 + "U+2883" 555 + "U+2884" 556 + "U+2885" 557 + "U+2886" 558 + "U+2887" 559 + "U+2888" 560 + "U+2889" 561 + "U+288A" 562 + "U+288B" 563 + "U+288C" 564 + "U+288D" 565 + "U+288E" 566 + "U+288F" 567 + "U+2890" 568 + "U+2891" 569 + "U+2892" 570 + "U+2893" 571 + "U+2894" 572 + "U+2895" 573 + "U+2896" 574 + "U+2897" 575 + "U+2898" 576 + "U+2899" 577 + "U+289A" 578 + "U+289B" 579 + "U+289C" 580 + "U+289D" 581 + "U+289E" 582 + "U+289F" 583 + "U+28A0" 584 + "U+28A1" 585 + "U+28A2" 586 + "U+28A3" 587 + "U+28A4" 588 + "U+28A5" 589 + "U+28A6" 590 + "U+28A7" 591 + "U+28A8" 592 + "U+28A9" 593 + "U+28AA" 594 + "U+28AB" 595 + "U+28AC" 596 + "U+28AD" 597 + "U+28AE" 598 + "U+28AF" 599 + "U+28B0" 600 + "U+28B1" 601 + "U+28B2" 602 + "U+28B3" 603 + "U+28B4" 604 + "U+28B5" 605 + "U+28B6" 606 + "U+28B7" 607 + "U+28B8" 608 + "U+28B9" 609 + "U+28BA" 610 + "U+28BB" 611 + "U+28BC" 612 + "U+28BD" 613 + "U+28BE" 614 + "U+28BF" 615 + "U+28C0" 616 + "U+28C1" 617 + "U+28C2" 618 + "U+28C3" 619 + "U+28C4" 620 + "U+28C5" 621 + "U+28C6" 622 + "U+28C7" 623 + "U+28C8" 624 + "U+28C9" 625 + "U+28CA" 626 + "U+28CB" 627 + "U+28CC" 628 + "U+28CD" 629 + "U+28CE" 630 + "U+28CF" 631 + "U+28D0" 632 + "U+28D1" 633 + "U+28D2" 634 + "U+28D3" 635 + "U+28D4" 636 + "U+28D5" 637 + "U+28D6" 638 + "U+28D7" 639 + "U+28D8" 640 + "U+28D9" 641 + "U+28DA" 642 + "U+28DB" 643 + "U+28DC" 644 + "U+28DD" 645 + "U+28DE" 646 + "U+28DF" 647 + "U+28E0" 648 + "U+28E1" 649 + "U+28E2" 650 + "U+28E3" 651 + "U+28E4" 652 + "U+28E5" 653 + "U+28E6" 654 + "U+28E7" 655 + "U+28E8" 656 + "U+28E9" 657 + "U+28EA" 658 + "U+28EB" 659 + "U+28EC" 660 + "U+28ED" 661 + "U+28EE" 662 + "U+28EF" 663 + "U+28F0" 664 + "U+28F1" 665 + "U+28F2" 666 + "U+28F3" 667 + "U+28F4" 668 + "U+28F5" 669 + "U+28F6" 670 + "U+28F7" 671 + "U+28F8" 672 + "U+28F9" 673 + "U+28FA" 674 + "U+28FB" 675 + "U+28FC" 676 + "U+28FD" 677 + "U+28FE" 678 + "U+28FF" 679 + 680 + # Superscripts and Subscripts 681 + "U+2070" 682 + "U+2074" 683 + "U+2075" 684 + "U+2076" 685 + "U+2077" 686 + "U+2078" 687 + "U+2079" 688 + 689 + "U+2080" 690 + "U+2081" 691 + "U+2082" 692 + "U+2083" 693 + "U+2084" 694 + "U+2085" 695 + "U+2086" 696 + "U+2087" 697 + "U+2088" 698 + "U+2089" 699 + 700 + # Powerline and Extra Symbols 701 + "U+E0A0" 702 + "U+E0A1" 703 + "U+E0A2" 704 + "U+E0B0" 705 + "U+E0B1" 706 + "U+E0B2" 707 + "U+E0B3" 708 + 709 + "U+E0A3" # column number 710 + "U+E0B4" # right half circle 711 + "U+E0B6" # left half circle } 712 + ]
+22
pkgs/by-name/co/cozette/package.nix
··· 2 2 lib, 3 3 stdenvNoCC, 4 4 fetchzip, 5 + writeText, 6 + bdf2psf, 7 + codepoints ? (import ./default-codepoints.nix), 5 8 }: 6 9 10 + let 11 + codepoints_set = writeText "codepoints.set" (builtins.concatStringsSep "\n" codepoints); 12 + in 7 13 stdenvNoCC.mkDerivation rec { 8 14 pname = "cozette"; 9 15 version = "1.29.0"; ··· 15 21 hash = "sha256-DHUnCzp6c3d57cfkO2kH+czXRiqRWn6DBTo9NVTghQ0="; 16 22 }; 17 23 24 + nativeBuildInputs = [ bdf2psf ]; 25 + 26 + postBuild = '' 27 + # Confine Powerline left divider symbols to strictly 6 pixels wide 28 + awk -i inplace 'BEGIN { l=-128 } $1=="ENCODING"&&($2==57520||$2==57521||$2==57524) { l=FNR } l+4<FNR&&FNR<=l+17 { printf("%02X\n", and(lshift(strtonum("0x"$1), 1), 0xFF)); next; }{ print }' cozette.bdf 29 + awk -i inplace 'BEGIN { l=-128 } $1=="ENCODING"&&($2==57520||$2==57521||$2==57524) { l=FNR } l+4<FNR&&FNR<=l+30 { printf("%04X\n", and(lshift(strtonum("0x"$1), 1), 0xFFFF)); next; }{ print }' cozette_hidpi.bdf 30 + 31 + # Fix for bdf2psf limitation (See https://github.com/slavfox/Cozette/issues/122#issuecomment-2165328416) 32 + sed -i -e 's/^BBX [2-8]/BBX 9/g' cozette_hidpi.bdf 33 + 34 + bdf2psf --fb cozette.bdf ${bdf2psf}/share/bdf2psf/standard.equivalents ${codepoints_set} 512 cozette6x13.psfu 35 + bdf2psf --fb cozette_hidpi.bdf ${bdf2psf}/share/bdf2psf/standard.equivalents ${codepoints_set} 512 cozette12x26.psfu 36 + ''; 37 + 18 38 installPhase = '' 19 39 runHook preInstall 20 40 ··· 24 44 install -Dm644 *.otb -t $out/share/fonts/misc 25 45 install -Dm644 *.woff -t $out/share/fonts/woff 26 46 install -Dm644 *.woff2 -t $out/share/fonts/woff2 47 + 48 + install -Dm644 *.psfu -t "$out/share/consolefonts/" 27 49 28 50 runHook postInstall 29 51 '';