since fonts are already ethscribed on mainnet:
// === Mainnet (without esip6)
// highscript woff2 gzip = 0x5296ef8b8fb4168b57a09813622f7bc8198a9456b57886e47e1129475ef88d4a
// highscript otf gzip = 0xcbf0c8a0c61f8018f9ad186e4aaa300faad892c6cbfa398841814f02c3bdea30
// lowscript woff2 gzip = 0x6c588b716ba2c2eda5fc12acea9914a103f0bfeb0bb47ab2072cf523fa2339a8
// lowscript otf gzip = 0x665ba2d452904e03e1943e0800af42468e107b614ee4ec59d377a66ffbe5ea5d
you can ethscribe on your own:
- Rename
.env.exampleto.env - populate
PRIVATE_KEYand setMAINNET=true, andGZIPPED=trueor false for plain - update the
utils.tsto have;rule=esip6-data:${mime};base64,todata:${mime};rule=esip6;base64, - run
bun run ethscribe
bun run ethscribe
To use them in webpages, you just add them through link tags in the <head> section of your HTML document
<link rel="preload" href="/ethscriptions/{id}/data" as="font" crossorigin="anonymous" />or through CSS with @font-face (could be slow to low without prefetching and/or caching)
@font-face {
font-family: "High Blockscript";
font-style: normal;
font-weight: 400;
font-display: swap;
src:
/*
in case this css file is also ethscribed,
the link _should_ strip the `https:` and hostname of the indexer,
like so /ethscriptions/{id}/data or if it is ESIP-9 compliant /ethscriptions/{id}/content
*/
url("link to high blockscript woff2 ethscription") format("woff2"),
url("link to high blockscript otf ethscription") format("opentype");
/*url("/fonts/high-blockscript.woff2") format("woff2"),
url("/fonts/high-blockscript.otf") format("opentype");*/
}
@font-face {
font-family: "Low Blockscript";
src: /* same as above for low-blockscript */
url("https://sepoplia.api.calldata.space/ethscriptions/0x0330e1fa0186056902a678ccacef184a8fb0312a653ae4e0efc78765226c2a60/content") format("woff2"),
url("https://sepoplia.api.calldata.space/ethscriptions/0xc5a5347cb02f065ae48428249b6906da832325f00d89bd9cd15abdd277acbf65/content") format("opentype");
}ethscribed
// === Sepolia
// highscript woff2 gzip = 0x2f8397abd2d4244c3c2196fcabae519ef625ac292eeeccbbf632b01252366702
// highscript otf gzip = 0x9dec27a0a69048775add0de1577cd80761a2d6e4dcbf49482e179bea12ab52c7
// lowscript woff2 gzip = 0x0330e1fa0186056902a678ccacef184a8fb0312a653ae4e0efc78765226c2a60
// lowscript otf gzip = 0xc5a5347cb02f065ae48428249b6906da832325f00d89bd9cd15abdd277acbf65
// highscript woff2 NO-GZIP = 0x827865efd69b9fe282b1a6dc7ae39ccd280712c2796631c416edf7181e7b1d73
// highscript otf NO-GZIP = 0xc61bbc261fd86915572c42ce1819dd9ebeaffac399071d0580c7aee8889d0ad2
// lowscript woff2 NO-GZIP = 0x977b486a8251cb3c1261b47a43504c5ddc2ca7146a106de2b476ff78beb90d53
// lowscript otf NO-GZIP = 0xba4a9f9df378b50651dd4cb2f1c812754f25e04c55baf729230a235899ea2be0
// === Mainnet
// highscript woff2 gzip = 0x5296ef8b8fb4168b57a09813622f7bc8198a9456b57886e47e1129475ef88d4a
// highscript otf gzip = 0xcbf0c8a0c61f8018f9ad186e4aaa300faad892c6cbfa398841814f02c3bdea30
// lowscript woff2 gzip = 0x665ba2d452904e03e1943e0800af42468e107b614ee4ec59d377a66ffbe5ea5d
// lowscript otf gzip = 0x50c42bd4696c50868b147396a707ede771abb4bd10acbfdd1af00ef186e6187f