Files
Iosevka/glyphs/symbol-braille.ptl
T

73 lines
2.6 KiB
Plaintext
Executable File

###### Brailles symbols
$$include '../meta/macros.ptl'
import [mix linreg clamp fallback] from '../support/utils'
import [designParameters] from '../meta/aesthetics'
import [braillePatterns] from './glyph-data.json'
export : define [apply] : begin
glyph-module-entry commonShapes overmarks
if recursive : return nothing
local leftMiddle : MIDDLE - (0.25 * WIDTH)
local rightMiddle : MIDDLE + (0.25 * WIDTH)
local offsetY : 0.25 * (parenMid - parenTop)
local brailleStress : 0.5 * [adviceBlackness 3.375]
local brailleDotsRadius : PERIODRADIUS * [Math.min 1 (brailleStress / HALFSTROKE)]
### Basics / Templates
sketch # brailleBlank
set-width WIDTH
save 'brailleBlank' 0x2800
sketch # braille1
include : DotAt (leftMiddle) (parenMid - 3 * offsetY) brailleDotsRadius
save 'braille1' 0x2801
sketch # braille2
include : DotAt (leftMiddle) (parenMid - 1 * offsetY) brailleDotsRadius
save 'braille2' 0x2802
sketch # braille3
include : DotAt (leftMiddle) (parenMid + 1 * offsetY) brailleDotsRadius
save 'braille3' 0x2804
sketch # braille4
include : DotAt (leftMiddle) (parenMid + 3 * offsetY) brailleDotsRadius
save 'braille4' 0x2840
sketch # braille5
include : DotAt (rightMiddle) (parenMid - 3 * offsetY) brailleDotsRadius
save 'braille5' 0x2808
sketch # braille6
include : DotAt (rightMiddle) (parenMid - 1 * offsetY) brailleDotsRadius
save 'braille6' 0x2810
sketch # braille7
include : DotAt (rightMiddle) (parenMid + 1 * offsetY) brailleDotsRadius
save 'braille7' 0x2820
sketch # braille8
include : DotAt (rightMiddle) (parenMid + 3 * offsetY) brailleDotsRadius
save 'braille8' 0x2880
### Template
define [build-braille-patterns archive] : if [not recursive] : begin
foreach [{assignments unicode} : items-of archive] : sketch
foreach [b : items-of assignments] : include glyphs.("braille" + b)
set currentGlyph.cmpPriority (-101)
save ("braille" + [assignments.join '']) unicode
### Inheriting characters
build-braille-patterns braillePatterns
set glyphs.braille4.cmpPriority 101
set glyphs.braille34.cmpPriority 102
set glyphs.braille3.cmpPriority 101
set glyphs.braille234.cmpPriority 103
set glyphs.braille24.cmpPriority 102
set glyphs.braille23.cmpPriority 102
set glyphs.braille2.cmpPriority 101
set glyphs.braille1234.cmpPriority 104
set glyphs.braille123.cmpPriority 103
set glyphs.braille124.cmpPriority 103
set glyphs.braille134.cmpPriority 103
set glyphs.braille13.cmpPriority 102
set glyphs.braille12.cmpPriority 102
set glyphs.braille14.cmpPriority 102
set glyphs.braille1.cmpPriority 101