diff --git a/laantas-script/Glyphs.hs b/laantas-script/Glyphs.hs index b5b1cf8..d2be880 100644 --- a/laantas-script/Glyphs.hs +++ b/laantas-script/Glyphs.hs @@ -42,27 +42,27 @@ tGlyphs = [("t",t), ("tt",tt), ("tk",tk), ("tg",tg), ("td",td), ("tƶ",tƶ), ("tn",tn), ("tr",tr), ("tč",tč), ("tǧ",tǧ), ("tw",tw), ("th",th), ("tf",tf), ("tj",tj)] -t = G {path = tPath, width = 5.5} -tt = G {path = ttPath, width = 7} -tk = G {path = tkPath, width = 9} -tg = G {path = tgPath, width = 9} -td = G {path = tdPath, width = 9} -tƶ = G {path = tƶPath, width = 9} -tp = G {path = tpPath, width = 9.5} -tb = G {path = tbPath, width = 10} -ts = G {path = tsPath, width = 9} -tš = G {path = tšPath, width = 9} -tl = G {path = tlPath, width = 8.5} -tm = G {path = tmPath, width = 10} -tn = G {path = tnPath, width = 9} -tr = G {path = trPath, width = 7} -tč = G {path = tčPath, width = 9} -tǧ = G {path = tǧPath, width = 10} -tw = G {path = twPath, width = 10} -th = G {path = thPath, width = 12} -tf = G {path = tfPath, width = 10} -tj = G {path = tjPath, width = 4.75} -t0 = G {path = t0Path, width = 5} +t = simpleG tPath 5.5 +tt = simpleG ttPath 7 +tk = simpleG tkPath 9 +tg = simpleG tgPath 9 +td = simpleG tdPath 9 +tƶ = simpleG tƶPath 9 +tp = simpleG tpPath 9.5 +tb = simpleG tbPath 10 +ts = simpleG tsPath 9 +tš = simpleG tšPath 9 +tl = simpleG tlPath 8.5 +tm = simpleG tmPath 10 +tn = simpleG tnPath 9 +tr = simpleG trPath 7 +tč = simpleG tčPath 9 +tǧ = simpleG tǧPath 10 +tw = simpleG twPath 10 +th = simpleG thPath 12 +tf = simpleG tfPath 10 +tj = simpleG tjPath 4.75 +t0 = simpleG t0Path 5 tPath = P [mA (0,0), lA (5.5,0)] <> shiftX 1.5 aPath <> shiftX 5.25 aPath tNarrow = P [mA (0,0), lA (5,0)] <> shiftX 1.5 aPath <> shiftX 4.75 aPath @@ -95,9 +95,9 @@ t0Path = tPath <> P [mA (1.5,7), cR (1.8,-0.25) (3.1,0) (3.5,0.5)] kGlyphs = [("k", k), ("kk", kk), ("ks", ks)] -k = G {path = kPath, width = 5} -kk = G {path = kkPath, width = 8} -ks = G {path = ksPath, width = 9} +k = simpleG kPath 5 +kk = simpleG kkPath 8 +ks = simpleG ksPath 9 kLeft = P [mA (0,0), cR (0.5,0.75) (0,3) (0,5)] kBottomShort = P [cR (0,0) (2.6,0) (4,-0.5)] @@ -109,7 +109,7 @@ kkPath = kShortPart <> shiftX 4 kShort ksPath = kShortPart <> shiftX 4 sPath -g = G {path = gPath, width = 5} +g = simpleG gPath 5 gPath = gHat <> kPath gHat = P [mA (1.5,-2.75), qR (1.5,0.125) (3.5,-0.25)] @@ -117,7 +117,7 @@ gShort = gShortHat <> kShort gShortHat = P [mA (1.25,-2.75), qR (1.25,0.125) (2.75,-0.25)] -d = G {path = dPath, width = 5} +d = simpleG dPath 5 dPath = dPart <> P [mA (5,-3), lR (0,8)] dPart' = dBase <> dJoin' @@ -133,27 +133,27 @@ dLong = dFree <> shiftX 1.5 dJoin ("ƶm",ƶm), ("ƶn",ƶn), ("ƶr",ƶr), ("ƶč",ƶč), ("ƶǧ",ƶǧ), ("ƶw",ƶw), ("ƶh",ƶh), ("ƶf",ƶf), ("ƶj",ƶj)] -ƶ = G {path = ƶPath, width = 5} -ƶt = G {path = ƶtPath, width = 10.5} -ƶk = G {path = ƶkPath, width = 9} -ƶg = G {path = ƶgPath, width = 9} -ƶd = G {path = ƶdPath, width = 10} -ƶƶ = G {path = ƶƶPath, width = 10} -ƶp = G {path = ƶpPath, width = 10.5} -ƶb = G {path = ƶbPath, width = 11} -ƶs = G {path = ƶsPath, width = 10} -ƶš = G {path = ƶšPath, width = 10} -ƶl = G {path = ƶlPath, width = 10} -ƶm = G {path = ƶmPath, width = 11} -ƶn = G {path = ƶnPath, width = 9.75} -ƶr = G {path = ƶrPath, width = 8} -ƶč = G {path = ƶčPath, width = 10} -ƶǧ = G {path = ƶǧPath, width = 10} -ƶw = G {path = ƶwPath, width = 11} -ƶh = G {path = ƶhPath, width = 13} -ƶf = G {path = ƶfPath, width = 10} -ƶj = G {path = ƶjPath, width = 7.5} -ƶ0 = G {path = ƶ0Path, width = 3.5} +ƶ = simpleG ƶPath 5 +ƶt = simpleG ƶtPath 10.5 +ƶk = simpleG ƶkPath 9 +ƶg = simpleG ƶgPath 9 +ƶd = simpleG ƶdPath 10 +ƶƶ = simpleG ƶƶPath 10 +ƶp = simpleG ƶpPath 10.5 +ƶb = simpleG ƶbPath 11 +ƶs = simpleG ƶsPath 10 +ƶš = simpleG ƶšPath 10 +ƶl = simpleG ƶlPath 10 +ƶm = simpleG ƶmPath 11 +ƶn = simpleG ƶnPath 9.75 +ƶr = simpleG ƶrPath 8 +ƶč = simpleG ƶčPath 10 +ƶǧ = simpleG ƶǧPath 10 +ƶw = simpleG ƶwPath 11 +ƶh = simpleG ƶhPath 13 +ƶf = simpleG ƶfPath 10 +ƶj = simpleG ƶjPath 7.5 +ƶ0 = simpleG ƶ0Path 3.5 ƶPath = gHat <> dPath ƶtPath = dLong <> shiftX 5 tPath @@ -180,10 +180,10 @@ dLong = dFree <> shiftX 1.5 dJoin pGlyphs = [("p", p), ("pp", pp), ("ps", ps), ("pj", pj)] -p = G {path = pPath, width = 5.5} -pp = G {path = ppPath, width = 9} -ps = G {path = psPath, width = 10.5} -pj = G {path = pjPath, width = 10} +p = simpleG pPath 5.5 +pp = simpleG ppPath 9 +ps = simpleG psPath 10.5 +pj = simpleG pjPath 10 pInit = P [mA (0,-3), cR (-1,1) (-0.5,6) (-0.5,8)] @@ -206,8 +206,8 @@ pjPath = bGlyphs = [("b", b), ("bj", bj)] -b = G {path = bPath, width = 6} -bj = G {path = bjPath, width = 9} +b = simpleG bPath 6 +bj = simpleG bjPath 9 bPath = shiftX 1 gHat <> wPart <> P [mA (6,-3), lR (0,8)] bjPath = @@ -221,27 +221,27 @@ sGlyphs = [("s",s), ("st",st), ("sk",sk), ("sg",sg), ("sd",sd), ("sƶ",sƶ), ("sn",sn), ("sr",sr), ("sč",sč), ("sǧ",sǧ), ("sw",sw), ("sh",sh), ("sf",sf), ("sj",sj)] -s = G {path = sPath, width = 5.125} -st = G {path = stPath, width = 8.5} -sk = G {path = skPath, width = 9} -sg = G {path = sgPath, width = 9} -sd = G {path = sdPath, width = 9} -sƶ = G {path = sƶPath, width = 9} -sp = G {path = spPath, width = 9.5} -sb = G {path = sbPath, width = 10.5} -ss = G {path = ssPath, width = 10} -sš = G {path = sšPath, width = 10} -sl = G {path = slPath, width = 9} -sm = G {path = smPath, width = 10.5} -sn = G {path = snPath, width = 9.5} -sr = G {path = srPath, width = 7} -sč = G {path = sčPath, width = 9} -sǧ = G {path = sǧPath, width = 10} -sw = G {path = swPath, width = 10} -sh = G {path = shPath, width = 13} -sf = G {path = sfPath, width = 10.25} -sj = G {path = sjPath, width = 5} -s0 = G {path = s0Path, width = 5} +s = simpleG sPath 5.125 +st = simpleG stPath 8.5 +sk = simpleG skPath 9 +sg = simpleG sgPath 9 +sd = simpleG sdPath 9 +sƶ = simpleG sƶPath 9 +sp = simpleG spPath 9.5 +sb = simpleG sbPath 10.5 +ss = simpleG ssPath 10 +sš = simpleG sšPath 10 +sl = simpleG slPath 9 +sm = simpleG smPath 10.5 +sn = simpleG snPath 9.5 +sr = simpleG srPath 7 +sč = simpleG sčPath 9 +sǧ = simpleG sǧPath 10 +sw = simpleG swPath 10 +sh = simpleG shPath 13 +sf = simpleG sfPath 10.25 +sj = simpleG sjPath 5 +s0 = simpleG s0Path 5 sPath = sPartLine <> shiftX 4.75 aPath sPart' = P [mA (0, 0), @@ -313,29 +313,29 @@ lGlyphs = [("l",l), ("ll", ll), ("lt",lt), ("lk",lk), ("lg",lg), ("ld",ld), ("ln",ln), ("lr",lr), ("lč",lč), ("lǧ",lǧ), ("lw",lw), ("lh",lh), ("lf",lf), ("lj",lj)] -l = G {path = lPath, width = 4.5} -ll = G {path = llPath, width = 9} -lt = G {path = ltPath, width = 10} -lk = G {path = lkPath, width = 8.5} -lg = G {path = lgPath, width = 8.5} -ld = G {path = ldPath, width = 9.5} -lƶ = G {path = lƶPath, width = 9.5} -lp = G {path = lpPath, width = 10} -lb = G {path = lbPath, width = 10.5} -ls = G {path = lsPath, width = 9.5} -lš = G {path = lšPath, width = 9.5} -lm = G {path = lmPath, width = 10.5} -ln = G {path = lnPath, width = 9.25} -lr = G {path = lrPath, width = 7.5} -lč = G {path = lčPath, width = 9.5} -lǧ = G {path = lǧPath, width = 9.5} -lw = G {path = lwPath, width = 10.5} -lh = G {path = lhPath, width = 12.5} -lf = G {path = lfPath, width = 10.5} -lj = G {path = ljPath, width = 5} -l0 = G {path = l0Path, width = 3.75} +l = simpleG lPath 4.625 +ll = simpleG llPath 9 +lt = simpleG ltPath 10 +lk = simpleG lkPath 8.5 +lg = simpleG lgPath 8.5 +ld = simpleG ldPath 9.5 +lƶ = simpleG lƶPath 9.5 +lp = simpleG lpPath 10 +lb = simpleG lbPath 10.5 +ls = simpleG lsPath 9.5 +lš = simpleG lšPath 9.5 +lm = simpleG lmPath 10.5 +ln = simpleG lnPath 9.25 +lr = simpleG lrPath 7.5 +lč = simpleG lčPath 9.5 +lǧ = simpleG lǧPath 9.5 +lw = simpleG lwPath 10.5 +lh = simpleG lhPath 12.5 +lf = simpleG lfPath 10.5 +lj = simpleG ljPath 5 +l0 = simpleG l0Path 3.75 -lPath = lPart <> P [mA (4.5,0), lR (0,5)] +lPath = lPart <> shiftX 4.5 aPath lBase = P [mA (3,0.5), cR (0.25,-0.25) (0,-0.75) (-1.25,-0.5), cR (-1.5,0.3) (-2,2.5) (0,2.5), lR (0.75,0), mR (-1.25,0), @@ -373,27 +373,27 @@ mGlyphs = [("m",m), ("mt",mt), ("mk",mk), ("mg",mg), ("md",md), ("mƶ",mƶ), ("mn",mn), ("mr",mr), ("mč",mč), ("mǧ",mǧ), ("mw",mw), ("mh",mh), ("mf",mf), ("mj",mj)] -m = G {path = mPath, width = 6} -mt = G {path = mtPath, width = 10} -mk = G {path = mkPath, width = 10} -mg = G {path = mgPath, width = 10} -md = G {path = mdPath, width = 12} -mƶ = G {path = mƶPath, width = 12} -mp = G {path = mpPath, width = 12.5} -mb = G {path = mbPath, width = 12} -ms = G {path = msPath, width = 11} -mš = G {path = mšPath, width = 11} -ml = G {path = mlPath, width = 11} -mm = G {path = mmPath, width = 12} -mn = G {path = mnPath, width = 11} -mr = G {path = mrPath, width = 9} -mč = G {path = mčPath, width = 12} -mǧ = G {path = mǧPath, width = 12} -mw = G {path = mwPath, width = 12} -mh = G {path = mhPath, width = 14} -mf = G {path = mfPath, width = 13} -mj = G {path = mjPath, width = 9} -m0 = G {path = m0Path, width = 6} +m = simpleG mPath 6 +mt = simpleG mtPath 10 +mk = simpleG mkPath 10 +mg = simpleG mgPath 10 +md = simpleG mdPath 12 +mƶ = simpleG mƶPath 12 +mp = simpleG mpPath 12.5 +mb = simpleG mbPath 12 +ms = simpleG msPath 11 +mš = simpleG mšPath 11 +ml = simpleG mlPath 11 +mm = simpleG mmPath 12 +mn = simpleG mnPath 11 +mr = simpleG mrPath 9 +mč = simpleG mčPath 12 +mǧ = simpleG mǧPath 12 +mw = simpleG mwPath 12 +mh = simpleG mhPath 14 +mf = simpleG mfPath 13 +mj = simpleG mjPath 9 +m0 = simpleG m0Path 6 mPath = mPart <> P [mA (6,0), lR (0,5)] mInit = P [mA (0.5,0), cR (-0.25,0.2) (-0.5,2.25) (-0.5,3.5)] @@ -427,33 +427,33 @@ nGlyphs = [("n", n), ("nt", nt), ("nk", nk), ("ng", ng), ("nd", nd), ("nƶ", nƶ ("nm", nm), ("nn", nn), ("nr", nr), ("nč", nč), ("nǧ", nǧ), ("nw", nw), ("nh", nh), ("nf", nf), ("nj", nj)] -n = G {path = nPath, width = 5} -nt = G {path = ntPath, width = 10.5} -nk = G {path = nkPath, width = 9} -ng = G {path = ngPath, width = 9} -nd = G {path = ndPath, width = 10} -nƶ = G {path = nƶPath, width = 10} -np = G {path = npPath, width = 10.25} -nb = G {path = nbPath, width = 11} -ns = G {path = nsPath, width = 10} -nš = G {path = nšPath, width = 10} -nl = G {path = nlPath, width = 10} -nm = G {path = nmPath, width = 11} -nn = G {path = nnPath, width = 10} -nr = G {path = nrPath, width = 6.5} -nč = G {path = nčPath, width = 10} -nǧ = G {path = nǧPath, width = 9.75} -nw = G {path = nwPath, width = 11} -nh = G {path = nhPath, width = 13} -nf = G {path = nfPath, width = 10.75} -nj = G {path = njPath, width = 5.25} -n0 = G {path = n0Path, width = 3.5} +n = simpleG nPath 5.125 +nt = simpleG ntPath 10.5 +nk = simpleG nkPath 9 +ng = simpleG ngPath 9 +nd = simpleG ndPath 10 +nƶ = simpleG nƶPath 10 +np = simpleG npPath 10.25 +nb = simpleG nbPath 11 +ns = simpleG nsPath 10 +nš = simpleG nšPath 10 +nl = simpleG nlPath 10 +nm = simpleG nmPath 11 +nn = simpleG nnPath 10 +nr = simpleG nrPath 6.5 +nč = simpleG nčPath 10 +nǧ = simpleG nǧPath 9.75 +nw = simpleG nwPath 11 +nh = simpleG nhPath 13 +nf = simpleG nfPath 10.75 +nj = simpleG njPath 5.25 +n0 = simpleG n0Path 3.5 -nPath = nPart <> P [mA (5,0), lR (0,5)] +nPath = nPart <> shiftX 5 aPath nPart = nPart' <> P [cR (1.6,-0.25) (2.5,-1.75) (2.5,-2.5)] nPart' = P [mA (3.5,1), cR (0.5,-1) (-0.5,-1.125) (-1,-1), cR (-3.2,0.5) (-3.2,5.5) (0,5)] -nLong = nPart' <> P [cR (1.6,-0.25) (4,-1) (4,-2.5)] +nLong = nPart' <> P [cR (3.2,-0.5) (4,-1.5) (4,-2.5)] nFlat = P [mA (5,0), lR (-2.5,0), aR 2.5 2.5 0 Large CCW (0,5), cR (0.5,0) (1,-0.5) (1,-1.5)] nFree = nPart' <> P [qR (0.8,-0.125) (1.5,-1)] @@ -485,27 +485,27 @@ rGlyphs = [("r", r), ("rt", rt), ("rk", rk), ("rg", rg), ("rd", rd), ("rƶ", rƶ ("rm", rm), ("rn", rn), ("rr", rr), ("rč", rč), ("rǧ", rǧ), ("rw", rw), ("rh", rh), ("rf", rf), ("rj", rj)] -r = G {path = rPath, width = 5} -rt = G {path = rtPath, width = 7.5} -rk = G {path = rkPath, width = 7} -rg = G {path = rgPath, width = 7} -rd = G {path = rdPath, width = 9.5} -rƶ = G {path = rƶPath, width = 9.5} -rp = G {path = rpPath, width = 10} -rb = G {path = rbPath, width = 10.5} -rs = G {path = rsPath, width = 9.5} -rš = G {path = ršPath, width = 9.5} -rl = G {path = rlPath, width = 9.5} -rm = G {path = rmPath, width = 10.5} -rr = G {path = rrPath, width = 6} -rn = G {path = rnPath, width = 9} -rč = G {path = rčPath, width = 9.5} -rǧ = G {path = rǧPath, width = 9.5} -rw = G {path = rwPath, width = 10.5} -rh = G {path = rhPath, width = 12.5} -rf = G {path = rfPath, width = 10.5} -rj = G {path = rjPath, width = 7.5} -r0 = G {path = r0Path, width = 5} +r = simpleG rPath 5 +rt = simpleG rtPath 7.5 +rk = simpleG rkPath 7 +rg = simpleG rgPath 7 +rd = simpleG rdPath 9.5 +rƶ = simpleG rƶPath 9.5 +rp = simpleG rpPath 10 +rb = simpleG rbPath 10.5 +rs = simpleG rsPath 9.5 +rš = simpleG ršPath 9.5 +rl = simpleG rlPath 9.5 +rm = simpleG rmPath 10.5 +rr = simpleG rrPath 6 +rn = simpleG rnPath 9 +rč = simpleG rčPath 9.5 +rǧ = simpleG rǧPath 9.5 +rw = simpleG rwPath 10.5 +rh = simpleG rhPath 12.5 +rf = simpleG rfPath 10.5 +rj = simpleG rjPath 7.5 +r0 = simpleG r0Path 5 rPath = rPart <> P [mA (5,-3), lR (0,8)] rPart = P [mA (0,5), cR (3.5,0) (5,-1) (5,-2)] @@ -537,9 +537,9 @@ r0Path = ŕPath <> P [mA (1.25,7), cR (2.2,-0.25) (2.8,0) (3,0.5)] čGlyphs = [("č", č), ("čs", čs), ("čč", čč)] -č = G {path = čPath, width = 5} -čs = G {path = čsPath, width = 10} -čč = G {path = ččPath, width = 10} +č = simpleG čPath 5 +čs = simpleG čsPath 10 +čč = simpleG ččPath 10 čPath = čPart <> čJoin <> P [mA (5,0), lR (0,5)] čPart = P [mA (0,0.5), cR (2.25,-0.75) (2.55,-0.5) (2.75,-0.5)] <> čPart' @@ -553,7 +553,7 @@ r0Path = ŕPath <> P [mA (1.25,7), cR (2.2,-0.25) (2.8,0) (3,0.5)] ččPath = čPart <> shiftX 5 čPath -ǧ = G {path = ǧPath, width = 5} +ǧ = simpleG ǧPath 5 ǧPath = ǧPart <> čJoin <> P [mA (5,-3), lR (0,8)] ǧPart = P [mA (0,-2), cR (2.25,-0.75) (2.55,-0.5) (2.75,-0.5), @@ -565,7 +565,7 @@ r0Path = ŕPath <> P [mA (1.25,7), cR (2.2,-0.25) (2.8,0) (3,0.5)] cR (-0.2,0.25) (-2.25,0) (-2.75,-0.5)] -w = G {path = wPath, width = 6} +w = simpleG wPath 6 wPath = wPart <> shiftX 5.75 aPath wPart = uPath <> P [mA (2.5,0), lR (3.5,0)] @@ -573,10 +573,10 @@ wPart = uPath <> P [mA (2.5,0), lR (3.5,0)] hGlyphs = [("h", h), ("hh", hh), ("hn", hn), ("hm", hm)] -h = G {path = hPath, width = 8.5} -hh = G {path = hhPath, width = 16.5} -hn = G {path = hnPath, width = 15} -hm = G {path = hmPath, width = 16} +h = simpleG hPath 8.5 +hh = simpleG hhPath 16.5 +hn = simpleG hnPath 15 +hm = simpleG hmPath 16 hPath = hPart <> shiftX 3.5 gHat <> P [mA (8.5,-3), lR (0,8)] hPart' x = sPart <> P [mA (2.5,0), lR (1.5,0)] <> shiftX 4 x @@ -589,10 +589,10 @@ hmPath = hPath <> shiftX 10 mPath fGlyphs = [("f", f), ("fn", fn), ("fm", fm)] -f = G {path = fPath, width = 6} -fn = G {path = fnPath, width = 12} -fm = G {path = fmPath, width = 12} -f0 = G {path = f0Path, width = 6} +f = simpleG fPath 6 +fn = simpleG fnPath 12 +fm = simpleG fmPath 12 +f0 = simpleG f0Path 6 fPath = fPart <> P [lR (0,2.5)] fPart = P [mA (4.25,2.5), @@ -606,7 +606,7 @@ fnPath = fPath <> shiftX 7 nPath fmPath = fPart <> P [lR (0,1)] <> mBump <> mBump' <> P [mA (12,0), lR (0,5)] f0Path = fPath <> P [mA (1.5,7), cR (2.8,-0.35) (3.1,0) (3.5,0.5)] -j = G {path = jPath, width = 4} +j = simpleG jPath 4 jPath = P [mA (0,0), qR (1.25,0.5) (4,0)] <> shiftX 3.75 aPath jPathShort = P [mA (0,0), qR (1,0.25) (3,0)] <> shiftX 2.75 aPath @@ -617,20 +617,20 @@ vGlyphs = [("a", a), ("á", á), ("i", i), ("í", í), ("u", u), ("ú", ú), ("ai", ai), ("au", au), ("ia", ia), ("ua", ua), ("ḿ", ḿ), ("ń", ń), ("ł", ł), ("ŕ", ŕ)] -a = G {path = aPath, width = 0.125} -á = G {path = áPath, width = 2.125} +a = simpleG aPath 0.125 +á = simpleG áPath 2.125 i = j -í = G {path = íPath, width = 5} -u = G {path = uPath, width = 4.5} -ú = G {path = úPath, width = 4} -ai = G {path = aiPath, width = 5} -au = G {path = auPath, width = 4.5} -ia = G {path = iaPath, width = 5} -ua = G {path = uaPath, width = 4.5} -ḿ = G {path = ḿPath, width = 6} -ń = G {path = ńPath, width = 4} -ł = G {path = łPath, width = 3.75} -ŕ = G {path = ŕPath, width = 5} +í = simpleG íPath 5 +u = simpleG uPath 4.5 +ú = simpleG úPath 4 +ai = simpleG aiPath 5 +au = simpleG auPath 4.5 +ia = simpleG iaPath 5 +ua = simpleG uaPath 4.5 +ḿ = simpleG ḿPath 6 +ń = simpleG ńPath 4 +ł = simpleG łPath 3.75 +ŕ = simpleG ŕPath 5 aPath = P [mA (0.25,0), cR (-0.25,1) (-0.25,2) (-0.25,5)] áPath = aPath <> shiftX 2 aPath @@ -657,10 +657,10 @@ uaPath = uNarrow <> shiftX 4.5 aPath adot = P . circR 0.2 -withWidth f w = (f w, w) +withWidth f (SI {width}) = (f width, width) sP = simpleDia . P --- dont move because letters like t have the join not quite at the edge +-- no @mA@ because letters like t have the join not quite at the edge da = [sP [lR (0,5)]] dá = da <> [withWidth \w -> P [mA (w/2-1,8), cR (0.75,-0.5) (1.25,0.5) (2,0)]] di = da <> [sP [cR (1,-2) (3,-3) (0,-3)]] @@ -699,28 +699,29 @@ punctuation = Map.fromList [(".", eos), ("?", eos), ("!", eos), (",", eop), (":", eop), (";", eop), ("…", ellipsis)] -eos = G {path = eosPath, width = 4} +eos = simpleG eosPath 4 eosPath = P $ circA 1 (4,1) <> circA 1 (4,4) -eop = G {path = eopPath, width = 2} +eop = simpleG eopPath 2 eopPath = P $ circA 1 (3,2.5) -num = G {path = P [mA (0,0), lR (0,5), mA (1,0), lR (0,5)], width = 1} +num = simpleG path 1 + where path = P [mA (0,0), lR (0,5), mA (1,0), lR (0,5)] numbers = Map.fromList $ - zip [0..9::Int] [u, t, n2, G dFree 3, n4, n5, ł, ḿ, ń, f] -n2 = G n2Path 5 + zip [0..9::Int] [u, t, n2, simpleG dFree 3, n4, n5, ł, ḿ, ń, f] +n2 = simpleG n2Path 5 n2Path = P [mA (0,0), lR (0,5), sR (3,0) (5,-0.5), mA (5,0), lR (0,5)] -n4 = G n4Path 5 +n4 = simpleG n4Path 5 n4Path = P [mA (1.5,0), lR (0,5), sR (-1.5,-3) (-1.5,-5), lR (5,0), lR (0,5)] -n5 = G n5Path 4 +n5 = simpleG n5Path 4 n5Path = P [mA (0,5), lR (0,-3.5), aR 1.5 1.5 0 Small CW (1.5,-1.5), lR (1,0), aR 1.5 1.5 0 Small CW (1.5,1.5), lR (0,3.5)] wave :: Glyph -wave = G {path = wavePath, width = 4} - -wavePath = P [mA (0,2.5), cR (1.5,-2) (2.5,2) (4,0)] +wave = simpleG wavePath 4 ellipsis :: Glyph -ellipsis = G {path = shiftX 3.5 wavePath, width = 6} +ellipsis = simpleG (shiftX 3.5 wavePath) 6 + +wavePath = P [mA (0,2.5), cR (1.5,-2) (2.5,2) (4,0)] diff --git a/laantas-script/GlyphsBase.hs b/laantas-script/GlyphsBase.hs index e0e986d..2bdceb7 100644 --- a/laantas-script/GlyphsBase.hs +++ b/laantas-script/GlyphsBase.hs @@ -9,7 +9,17 @@ import Numeric import Prelude hiding (Word) -data Glyph = G {path :: Segs, width :: Double} +data Glyph = G {path :: Segs, size :: SizeInfo} + +data SizeInfo = SI { + width :: Double, -- ^ total width + right :: Double, -- ^ attachment point for e.g. a + center :: Double -- ^ attachment point for e.g. á + } + +simpleG :: Segs -> Double -> Glyph +simpleG path width = + G {path, size = SI {width, right = width, center = width/2}} -- | base amounts charHeight', lineHeight', spaceWidth', gap' :: Double @@ -78,10 +88,11 @@ type Word = [EGlyph] type EGlyph = (Glyph, [Diacritic]) -type Diacritic = Double -> (Segs, Double) +type Diacritic' a = SizeInfo -> (Segs, a) +type Diacritic = Diacritic' Double simpleDia :: Segs -> Diacritic -simpleDia ss w = (ss, w) +simpleDia ss (SI {width}) = (ss, width) doGlyphs :: [Word] -> Env -> Element doGlyphs gs e = wrap $ run act e where @@ -96,10 +107,13 @@ doGlyphs gs e = wrap $ run act e where doctype <> svg11_ content `with` sattrs +liftDia :: Diacritic -> Diacritic' SizeInfo +liftDia f sz = let (x, w) = f sz in (x, sz {width = w} :: SizeInfo) + glyphWidth :: EGlyph -> M Double -glyphWidth (G {width}, ss) = - let w = foldl (\x f -> snd $ f x) width ss in - (+) <$> withSize (* w) <*> gap +glyphWidth (G {size}, ss) = + let SI {width} = foldl (\x f -> snd $ liftDia f x) size ss in + (+) <$> withSize (* width) <*> gap totalWidth :: Double -> M Double totalWidth width = (+) <$> withSize (* width) <*> gap @@ -122,17 +136,17 @@ placeWord w = do pure e placeGlyph :: EGlyph -> M Element -placeGlyph (G {path = path1, width = width1}, dias) = do - let (segs', width') = placeDia width1 dias +placeGlyph (G {path = path1, size}, dias) = do + let (segs', width') = placeDias size dias path <- joinSegs $ path1 <> segs' width <- totalWidth width' modify \s@(S {x}) -> s {x = x + width} pure $ path_ [D_ <<- path] -placeDia :: Double -> [Diacritic] -> (Segs, Double) -placeDia w dias = - flip runState w $ - fold <$> traverse state dias +placeDias :: SizeInfo -> [Diacritic] -> (Segs, Double) +placeDias sz = + unlift . flip runState sz . fmap fold . traverse (state . liftDia) + where unlift (x, SI {width}) = (x, width) newline :: M () newline = do diff --git a/laantas-script/Svg.hs b/laantas-script/Svg.hs index 743e050..296c7ed 100644 --- a/laantas-script/Svg.hs +++ b/laantas-script/Svg.hs @@ -9,7 +9,8 @@ where import Control.Monad.Reader import Control.Monad.State import qualified Graphics.Svg as Base -import Graphics.Svg hiding (mA, mR, lA, lR, cA, cR, sA, sR, aA, aR, qA, qR) +import Graphics.Svg + hiding (mA, mR, lA, lR, cA, cR, sA, sR, aA, aR, qA, qR, tA, tR) import Data.Text (Text, pack) @@ -78,6 +79,16 @@ qR (x1, y1) (x2, y2) = Base.qR (x1 * size) (y1 * size) (x2 * size) (y2 * size) +tA :: Point -> M Text +tA (x1, y1) = + reader \E {size} -> + Base.tA (x1 * size) (y1 * size) + +tR :: Point -> M Text +tR (x1, y1) = + reader \E {size} -> + Base.tR (x1 * size) (y1 * size) + data Arc = Large | Small data Sweep = CW | CCW diff --git a/laantas-script/laantas-script.cabal b/laantas-script/laantas-script.cabal index c9c853a..9e84e4c 100644 --- a/laantas-script/laantas-script.cabal +++ b/laantas-script/laantas-script.cabal @@ -27,7 +27,8 @@ executable laantas-script MultiWayIf, NamedFieldPuns, OverloadedStrings, - RecordWildCards + RecordWildCards, + ViewPatterns build-depends: base ^>= 4.14.0.0, containers ^>= 0.6.2.1,