dy / wavefont

Typeface for rendering waveform/data
https://dy.github.io/wavefont/scripts/
SIL Open Font License 1.1
416 stars 7 forks source link
afdko barchart chart datavis font opentype spectrum typeface unicode-table variable-fonts waveform

wavefont build

A typeface for rendering vertical bars data: waveforms, spectrums, diagrams, histograms, columns etc.

Playground  •  Google fonts  •  V-fonts  •   Wavearea

Usage

Place Wavefont[ROND,YELA,wght].woff2 into your project directory and use this code:

<style>
@font-face {
    font-family: wavefont;
    font-display: block;
    src: url(./Wavefont[ROND,YELA,wght].woff2) format('woff2');
}
.wavefont {
    --wght: 400;
    font-family: wavefont;
    font-variation-settings: 'wght' var(--wght), 'ROND' 30, 'YELA' 0;
}
</style>

<!-- Set values manually -->
<textarea id="waveform" class="wavefont" cols="100">
abcdefghijklmnopqrstuvwwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
</textarea>

<script>
// Set values programmatically (more precise)
waveform.textContent = Array.from({length: 100}, (_,i) => String.fromCharCode(0x100 + i)).join('')
</script>

Ranges

Wavefont bars correspond to values from 0 to 100, assigned to different characters:

Variable axes

Tag Range Default Meaning
wght 1-1000 400 Bar width, or boldness.
ROND 0-100 100 Border radius, or roundness (percent).
YELA -100-100 -100 Alignment: bottom, center or top.

To adjust axes via CSS:

.wavefont {
  font-variation-settings: 'wght' var(--wght, 40), 'ROND' var(--rond, 0), 'YELA' var(--align, 0);
  letter-spacing: 1ch; /* 1ch unit === 1 bar width */
}

Features

JS package

Optional wavefont package exposes a function that calculates string from values for your convenience.

import wf from 'wavefont'

// get characters for values from 0..127 range
wf(0, 1, 50, 99, 127, ...) // ĀāIJţŤ...

Building

make build

See also

References

🕉