- Etcetera Type Co - Open source variable fonts, also check out their GitHub
- Future Fonts - Lots of cheap work-in-progress fonts with wide variation
- Pangram Pangram
- Atipo Foundry
- Good Type Foundary
- Colophon
- Klim
- ECAL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// makes use of tagged template literals | |
const compileTemplate = (strings: TemplateStringsArray, ...expr: string[]) => { | |
return (replacements: Record<string, any>) => { | |
// convert ${'whatever'} instances to array of values | |
const values = expr.map(key => replacements[key] ?? key); | |
// rebuild string with replaced values | |
return strings.reduce((result, part, i) => result + part + (values[i] ?? ''), ''); | |
} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* // hash content | |
* // content must be an uint8 typed array | |
* const hash = new Sha256(); | |
* hash.update(content) | |
* // get digest as uint8 typed array | |
* const digest = hash.digest(); | |
* // or get digest as hex string | |
* const hex = hash.hexDigest(); | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const POLYNOMIAL = -306674912; | |
let crc32_table: Int32Array = undefined; | |
export function Crc32(bytes: Uint8Array, crc=0xFFFFFFFF) { | |
if (crc32_table === undefined) | |
calcTable(); | |
for (let i = 0; i < bytes.length; ++i) | |
crc = crc32_table[(crc ^ bytes[i]) & 0xff] ^ (crc >>> 8); | |
return (crc ^ -1) >>> 0; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* // hash content | |
* // content must be an uint8 typed array | |
* const hash = new Sha1(); | |
* hash.update(content) | |
* // get digest as uint8 typed array | |
* const digest = hash.digest(); | |
* // or get digest as hex string | |
* const hex = hash.hexDigest(); | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function decode_filename(string $filename) | |
{ | |
$bytes = base32_decode($filename); | |
// Convert to byte string | |
$bin = join('', array_map('chr', $bytes)); | |
// Unpack data | |
// Hex FSID (9 bytes, 18 chars) | Creation timestamp (uint32) | Modified timestamp (uint32) | |
return unpack('H18fsid/Vcreated/Vmodified', $bin); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
checksum_dict = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' | |
def calc_check_digit(filename): | |
sumc = int(filename[0:2], 16) | |
for i in range(1, 16): | |
char = ord(filename[i]) | |
sumc = (sumc + char) % 256 | |
return checksum_dict[sumc % len(checksum_dict)] | |
def set_check_digit(filename): |
If you get a message warning you about missing DLLs MSVCP140.dll
or VCRUNTIME140.dll
when starting the app, you will need to install vc_redist.x64.exe
from this page:
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
This will show up if you try running Colors Live on an older version of Windows. Windows 10 is the only version currently supported, however support for older versions may be added eventually.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import zipfile | |
import re | |
import urllib.request | |
from pathlib import Path | |
from sys import argv | |
if len(argv) < 3: | |
print('usage:') | |
print('python3 sazrip.py < input.saz > < output dir >') | |
exit() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const dnsServer = require('dnsd'); | |
const { Resolver } = require('dns').promises; | |
const overrides = [ | |
{ name: 'game-prod.indreams.me', type: 'A', addresses: [`52.213.80.7`, `54.194.121.14`, `34.251.37.65`] } | |
]; | |
const resolver = new Resolver(); | |
resolver.setServers(['1.1.1.1']); |