bliss-svg-builder
Version:
Generates SVG code for Bliss (Blissymbolics) text using a Domain-Specific Language.
493 lines (482 loc) • 22.3 kB
JavaScript
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import * as sc from "./bliss-shape-creators.js";
import { charData } from "./bliss-character-data.js";
const blissElementDefinitions = {
'H': sc.createHeart(8),
'E': sc.createEar(8),
'F': sc.createFiber(8),
'DOT': sc.createDot(0.5, 0.333),
'SDOT': sc.createDot(0.5, 0),
'COMMA': sc.createComma(0.5, 0.333),
'C8': sc.createCircle(4),
'C4': sc.createCircle(2),
'C2': sc.createCircle(1),
'C1': sc.createCircle(0.5),
'HC8N': sc.createHalfCircle(4, 'N'),
'HC4N': sc.createHalfCircle(2, 'N'),
'HC2N': sc.createHalfCircle(1, 'N'),
'HC1N': sc.createHalfCircle(0.5, 'N'),
'HC.5N': sc.createHalfCircle(0.25, 'N'),
'HC8S': sc.createHalfCircle(4, 'S'),
'HC4S': sc.createHalfCircle(2, 'S'),
'HC2S': sc.createHalfCircle(1, 'S'),
'HC1S': sc.createHalfCircle(0.5, 'S'),
'HC.5S': sc.createHalfCircle(0.25, 'S'),
'HC8W': sc.createHalfCircle(4, 'W'),
'HC4W': sc.createHalfCircle(2, 'W'),
'HC2W': sc.createHalfCircle(1, 'W'),
'HC1W': sc.createHalfCircle(0.5, 'W'),
'HC.5W': sc.createHalfCircle(0.25, 'W'),
'HC8E': sc.createHalfCircle(4, 'E'),
'HC4E': sc.createHalfCircle(2, 'E'),
'HC2E': sc.createHalfCircle(1, 'E'),
'HC1E': sc.createHalfCircle(0.5, 'E'),
'HC.5E': sc.createHalfCircle(0.25, 'E'),
'QC4NW': sc.createQuarterCircle(4, 'NW'),
'QC2NW': sc.createQuarterCircle(2, 'NW'),
'QC1NW': sc.createQuarterCircle(1, 'NW'),
'QC.5NW': sc.createQuarterCircle(0.5, 'NW'),
'QC4NE': sc.createQuarterCircle(4, 'NE'),
'QC2NE': sc.createQuarterCircle(2, 'NE'),
'QC1NE': sc.createQuarterCircle(1, 'NE'),
'QC.5NE': sc.createQuarterCircle(0.5, 'NE'),
'QC4SW': sc.createQuarterCircle(4, 'SW'),
'QC2SW': sc.createQuarterCircle(2, 'SW'),
'QC1SW': sc.createQuarterCircle(1, 'SW'),
'QC.5SW': sc.createQuarterCircle(0.5, 'SW'),
'QC4SE': sc.createQuarterCircle(4, 'SE'),
'QC2SE': sc.createQuarterCircle(2, 'SE'),
'QC1SE': sc.createQuarterCircle(1, 'SE'),
'QC.5SE': sc.createQuarterCircle(0.5, 'SE'),
'OC8NW': sc.createOpenCircle(4, 'NW'),
'OC4NW': sc.createOpenCircle(2, 'NW'),
'OC2NW': sc.createOpenCircle(1, 'NW'),
'OC1NW': sc.createOpenCircle(0.5, 'NW'),
'OC8NE': sc.createOpenCircle(4, 'NE'),
'OC4NE': sc.createOpenCircle(2, 'NE'),
'OC2NE': sc.createOpenCircle(1, 'NE'),
'OC1NE': sc.createOpenCircle(0.5, 'NE'),
'OC8SW': sc.createOpenCircle(4, 'SW'),
'OC4SW': sc.createOpenCircle(2, 'SW'),
'OC2SW': sc.createOpenCircle(1, 'SW'),
'OC1SW': sc.createOpenCircle(0.5, 'SW'),
'OC8SE': sc.createOpenCircle(4, 'SE'),
'OC4SE': sc.createOpenCircle(2, 'SE'),
'OC2SE': sc.createOpenCircle(1, 'SE'),
'OC1SE': sc.createOpenCircle(0.5, 'SE'),
'W8N': sc.createWave(8, 'N'),
'W8S': sc.createWave(8, 'S'),
'W8W': sc.createWave(8, 'W'),
'W8E': sc.createWave(8, 'E'),
'HW8N': sc.createHalfWave(8, 'N'),
'HW4N': sc.createHalfWave(4, 'N'),
'HW2N': sc.createHalfWave(2, 'N'),
'HW8S': sc.createHalfWave(8, 'S'),
'HW4S': sc.createHalfWave(4, 'S'),
'HW2S': sc.createHalfWave(2, 'S'),
'HW8W': sc.createHalfWave(8, 'W'),
'HW4W': sc.createHalfWave(4, 'W'),
'HW2W': sc.createHalfWave(2, 'W'),
'HW8E': sc.createHalfWave(8, 'E'),
'HW4E': sc.createHalfWave(4, 'E'),
'HW2E': sc.createHalfWave(2, 'E'),
'HQW4NW': sc.createHorizontalQuarterWave(4, 'NW'),
'HQW2NW': sc.createHorizontalQuarterWave(2, 'NW'),
'HQW1NW': sc.createHorizontalQuarterWave(1, 'NW'),
'HQW4NE': sc.createHorizontalQuarterWave(4, 'NE'),
'HQW2NE': sc.createHorizontalQuarterWave(2, 'NE'),
'HQW1NE': sc.createHorizontalQuarterWave(1, 'NE'),
'HQW4SW': sc.createHorizontalQuarterWave(4, 'SW'),
'HQW2SW': sc.createHorizontalQuarterWave(2, 'SW'),
'HQW1SW': sc.createHorizontalQuarterWave(1, 'SW'),
'HQW4SE': sc.createHorizontalQuarterWave(4, 'SE'),
'HQW2SE': sc.createHorizontalQuarterWave(2, 'SE'),
'HQW1SE': sc.createHorizontalQuarterWave(1, 'SE'),
'VQW4NW': sc.createVerticalQuarterWave(4, 'NW'),
'VQW2NW': sc.createVerticalQuarterWave(2, 'NW'),
'VQW1NW': sc.createVerticalQuarterWave(1, 'NW'),
'VQW4NE': sc.createVerticalQuarterWave(4, 'NE'),
'VQW2NE': sc.createVerticalQuarterWave(2, 'NE'),
'VQW1NE': sc.createVerticalQuarterWave(1, 'NE'),
'VQW4SW': sc.createVerticalQuarterWave(4, 'SW'),
'VQW2SW': sc.createVerticalQuarterWave(2, 'SW'),
'VQW1SW': sc.createVerticalQuarterWave(1, 'SW'),
'VQW4SE': sc.createVerticalQuarterWave(4, 'SE'),
'VQW2SE': sc.createVerticalQuarterWave(2, 'SE'),
'VQW1SE': sc.createVerticalQuarterWave(1, 'SE'),
'VL12': sc.createVerticalLine(12),
'VL10': sc.createVerticalLine(10),
'VL8': sc.createVerticalLine(8),
'VL6': sc.createVerticalLine(6),
'VL4': sc.createVerticalLine(4),
'VL3': sc.createVerticalLine(3),
'VL2': sc.createVerticalLine(2),
'VL1.5': sc.createVerticalLine(1.5),
'VL1.25': sc.createVerticalLine(1.25),
'VL1': sc.createVerticalLine(1),
'VL.5': sc.createVerticalLine(0.5),
'VL.25': sc.createVerticalLine(0.25),
'HL16': sc.createHorizontalLine(16),
'HL15': sc.createHorizontalLine(15),
'HL14': sc.createHorizontalLine(14),
'HL12': sc.createHorizontalLine(12),
'HL10': sc.createHorizontalLine(10),
'HL8': sc.createHorizontalLine(8),
'HL6': sc.createHorizontalLine(6),
'HL4': sc.createHorizontalLine(4),
'HL3': sc.createHorizontalLine(3),
'HL2': sc.createHorizontalLine(2),
'HL1.5': sc.createHorizontalLine(1.5),
'HL1': sc.createHorizontalLine(1),
'HL.5': sc.createHorizontalLine(0.5),
'HL.25': sc.createHorizontalLine(0.25),
'DL12N': sc.createAscendingDiagonalLine(12, 12),
'DL8N': sc.createAscendingDiagonalLine(8, 8),
'DL6N': sc.createAscendingDiagonalLine(6, 6),
'DL5N': sc.createAscendingDiagonalLine(5, 5),
'DL4N': sc.createAscendingDiagonalLine(4, 4),
'DL3N': sc.createAscendingDiagonalLine(3, 3),
'DL2N': sc.createAscendingDiagonalLine(2, 2),
'DL1.5N': sc.createAscendingDiagonalLine(1.5, 1.5),
'DL1N': sc.createAscendingDiagonalLine(1, 1),
"DL.5N": sc.createAscendingDiagonalLine(0.5, 0.5),
'DL2-3N': sc.createAscendingDiagonalLine(2, 3),
'DL1-1.5N': sc.createAscendingDiagonalLine(1, 1.5),
'DL3-2N': sc.createAscendingDiagonalLine(3, 2),
'DL1.5-1N': sc.createAscendingDiagonalLine(1.5, 1),
'DL4-8N': sc.createAscendingDiagonalLine(4, 8),
'DL2-4N': sc.createAscendingDiagonalLine(2, 4),
'DL1-2N': sc.createAscendingDiagonalLine(1, 2),
'DL.5-1N': sc.createAscendingDiagonalLine(0.5, 1),
'DL8-4N': sc.createAscendingDiagonalLine(8, 4),
'DL4-2N': sc.createAscendingDiagonalLine(4, 2),
'DL2-1N': sc.createAscendingDiagonalLine(2, 1),
'DL1-.5N': sc.createAscendingDiagonalLine(1, 0.5),
'DL1-4N': sc.createAscendingDiagonalLine(1, 4),
'DL.5-2N': sc.createAscendingDiagonalLine(0.5, 2),
'DL4-1N': sc.createAscendingDiagonalLine(4, 1),
'DL2-.5N': sc.createAscendingDiagonalLine(2, 0.5),
'DL12S': sc.createDescendingDiagonalLine(12, 12),
'DL8S': sc.createDescendingDiagonalLine(8, 8),
'DL6S': sc.createDescendingDiagonalLine(6, 6),
'DL5S': sc.createDescendingDiagonalLine(5, 5),
'DL4S': sc.createDescendingDiagonalLine(4, 4),
'DL3S': sc.createDescendingDiagonalLine(3, 3),
'DL2S': sc.createDescendingDiagonalLine(2, 2),
'DL1.5S': sc.createDescendingDiagonalLine(1.5, 1.5),
'DL1S': sc.createDescendingDiagonalLine(1, 1),
'DL.5S': sc.createDescendingDiagonalLine(0.5, 0.5),
'DL2,3S': sc.createDescendingDiagonalLine(2, 3),
'DL1-1.5S': sc.createDescendingDiagonalLine(1, 1.5),
'DL3-2S': sc.createDescendingDiagonalLine(3, 2),
'DL1.5-1S': sc.createDescendingDiagonalLine(1.5, 1),
'DL4-8S': sc.createDescendingDiagonalLine(4, 8),
'DL2-4S': sc.createDescendingDiagonalLine(2, 4),
'DL1-2S': sc.createDescendingDiagonalLine(1, 2),
'DL.5-1S': sc.createDescendingDiagonalLine(0.5, 1),
'DL8-4S': sc.createDescendingDiagonalLine(8, 4),
'DL4-2S': sc.createDescendingDiagonalLine(4, 2),
'DL2-1S': sc.createDescendingDiagonalLine(2, 1),
'DL1-.5S': sc.createDescendingDiagonalLine(1, 0.5),
'DL1-4S': sc.createDescendingDiagonalLine(1, 4),
'DL.5-2S': sc.createDescendingDiagonalLine(0.5, 2),
'DL4-1S': sc.createDescendingDiagonalLine(4, 1),
'DL2-.5S': sc.createDescendingDiagonalLine(2, 0.5),
'DLOC8NW': sc.createDiagonalLineOutsideCircle(8, 'NW'),
'DLOC8NE': sc.createDiagonalLineOutsideCircle(8, 'NE'),
'DLOC8SW': sc.createDiagonalLineOutsideCircle(8, 'SW'),
'DLOC8SE': sc.createDiagonalLineOutsideCircle(8, 'SE'),
'DLOC4NW': sc.createDiagonalLineOutsideCircle(4, 'NW'),
'DLOC4NE': sc.createDiagonalLineOutsideCircle(4, 'NE'),
'DLOC4SW': sc.createDiagonalLineOutsideCircle(4, 'SW'),
'DLOC4SE': sc.createDiagonalLineOutsideCircle(4, 'SE'),
'DLIC8N': sc.createAscendingDiagonalLineInsideCircle(4),
'DLIC4N': sc.createAscendingDiagonalLineInsideCircle(2),
'DLIC8S': sc.createDescendingDiagonalLineInsideCircle(4),
'DLIC4S': sc.createDescendingDiagonalLineInsideCircle(2),
'RA8NW': { codeString: "VL8;HL8" },
'RA4NW': { codeString: "VL4;HL4" },
'RA3NW': { codeString: "VL3;HL3" },
'RA2NW': { codeString: "VL2;HL2" },
'RA1.5NW': { codeString: "VL1.5;HL1.5" },
'RA1NW': { codeString: "VL1;HL1" },
'RA8NE': { codeString: "HL8;VL8:8,0" },
'RA4NE': { codeString: "HL4;VL4:4,0" },
'RA3NE': { codeString: "HL3;VL3:3,0" },
'RA2NE': { codeString: "HL2;VL2:2,0" },
'RA1.5NE': { codeString: "HL1.5;VL1.5:1.5,0" },
'RA1NE': { codeString: "HL1;VL1:1,0" },
'RA8SW': { codeString: "VL8;HL8:0,8" },
'RA4SW': { codeString: "VL4;HL4:0,4" },
'RA3SW': { codeString: "VL3;HL3:0,3" },
'RA2SW': { codeString: "VL2;HL2:0,2" },
'RA1.5SW': { codeString: "VL1.5;HL1.5:0,1.5" },
'RA1SW': { codeString: "VL1;HL1:0,1" },
'RA8SE': { codeString: "HL8:0,8;VL8:8,0" },
'RA4SE': { codeString: "HL4:0,4;VL4:4,0" },
'RA3SE': { codeString: "HL3:0,3;VL3:3,0" },
'RA2SE': { codeString: "HL2:0,2;VL2:2,0" },
'RA1.5SE': { codeString: "HL1.5:0,1.5;VL1.5:1.5,0" },
'RA1SE': { codeString: "HL1:0,1;VL1:1,0" },
'RA8N': { codeString: "DL4N;DL4S:4,0" },
'RA4N': { codeString: "DL2N;DL2S:2,0" },
'RA3N': { codeString: "DL1.5N;DL1.5S:1.5,0" },
'RA2N': { codeString: "DL1N;DL1S:1,0" },
'RA1N': { codeString: "DL.5N;DL.5S:0.5,0" },
'RA8S': { codeString: "DL4S;DL4N:4,0" },
'RA4S': { codeString: "DL2S;DL2N:2,0" },
'RA3S': { codeString: "DL1.5S;DL1.5N:1.5,0" },
'RA2S': { codeString: "DL1S;DL1N:1,0" },
'RA1S': { codeString: "DL.5S;DL.5N:.5,0" },
'RA8W': { codeString: "DL4N;DL4S:0,4" },
'RA4W': { codeString: "DL2N;DL2S:0,2" },
'RA3W': { codeString: "DL1.5N;DL1.5S:0,1.5" },
'RA2W': { codeString: "DL1N;DL1S:0,1" },
'RA1W': { codeString: "DL.5N;DL.5S:0,0.5" },
'RA8E': { codeString: "DL4S;DL4N:0,4" },
'RA4E': { codeString: "DL2S;DL2N:0,2" },
'RA3E': { codeString: "DL1.5S;DL1.5N:0,1.5" },
'RA2E': { codeString: "DL1S;DL1N:0,1" },
'RA1E': { codeString: "DL.5S;DL.5N:0,0.5" },
'AA8N': { codeString: "DL4-8N;DL4-8S:4,0" },
'AA4N': { codeString: "DL2-4N;DL2-4S:2,0" },
'AA2N': { codeString: "DL1-2N;DL1-2S:1,0" },
'AA8S': { codeString: "DL4-8S;DL4-8N:4,0" },
'AA4S': { codeString: "DL2-4S;DL2-4N:2,0" },
'AA2S': { codeString: "DL1-2S;DL1-2N:1,0" },
'AA8W': { codeString: "DL8-4N;DL8-4S:0,4" },
'AA4W': { codeString: "DL4-2N;DL4-2S:0,2" },
'AA2W': { codeString: "DL2-1N;DL2-1S:0,1" },
'AA8E': { codeString: "DL8-4S;DL8-4N:0,4" },
'AA4E': { codeString: "DL4-2S;DL4-2N:0,2" },
'AA2E': { codeString: "DL2-1S;DL2-1N:0,1" },
'SC8': { codeString: "HL8:0,4;VL8:4,0" },
'SC4': { codeString: "HL4:0,2;VL4:2,0" },
'SC2': { codeString: "HL2:0,1;VL2:1,0" },
'DC8': { codeString: "DL8S;DL8N" },
'DC4': { codeString: "DL4S;DL4N" },
'DC2': { codeString: "DL2S;DL2N" },
'RT8SW': { codeString: "VL8;HL8:0,8;DL8S" },
'RT4SW': { codeString: "VL4;HL4:0,4;DL4S" },
'RT2SW': { codeString: "VL2;HL2:0,2;DL2S" },
'RT8NW': { codeString: "VL8;HL8;DL8N" },
'RT4NW': { codeString: "VL4;HL4;DL4N" },
'RT2NW': { codeString: "VL2;HL2;DL2N" },
'RT8NE': { codeString: "HL8;VL8:8,0;DL8S" },
'RT4NE': { codeString: "HL4;VL4:4,0;DL4S" },
'RT2NE': { codeString: "HL2;VL2:2,0;DL2S" },
'RT8SE': { codeString: "HL8:0,8;VL8:8,0;DL8N" },
'RT4SE': { codeString: "HL4:0,4;VL4:4,0;DL4N" },
'RT2SE': { codeString: "HL2:0,2;VL2:2,0;DL2N" },
'RT8N': { codeString: "DL4N;DL4S:4,0;HL8:0,4" },
'RT4N': { codeString: "DL2N;DL2S:2,0;HL4:0,2" },
'RT2N': { codeString: "DL1N;DL1S:1,0;HL2:0,1" },
'RT8S': { codeString: "DL4S;DL4N:4,0;HL8" },
'RT4S': { codeString: "DL2S;DL2N:2,0;HL4" },
'RT2S': { codeString: "DL1S;DL1N:1,0;HL2" },
'RT8W': { codeString: "DL4N;DL4S:0,4;VL8:4,0" },
'RT4W': { codeString: "DL2N;DL2S:0,2;VL4:2,0" },
'RT2W': { codeString: "DL1N;DL1S:0,1;VL2:1,0" },
'RT8E': { codeString: "DL4S;DL4N:0,4;VL8" },
'RT4E': { codeString: "DL2S;DL2N:0,2;VL4" },
'RT2E': { codeString: "DL1S;DL1N:0,1;VL2" },
'AT8N': { codeString: "DL4-8N;DL4-8S:4,0;HL8:0,8" },
'AT4N': { codeString: "DL2-4N;DL2-4S:2,0;HL4:0,4" },
'AT2N': { codeString: "DL1-2N;DL1-2S:1,0;HL2:0,2" },
'AT8S': { codeString: "DL4-8S;DL4-8N:4,0;HL8" },
'AT4S': { codeString: "DL2-4S;DL2-4N:2,0;HL4" },
'AT2S': { codeString: "DL1-2S;DL1-2N:1,0;HL2" },
'AT8W': { codeString: "DL8-4N;DL8-4S:0,4;VL8:8,0" },
'AT4W': { codeString: "DL4-2N;DL4-2S:0,2;VL4:4,0" },
'AT2W': { codeString: "DL2-1N;DL2-1S:0,1;VL2:2,0" },
'AT8E': { codeString: "DL8-4S;DL8-4N:0,4;VL8" },
'AT4E': { codeString: "DL4-2S;DL4-2N:0,2;VL4" },
'AT2E': { codeString: "DL2-1S;DL2-1N:0,1;VL2" },
'S8': { codeString: "HL8;HL8:0,8;VL8;VL8:8,0" },
'S4': { codeString: "HL4;HL4:0,4;VL4;VL4:4,0" },
'S2': { codeString: "HL2;HL2:0,2;VL2;VL2:2,0" },
'DS8': { codeString: "DL4N;DL4S:4,0;DL4S:0,4;DL4N:4,4" },
'DS4': { codeString: "DL2N;DL2S:2,0;DL2S:0,2;DL2N:2,2" },
'DS2': { codeString: "DL1N;DL1S:1,0;DL1S:0,1;DL1N:1,1" },
'OS8N': { codeString: "VL8;HL8:0,8;VL8:8,0" },
'OS4N': { codeString: "VL4;HL4:0,4;VL4:4,0" },
'OS2N': { codeString: "VL2;HL2:0,2;VL2:2,0" },
'OS8S': { codeString: "VL8;HL8;VL8:8,0" },
'OS4S': { codeString: "VL4;HL4;VL4:4,0" },
'OS2S': { codeString: "VL2;HL2;VL2:2,0" },
'OS8W': { codeString: "HL8;HL8:0,8;VL8:8,0" },
'OS4W': { codeString: "HL4;HL4:0,4;VL4:4,0" },
'OS2W': { codeString: "HL2;HL2:0,2;VL2:2,0" },
'OS8E': { codeString: "VL8;HL8;HL8:0,8" },
'OS4E': { codeString: "VL4;HL4;HL4:0,4" },
'OS2E': { codeString: "VL2;HL2;HL2:0,2" },
'R84': { codeString: "HL8;HL8:0,4;VL4;VL4:8,0" },
'R42': { codeString: "HL4;HL4:0,2;VL2;VL2:4,0" },
'R48': { codeString: "HL4;HL4:0,8;VL8;VL8:4,0" },
'R24': { codeString: "HL2;HL2:0,4;VL4;VL4:2,0" },
'OR84N': { codeString: "VL4;HL8:0,4;VL4:8,0" },
'OR42N': { codeString: "VL2;HL4:0,2;VL2:4,0" },
'OR84S': { codeString: "VL4;HL8;VL4:8,0" },
'OR42S': { codeString: "VL2;HL4;VL2:4,0" },
'OR84W': { codeString: "HL8;HL8:0,4;VL4:8,0" },
'OR42W': { codeString: "HL4;HL4:0,2;VL2:4,0" },
'OR84E': { codeString: "VL4;HL8;HL8:0,4" },
'OR42E': { codeString: "VL2;HL4;HL4:0,2" },
'OR48N': { codeString: "VL8;HL4:0,8;VL8:4,0" },
'OR24N': { codeString: "VL4;HL2:0,4;VL4:2,0" },
'OR48S': { codeString: "VL8;HL4;VL8:4,0" },
'OR24S': { codeString: "VL4;HL2;VL4:2,0" },
'OR48W': { codeString: "HL4;HL4:0,8;VL8:4,0" },
'OR24W': { codeString: "HL2;HL2:0,4;VL4:2,0" },
'OR48E': { codeString: "VL8;HL4;HL4:0,8" },
'OR24E': { codeString: "VL4;HL2;HL2:0,4" },
'LARR8W': { codeString: "P4W;HL8:0,2" },
'ARR8W': { codeString: "P3W;HL8:0,1.5" },
'LARR4W': { codeString: "P4W;HL4:0,2" },
'ARR4W': { codeString: "P3W;HL3:0,1.5" },
'LARR8E': { codeString: "HL8:0,2;P4E:6,0" },
'ARR8E': { codeString: "HL8:0,1.5;P3E:6.5,0" },
'LARR4E': { codeString: "HL4:0,2;P4E:2,0" },
'ARR4E': { codeString: "HL4:0,1.5;P3E:2.5,0" },
'LARR8N': { codeString: "P4N;VL8:2,0" },
'ARR8N': { codeString: "P3N;VL8:1.5,0" },
'LARR4N': { codeString: "P4N;VL4:2,0" },
'ARR4N': { codeString: "P3N;VL4:1.5,0" },
'LARR8S': { codeString: "P4S:0,6;VL8:2,0" },
'ARR8S': { codeString: "P3S:0,6.5;VL8:1.5,0" },
'LARR4S': { codeString: "P4S:0,2;VL4:2,0" },
'ARR4S': { codeString: "P3S:0,2.5;VL4:1.5,0" },
'LARR8NW': { codeString: "DL8S;P3NW" },
'ARR8NW': { codeString: "DL8S;P2NW" },
'LARR4NW': { codeString: "DL4S;P3NW" },
'ARR4NW': { codeString: "DL4S;P2NW" },
'LARR8NE': { codeString: "DL8N;P3NE:5,0" },
'ARR8NE': { codeString: "DL8N;P2NE:6,0" },
'LARR4NE': { codeString: "DL4N;P3NE:1,0" },
'ARR4NE': { codeString: "DL4N;P2NE:2,0" },
'LARR8SW': { codeString: "DL8N;P3SW:0,5" },
'ARR8SW': { codeString: "DL8N;P2SW:0,6" },
'LARR4SW': { codeString: "DL4N;P3SW:0,1" },
'ARR4SW': { codeString: "DL4N;P2SW:0,2" },
'LARR8SE': { codeString: "DL8S;P3SE:5,5" },
'ARR8SE': { codeString: "DL8S;P2SE:6,6" },
'LARR4SE': { codeString: "DL4S;P3SE:1,1" },
'ARR4SE': { codeString: "DL4S;P2SE:2,2" },
'P4N': { codeString: "RA4N" },
'P3N': { codeString: "RA3N" },
'P2N': { codeString: "RA2N" },
'P4S': { codeString: "RA4S" },
'P3S': { codeString: "RA3S" },
'P2S': { codeString: "RA2S" },
'P4W': { codeString: "RA4W" },
'P3W': { codeString: "RA3W" },
'P2W': { codeString: "RA2W" },
'P4E': { codeString: "RA4E" },
'P3E': { codeString: "RA3E" },
'P2E': { codeString: "RA2E" },
'P3NW': { codeString: "RA3NW" },
'P3NE': { codeString: "RA3NE" },
'P3SW': { codeString: "RA3SW" },
'P3SE': { codeString: "RA3SE" },
'P2NW': { codeString: "RA2NW" },
'P2NE': { codeString: "RA2NE" },
'P2SW': { codeString: "RA2SW" },
'P2SE': { codeString: "RA2SE" },
'P1.5NW': { codeString: "RA1.5NW" },
'P1.5NE': { codeString: "RA1.5NE" },
'P1.5SW': { codeString: "RA1.5SW" },
'P1.5SE': { codeString: "RA1.5SE" },
'LARRC8EC': { codeString: "C8;P4S:6,2" },
'ARRC8EC': { codeString: "C8;P3S:6.5,2.5" },
'LARRC8WC': { codeString: "P4N:0,4;C8:2,0" },
'ARRC8WC': { codeString: "P3N:0,4;C8:1.5,0" },
'LARRC8NC': { codeString: "C8:0,2;P4E:2,0" },
'ARRC8NC': { codeString: "C8:0,1.5;P3E:2.5,0" },
'LARRC8SC': { codeString: "C8;P4W:4,6" },
'ARRC8SC': { codeString: "C8;P3W:4,6.5" },
'LARRC8ECC': { codeString: "C8;P4N:6,4" },
'ARRC8ECC': { codeString: "C8;P3N:6.5,4" },
'LARRC8WCC': { codeString: "P4S:0,2;C8:2,0" },
'ARRC8WCC': { codeString: "P3S:0,2.5;C8:1.5,0" },
'LARRC8NCC': { codeString: "C8:0,2;P4W:4,0" },
'ARRC8NCC': { codeString: "C8:0,1.5;P3W:4,0" },
'LARRC8SCC': { codeString: "C8;P4E:2,6" },
'ARRC8SCC': { codeString: "C8;P3E:2.5,6.5" },
'LARROC8SEC': { codeString: "OC8SE;P4S:6,2" },
'ARROC8SEC': { codeString: "OC8SE;P3S:6.5,2.5" },
'LARROC8NWC': { codeString: "P4N:0,4;OC8NW:2,0" },
'ARROC8NWC': { codeString: "P3N:0,4;OC8NW:1.5,0" },
'LARROC8NEC': { codeString: "OC8NE:0,2;P4E:2,0" },
'ARROC8NEC': { codeString: "OC8NE:0,1.5;P3E:2.5,0" },
'LARROC8SWC': { codeString: "OC8SW;P4W:4,6" },
'ARROC8SWC': { codeString: "OC8SW;P3W:4,6.5" },
'LARROC8SECC': { codeString: "OC8SE;P4E:2,6" },
'ARROC8SECC': { codeString: "OC8SE;P3E:2.5,6.5" },
'LARROC8NWCC': { codeString: "OC8NW:0,2;P4W:4,0" },
'ARROC8NWCC': { codeString: "OC8NW:0,1.5;P3W:4,0" },
'LARROC8NECC': { codeString: "OC8NE;P4N:6,4" },
'ARROC8NECC': { codeString: "OC8NE;P3N:6.5,4" },
'LARROC8SWCC': { codeString: "P4S:0,2;OC8SW:2,0" },
'ARROC8SWCC': { codeString: "P3S:0,2.5;OC8SW:1.5,0" },
'LARRHC8NC': { codeString: "HC8N;P4S:6,2" },
'ARRHC8NC': { codeString: "HC8N;P3S:6.5,2.5" },
'LARRHC8SC': { codeString: "P4N;HC8S:2,0" },
'ARRHC8SC': { codeString: "P3N;HC8S:1.5,0" },
'LARRHC8WC': { codeString: "HC8W:0,2;P4E:2,0" },
'ARRHC8WC': { codeString: "HC8W:0,1.5;P3E:2.5,0" },
'LARRHC8EC': { codeString: "HC8E;P4W:0,6" },
'ARRHC8EC': { codeString: "HC8E;P3W:0,6.5" },
'LARRHC8NCC': { codeString: "P4S:0,2;HC8N:2,0" },
'ARRHC8NCC': { codeString: "P3S:0,2.5;HC8N:1.5,0" },
'LARRHC8SCC': { codeString: "HC8S;P4N:6,0" },
'ARRHC8SCC': { codeString: "HC8S;P3N:6.5,0" },
'LARRHC8WCC': { codeString: "HC8W;P4E:2,6" },
'ARRHC8WCC': { codeString: "HC8W;P3E:2.5,6.5" },
'LARRHC8ECC': { codeString: "P4W;HC8E:0,2" },
'ARRHC8ECC': { codeString: "P3W;HC8E:0,1.5" },
'LARRQC4NWC': { codeString: "QC4NW:0,2;P4E:2,0" },
'ARRQC4NWC': { codeString: "QC4NW:0,1.5;P3E:2.5,0" },
'LARRQC4SWC': { codeString: "P4N;QC4SW:2,0" },
'ARRQC4SWC': { codeString: "P3N;QC4SW:1.5,0" },
'LARRQC4NEC': { codeString: "QC4NE;P4S:2,2" },
'ARRQC4NEC': { codeString: "QC4NE;P3S:2.5,2.5" },
'LARRQC4SEC': { codeString: "QC4SE;P4W:0,2" },
'ARRQC4SEC': { codeString: "QC4SE;P3W:0,2.5" },
'LARRQC4NWCC': { codeString: "P4S:0,2;QC4NW:2,0" },
'ARRQC4NWCC': { codeString: "P3S:0,2.5;QC4NW:1.5,0" },
'LARRQC4SWCC': { codeString: "QC4SW;P4E:2,2" },
'ARRQC4SWCC': { codeString: "QC4SW;P3E:2.5,2.5" },
'LARRQC4NECC': { codeString: "P4W;QC4NE:0,2" },
'ARRQC4NECC': { codeString: "P3W;QC4NE:0,1.5" },
'LARRQC4SECC': { codeString: "QC4SE;P4N:2,0" },
'ARRQC4SECC': { codeString: "QC4SE;P3N:2.5,0" }
};
blissElementDefinitions['DOT'].extraPathOptions = {
baseStrokeWidth: 0.5,
extraDotWidth: 0.333
};
blissElementDefinitions['SDOT'].extraPathOptions = {
baseStrokeWidth: 0.5,
extraDotWidth: 0
};
blissElementDefinitions['COMMA'].extraPathOptions = {
baseStrokeWidth: 0.5,
extraDotWidth: 0.333
};
// Add all external glyphs.
const characters = 'abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ';
for (let i = 0; i < characters.length; i++) {
const x = characters[i];
blissElementDefinitions[`X${x}`] = sc.createExternalGlyph(x);
}
// Indicate that all elements defined in the blissElementDefinitions object are atomic
for (const definition of Object.values(blissElementDefinitions)) {
definition.isAtomic = true;
}
//character definitions
Object.assign(blissElementDefinitions, charData);
export { blissElementDefinitions };