3.5.0 • Published 3 years ago

wavefont v3.5.0

Weekly downloads
5
License
MIT
Repository
github
Last release
3 years ago

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: 10;
	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:

  • 0-9 chars are for simplified manual input with step 10 (bar height = number).
  • a-zA-Z for manual input with step 2, softened at edges a and Z (bar height = number of letter).
  • U+0100-017F for 0..127 values with step 1 (char = String.fromCharCode(0x100 + value)).

Variable axes

TagRangeDefaultMeaning
wght1-1000400Bar width, or boldness.
ROND0-100100Border radius, or roundness (percent).
YELA-100-100-100Alignment: 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

  • Ranges, values and width is compatible with linefont, so fonts can be switched preserving visual coherency.
  • Visible charcodes fall under marking characters unicode category, ie. recognized as word by regexp and can be selected with Ctrl + or double click. Eg. waveform segments separated by or - are selectable by double click.
  • Characters outside of visible ranges are clipped to 0, eg. , \t etc.
  • -–._* map to 1 value, | maps to max value, ▁▂▃▄▅▆▇█ map to corresponding bars.
  • Accent acute  ́ (U+0301) shifts bar 1-step up, circumflex accent  ̂ (U+0302) 10-steps up. Eg. \u0101\u0302\u0302\u0301\u0301\u0301 shifts 23 steps up.
  • Accent grave  ̀ (U+0300) shifts bar 1-step down, caron  ̌ (U+030C) shifts 10 steps down, eg. \u0101\u030c\u0300\u0300\u0300 shifts 13 steps down.
  • Caret span is -20..120, so line-height = 1.4 is minimal non-overlapping selection.

JS package

To facilitate calculation, wavefont exposes a function that calculates string from values.

import wf from 'wavefont'

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

Building

make build

See also

  • linefont − font-face for rendering linear data.

References

3.4.0

3 years ago

3.5.0

3 years ago

4.0.0

3 years ago

3.3.1

3 years ago

3.3.0

3 years ago

3.2.0

3 years ago

3.1.1

3 years ago

3.1.0

3 years ago

3.0.0

3 years ago

1.2.2

10 years ago

1.2.1

10 years ago

1.2.0

10 years ago

1.1.4

10 years ago

1.1.3

10 years ago

1.1.2

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago