{-# OPTIONS_GHC -Wno-missing-signatures -Wno-name-shadowing #-} module Glyphs (Glyph (..), Diacritic, simpleDia, Segs (..), EGlyph, Word, doGlyphs, withSize, charHeight', lineHeight', spaceWidth', gap', charHeight, lineHeight, spaceWidth, gap, initials, finals, vowels, medials, num, numbers, punctuation, wave) where import Prelude hiding (Word) import Data.Map (Map) import qualified Data.Map.Strict as Map import GlyphsBase initials :: Map Text Glyph initials = Map.fromList $ tGlyphs <> kGlyphs <> ƶGlyphs <> sGlyphs <> šGlyphs <> lGlyphs <> mGlyphs <> nGlyphs <> rGlyphs <> pGlyphs <> bGlyphs <> čGlyphs <> hGlyphs <> fGlyphs <> [("g", g), ("d", d), ("ǧ", ǧ), ("w", w), ("j", j)] finals :: Map Text Glyph finals = Map.fromList $ [("t",t0), ("ƶ", ƶ0), ("s",s0), ("š",š0), ("l",l0), ("m",m0), ("n", n0), ("r", r0), ("f", f0)] medials :: Map Text [Diacritic] medials = Map.fromList $ [("a", da), ("á", dá), ("i", di), ("í", dí), ("u", du), ("ú", dú), ("ai", dai), ("au", dau), ("ia", dia), ("ua", dua), ("ḿ", dḿ), ("ń", dń), ("ł", dł), ("ŕ", dŕ)] vowels :: Map Text Glyph vowels = Map.fromList vGlyphs tGlyphs = [("t",t), ("tt",tt), ("tk",tk), ("tg",tg), ("td",td), ("tƶ",tƶ), ("tp",tp), ("tb",tb), ("ts",ts), ("tš",tš), ("tl",tl), ("tm",tm), ("tn",tn), ("tr",tr), ("tč",tč), ("tǧ",tǧ), ("tw",tw), ("th",th), ("tf",tf), ("tj",tj)] 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 tPart ℓ = shiftX 1.5 aPath <> P [mA (0,0), lR (ℓ,0)] ttPath = P [mA (0,0), lR (7,0)] <> shiftX 0.75 aPath <> shiftX 2.75 aPath <> shiftX 4.75 aPath <> shiftX 6.75 aPath tkPath = tPart 5 <> shiftX 5 (aPath <> kBottomShort <> P [mA (4,-3), lR (0,8)]) tgPath = shiftX 5 gShortHat <> tkPath tdPath = tPart 4 <> shiftX 4 dPath tƶPath = shiftX 5 gShortHat <> tdPath tpPath = P [mA (2,-3), lR (0,8), mA (0,-3), lR (6,0)] <> shiftX 4 pPath tbPath = tPart 6 <> shiftX 4 bPath tsPath = tPart 4 <> shiftX 4 sPath tšPath = tPart 4 <> shiftX 4 šPath tlPath = tPart 5 <> shiftX 3.5 lPath tmPath = tPart 4.5 <> shiftX 4 mPath tnPath = tPart 6 <> shiftX 4 nPath trPath = tPart 7 <> shiftX 4 rShort tčPath = tPart 3 <> shiftX 3 čFlat tǧPath = tPart 4 <> shiftX 5 ǧPath twPath = tPart 6 <> shiftX 4 wPath thPath = tPart 4 <> shiftX 4 hPath tfPath = tPart 4 <> shiftX 4 fPath tjPath = tPart 3.5 <> shiftX (-0.5) jTall 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 = 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)] kPath = kLeft <> kBottom <> shiftX 5 longAPath kBottom = P [cR (0,0) (3,0) (5,-0.5)] kShortPart = kLeft <> kBottomShort kShort = kShortPart <> shiftX 4 longAPath kkPath = kShortPart <> shiftX 4 kShort ksPath = kShortPart <> shiftX 4 sPath g = simpleG gPath 5 gPath = gHat <> kPath gHat = P [mA (1.5,-2.75), qR (1.5,0.125) (3.5,-0.25)] gShort = gShortHat <> kShort gShortHat = P [mA (1.25,-2.75), qR (1.25,0.125) (2.75,-0.25)] d = simpleG dPath 5 dPath = dPart <> shiftX 5 longAPath dPart' = dBase <> dJoin' dPart = dBase <> dJoin dJoin = P [cR (2,0) (3,-0.75) (3,-1.5)] dJoin' = P [cR (1.75,0) (2.5,-0.75) (2.85,-2.5)] dBase = P [mA (0,0), lR (3.5,0), cR (0,1.5) (-3.5,3.5) (-3.5,5), lR (2,0)] dFree = dBase <> P [mA (2,5), lR (1.5,0)] dLong = dFree <> shiftX 1.5 dJoin ƶGlyphs = [("ƶ",ƶ), ("ƶt",ƶt), ("ƶk",ƶk), ("ƶg",ƶg), ("ƶd",ƶd), ("ƶƶ",ƶƶ), ("ƶp",ƶp), ("ƶb",ƶb), ("ƶs",ƶs), ("ƶš",ƶš), ("ƶl",ƶl), ("ƶm",ƶm), ("ƶn",ƶn), ("ƶr",ƶr), ("ƶč",ƶč), ("ƶǧ",ƶǧ), ("ƶw",ƶw), ("ƶh",ƶh), ("ƶf",ƶf), ("ƶj",ƶj)] ƶ = 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 ƶkPath = dPart <> shiftX 5 kShort ƶgPath = dPart <> shiftX 5 gShort ƶdPath = dFree <> shiftX 5 dPath ƶƶPath = dFree <> shiftX 5 ƶPath ƶpPath = dFree <> shiftX 5 pPath ƶbPath = dPart' <> shiftX 5 bPath ƶsPath = dPart <> shiftX 5 sPath ƶšPath = dPart <> shiftX 5 šPath ƶlPath = dPart <> shiftX 5 lPath ƶmPath = dPart <> shiftX 5 mPath ƶnPath = dPart' <> shiftX 4.75 nPath ƶrPath = dPart <> P [qR (0,1.5) (1,1.5), qR (2,0) (2,-2), mR (0,-6), lR (0,8)] ƶčPath = dFree <> shiftX 5 čPath ƶǧPath = dFree <> shiftX 5 ǧPath ƶwPath = dPart' <> shiftX 5 wPath ƶhPath = dPart <> shiftX 5 hPath ƶfPath = dFree <> shiftX 4 fPath ƶjPath = dFree <> shiftX 4.5 jPathShort ƶ0Path = dFree <> P [mA (1,7), cR (1.8,-0.25) (2.2,0) (2.5,0.5)] pGlyphs = [("p", p), ("pp", pp), ("ps", ps), ("pj", pj)] 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)] pPart = shiftX 2 pInit <> P [cR (-1,-3) (-2,-4) (0,-5), cR (1,-0.5) (2.5,-0.5) (4,0)] pPath = pPart <> shiftX 5.25 aPath ppPath = shiftX 2 pInit <> shiftX 4.5 pInit <> P [mA (1.5,5), cR (-1,-3) (-2,-4) (0,-5), cR (1,-0.5) (2.5,-0.5) (7.5,0)] <> shiftX 8.75 aPath psPath = pPart <> shiftX 5.5 sPath pjPath = shiftX 2 pInit <> P [cR (-1,-3) (-2,-4) (0,-5), cR (1,-0.5) (4,-1) (4,1), lR (0,4), mR (0,-4), cR (0,-2) (3.5,-1) (4.5,-1)] <> shiftX 9.75 aPath bGlyphs = [("b", b), ("bj", bj)] b = simpleG bPath 6 bj = simpleG bjPath 9 bPath = shiftX 1 gHat <> wPart <> shiftX 6 longAPath bjPath = bPath <> P [mA (6,0.5), qR (1.5,0) (3,-0.5)] <> shiftX 8.75 aPath sGlyphs = [("s",s), ("st",st), ("sk",sk), ("sg",sg), ("sd",sd), ("sƶ",sƶ), ("sp",sp), ("sb",sb), ("ss",ss), ("sš",sš), ("sl",sl), ("sm",sm), ("sn",sn), ("sr",sr), ("sč",sč), ("sǧ",sǧ), ("sw",sw), ("sh",sh), ("sf",sf), ("sj",sj)] 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), cR (0.15,0.5) (0,2.5) (0,3.5), aR 1.5 1.5 0 Small CCW (3,0)] sPart = sPart' <> P [qR (0,-3) (-0.5,-3.5)] sPartIso = sPart' <> P [cR (0,-0.5) (-0.15,-2.5) (0,-3.5)] sPartLine = sPart <> P [mA (2.5,0), qR (1,0.25) (2.5,0)] stPath = sPart <> P [lR (1,0)] <> shiftX 3.5 tNarrow skPath = sPartLine <> shiftX 5 kShort sgPath = sPartLine <> shiftX 5 gShort sdPath = sPart <> P [mA (2.5,0), lR (1.5,0)] <> shiftX 4 dPath sƶPath = sPart <> P [mA (2.5,0), lR (1.5,0)] <> shiftX 4 ƶPath spPath = sPartIso <> shiftX 4 pPath sbPath = sPart' <> P [cR (0,-2.5) (-0.25,-2.5) (0,-6.5), qR (2,0.5) (7.5,0), lR (0,8)] <> shiftX 4.5 wPart <> P [mA (10.5,5)] ssPath = sPartLine <> shiftX 5 sPath sšPath = sPartLine <> shiftX 5 šPath slPath = sPart <> P [mA (2.5,0), qR (1.25,0.5) (3.5,0)] <> shiftX 4.5 lPath smPath = sPartLine <> shiftX 4.5 mPath snPath = sPart <> P [mA (2.5,0), qR (1.5,0.5) (4.5,0)] <> shiftX 4.5 nPath srPath = sPart <> P [mA (2.5,0), qR (2,0.75) (4.5,0.25)] <> shiftX 4 rShort sčPath = sPart <> P [mA (2.5,0), lR (1.5,0)] <> shiftX 3 čFlat sǧPath = sPartIso <> shiftX 4 ǧPath swPath = sPart <> P [mA (2.5,0), lR (4,0)] <> shiftX 4 wPath shPath = sPartIso <> shiftX 5 hPath sfPath = sPartIso <> shiftX 4.25 fPath sjPath = sPartLine <> jTall s0Path = sPath <> P [mA (1.5,7), cR (1.8,-0.25) (2.6,0) (3,0.5)] šGlyphs = [("š",š), ("št",št), ("šk",šk), ("šg",šg), ("šd",šd), ("šƶ",šƶ), ("šp",šp), ("šb",šb), ("šs",šs), ("šš",šš), ("šl",šl), ("šm",šm), ("šn",šn), ("šr",šr), ("šč",šč), ("šǧ",šǧ), ("šw",šw), ("šh",šh), ("šf",šf), ("šj",šj)] š@(G {path = šPath}) = s2š s šš = ss {path = ššPath} šp = sp {path = špPath} šb = sb {path = šbPath} št = s2š st šk = s2š sk šg = s2š sg šd = s2š sd šƶ = s2š sƶ šs = s2š ss šl = s2š sl šm = s2š sm šn = s2š sn šr = s2š sr šč = s2š sč šǧ = s2š sǧ šw = s2š sw šh = s2š sh šf = s2š sf šj = s2š sj š0 = s2š s0 šLine = P [mA (0.5,-2.25), qR (1.5,-0.25) (2,0.25)] ššPath = P [mA (0.5,-2), cR (2,-1) (5,1) (7,0)] <> ssPath špPath = šLine <> spPath šbPath = sPart <> šLine <> P [mA (3,0), lR (4,0)] <> shiftX 4 bPath s2š g@(G {path}) = g {path = šLine <> path} lGlyphs = [("l",l), ("ll", ll), ("lt",lt), ("lk",lk), ("lg",lg), ("ld",ld), ("lƶ",lƶ), ("lp",lp), ("lb",lb), ("ls",ls), ("lš",lš), ("lm",lm), ("ln",ln), ("lr",lr), ("lč",lč), ("lǧ",lǧ), ("lw",lw), ("lh",lh), ("lf",lf), ("lj",lj)] 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 <> 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), cR (-1.5,0.3) (-2,2.5) (0,2.5)] lJoin = P [lR (0.25,0)] <> dJoin lJoin' = P [lR (0.25,0)] <> dJoin' lPart = lBase <> lJoin lPart' = lBase <> lJoin' lFree = lBase <> P [qR (2.25,0) (2.5,-0.5)] lFree' = lBase <> P [qR (2,0) (2.25,-0.75)] llPath = lPart <> shiftX 4.5 lPath ltPath = lBase <> P [qR (4.5,0) (4.75,-3)] <> shiftX 4.5 tPath lkPath = lPart <> shiftX 4.5 kShort lgPath = lPart <> shiftX 4.5 gShort ldPath = lFree' <> shiftX 4.5 dPath lƶPath = lFree' <> shiftX 4.5 ƶPath lpPath = lFree' <> shiftX 4.5 pPath lbPath = lPart' <> shiftX 4.5 bPath lsPath = lPart <> shiftX 4.5 sPath lšPath = lPart <> shiftX 4.5 šPath lmPath = lPart <> shiftX 4.5 mPath lnPath = lPart' <> shiftX 4.25 nPath lrPath = lPart <> P [qR (0,1.5) (1,1.5), qR (2,0) (2,-2), mR (0,-6), lR (0,8)] lčPath = lFree' <> shiftX 4.5 čPath lǧPath = lFree' <> shiftX 4.5 ǧPath lwPath = lPart' <> shiftX 4.5 wPath lhPath = lPart <> shiftX 4.5 hPath lfPath = lFree' <> shiftX 4.5 fPath ljPath = lFree' <> jTall l0Path = lFree <> P [mA (1.25,7), cR (1.8,-0.25) (2.2,0) (2.5,0.5)] mGlyphs = [("m",m), ("mt",mt), ("mk",mk), ("mg",mg), ("md",md), ("mƶ",mƶ), ("mp",mp), ("mb",mb), ("ms",ms), ("mš",mš), ("ml",ml), ("mm",mm), ("mn",mn), ("mr",mr), ("mč",mč), ("mǧ",mǧ), ("mw",mw), ("mh",mh), ("mf",mf), ("mj",mj)] m = simpleG mPath 6.125 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 <> shiftX 6 longAPath mInit = P [mA (0.5,0), cR (-0.25,0.2) (-0.5,2.25) (-0.5,3.5)] mBumpI = P [cR (0,2) (2.5,2) (3,0)] <> mLine mLine = P [qR (0.125,-1) (0.125,-2), mR (-0.125,2)] mBumpF = P [cR (-0.5,2) (2.5,2) (3,0)] mBumpM = mBumpF <> mLine mBumpsN n = mconcat $ [mBumpI] <> replicate n mBumpM <> [mBumpF] mBumps = mBumpsN 0 mPart = mInit <> mBumps mFree = mPart <> P [cR (0.5,-2) (-0.75,-4) (-1.5,-3.5)] mtPath = mPart <> shiftX 4.5 tPath mkPath = mPart <> shiftX 6 kShort mgPath = mPart <> shiftX 6 gShort mdPath = mFree <> shiftX 7 dPath mƶPath = mFree <> shiftX 7 ƶPath mpPath = mFree <> shiftX 7 pPath mbPath = mPart <> shiftX 6 bPath msPath = mPart <> shiftX 6 sPath mšPath = mPart <> shiftX 6 šPath mlPath = mPart <> shiftX 6 lPath mmPath = mInit <> mBumpsN 2 <> P [mR (0,-3.5), lR (0,5)] mnPath = mPart <> shiftX 6 nPath mrPath = mInit <> mBumpsN 1 <> P [mR (0,-6.5), lR (0,8)] mčPath = mFree <> shiftX 7 čPath mǧPath = mFree <> shiftX 7 ǧPath mwPath = mPart <> shiftX 6 wPath mhPath = mPart <> shiftX 6 hPath mfPath = mFree <> shiftX 7 fPath mjPath = mFree <> shiftX 4.5 jPath m0Path = mFree <> P [mA (1.25,7), cR (3.55,-0.3) (3.8,0) (4,0.5)] nGlyphs = [("n", n), ("nt", nt), ("nk", nk), ("ng", ng), ("nd", nd), ("nƶ", nƶ), ("np", np), ("nb", nb), ("ns", ns), ("nš", nš), ("nl", nl), ("nm", nm), ("nn", nn), ("nr", nr), ("nč", nč), ("nǧ", nǧ), ("nw", nw), ("nh", nh), ("nf", nf), ("nj", nj)] 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 <> 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 (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)] nFree' = nPart' <> P [qR (0.8,-0.125) (1,-1)] ntPath = nLong <> shiftX 5 tPath nkPath = nFlat <> shiftX 5 kShort ngPath = nFlat <> shiftX 5 gShort ndPath = nFlat <> shiftX 5 dPath nƶPath = nFlat <> shiftX 5 ƶPath npPath = nFree <> shiftX 4.75 pPath nbPath = nFlat <> P [mA (5,0), lR (2,0)] <> shiftX 5 bPath nsPath = nFlat <> shiftX 5 sPath nšPath = nFlat <> shiftX 5 šPath nlPath = nFlat <> P [mA (5,0), lR (1,0)] <> shiftX 5 lPath nmPath = nFlat <> P [mA (5,0), lR (0.5,0)] <> shiftX 5 mPath nnPath = nFlat <> P [mA (5,0), lR (2,0)] <> shiftX 5 nPath nrPath = nFree' <> P [qR (0,1) (1,1), qR (2,0) (2,-2), mR (0,-6), lR (0,8)] nčPath = nFlat <> shiftX 4 čFlat nǧPath = nFree' <> shiftX 4.75 ǧPath nwPath = nFlat <> P [mA (5,0), lR (2,0)] <> shiftX 5 wPath nhPath = nFlat <> shiftX 5 hPath nfPath = nFree' <> shiftX 4.75 fPath njPath = nFree' <> jTall n0Path = nFree <> P [mA (1,7), cR (1.8,-0.25) (2.2,0) (2.5,0.5)] rGlyphs = [("r", r), ("rt", rt), ("rk", rk), ("rg", rg), ("rd", rd), ("rƶ", rƶ), ("rp", rp), ("rb", rb), ("rs", rs), ("rš", rš), ("rl", rl), ("rm", rm), ("rn", rn), ("rr", rr), ("rč", rč), ("rǧ", rǧ), ("rw", rw), ("rh", rh), ("rf", rf), ("rj", rj)] 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 <> shiftX 5 longAPath rPart = P [mA (0,5), cR (3.5,0) (5,-1) (5,-2)] rPartMid = P [mA (0,5), cR (1.25,0) (3.25,-1) (3.25,-2)] rPartShort = P [mA (0,5), cR (1,0) (3,-1) (3,-2)] rShort = rPartShort <> shiftX 3 longAPath rtPath = rPartMid <> shiftX 2 tPath rkPath = rPartShort <> shiftX 3 kShort rgPath = rPartShort <> shiftX 3 gShort rdPath = rMid <> shiftX 4.5 dPath rƶPath = rMid <> shiftX 4.5 ƶPath rpPath = rMid <> shiftX 4.5 pPath rbPath = rMid <> shiftX 4.5 bPath rsPath = rMid <> shiftX 4.5 sPath ršPath = rMid <> shiftX 4.5 šPath rlPath = rMid <> shiftX 4.5 lPath rmPath = rMid <> shiftX 4.5 mPath rnPath = rShort <> shiftX 4 nPath rrPath = rShort <> shiftX 3 rShort rčPath = rMid <> shiftX 4.5 čPath rǧPath = rMid <> shiftX 4.5 ǧPath rwPath = rMid <> shiftX 4.5 wPath rhPath = rMid <> shiftX 4.5 hPath rfPath = rMid <> shiftX 4.5 fPath rjPath = rMid <> shiftX 4.5 jPathShort rMid = rPartMid <> shiftX 3.25 longAPath r0Path = ŕPath <> P [mA (1.25,7), cR (2.2,-0.25) (2.8,0) (3,0.5)] čGlyphs = [("č", č), ("čs", čs), ("čč", čč)] č = 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' čPart' = P [aR 1.25 1.25 0 Small CW (0,2.5), lR (-2,0), mR (2,0), aR 1.25 1.25 0 Small CW (0,2.5), cR (-0.2,0.25) (-2.25,0) (-2.75,-0.5)] čJoin = P [mA (2.5,5), cR (1.5,0) (2.5,-0.5) (2.5,-1)] čPartFlat = P [mA (0,0), lR (3.5,0)] <> čPart' čFlat = čPartFlat <> shiftX 1 čJoin <> P [mA (6,0), lR (0,5)] čsPath = čPart <> shiftX 5 sPath ččPath = čPart <> shiftX 5 čPath ǧ = 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), aR 1.25 1.25 0 Small CW (0,2.5), lR (-2,0), mR (2,0), aR 1.25 1.25 0 Small CW (0,2.5), lR (-2,0), mR (2,0), aR 1.25 1.25 0 Small CW (0,2.5), cR (-0.2,0.25) (-2.25,0) (-2.75,-0.5)] w = simpleG wPath 6 wPath = wPart <> shiftX 6 aPath wPart = uPath <> P [mA (2.5,0), lR (3.5,0)] hGlyphs = [("h", h), ("hh", hh), ("hn", hn), ("hm", hm)] h = simpleG hPath 8.5 hh = simpleG hhPath 16.5 hn = simpleG hnPath 15 hm = simpleG hmPath 16 hPath = hPart <> shiftX 3.5 gHat <> shiftX 8.5 longAPath hPart' x = sPart <> P [mA (2.5,0), lR (1.5,0)] <> shiftX 4 x hPart = hPart' sPartIso hhPath = hPart' sPart <> P [mA (6.5,0), lR (1.5,0)] <> shiftX 8 hPart <> shiftX 11.5 gHat <> P [mA (16.5,-3), lR (0,8)] hnPath = hPath <> shiftX 10 nPath hmPath = hPath <> shiftX 10 mPath fGlyphs = [("f", f), ("fn", fn), ("fm", fm)] 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), cR (0.5,-1) (-1.75,-1) (-1.75, 0), cR (0,1) (1.75,0.75) (1.75,1.75), cR (0,0.35) (-0.15,0.65) (-1.75,0.75), cR (-3.2,0.5) (-3.2,-5) (1,-5.5), cR (1.6,-0.25) (2.5,1) (2.5,3) ] fnPath = fPath <> shiftX 7 nPath fmPath = fPart <> P [lR (0,1)] <> mBumps <> 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 = 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 jTall = gHat <> shiftX 5 longAPath vGlyphs = [("a", a), ("á", á), ("i", i), ("í", í), ("u", u), ("ú", ú), ("ai", ai), ("au", au), ("ia", ia), ("ua", ua), ("ḿ", ḿ), ("ń", ń), ("ł", ł), ("ŕ", ŕ)] a = simpleG aPath 0.125 á = simpleG áPath 2.125 i = j í = 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)] longAPath = P [mA (0.25,-3), cR (-0.25,1) (-0.25,2) (-0.25,5), lR (0, 3)] áPath = aPath <> shiftX 2 aPath íPath = P [mA (0,0), lR (5,0)] <> shiftX 2.75 aPath <> shiftX 4.75 aPath uPath = P [mA (2.25,0), cR (-3.2,0.5) (-3.2,5.5) (0,5), cR (3.2,-0.5) (3.2,-5.5) (0,-5)] uNarrow = P [mA (1.5,0), cR (-2.2,0.25) (-2.2,5.25) (0,5), cR (2.2,-0.25) (2.2,-5.25) (0,-5)] úPath = uPath <> P [mA (4.25,-3), cR (-1.5,3) (-3.2,8) (-2.8,12)] aiPath = aPath <> P [mR (2,-5), lR (3,0)] <> shiftX 4.75 aPath auPath = aPath <> shiftX 1.5 uNarrow iaPath = P [mA (0,0), lR (3,0)] <> shiftX 2.75 aPath <> shiftX 5 aPath uaPath = uNarrow <> shiftX 4.5 aPath ḿPath = mFree ńPath = nFree łPath = lFree ŕPath = rPart <> shiftX 5 aPath adot = circR 0.2 withWidth f (SI {width}) = (f width, width) sP = simpleDia . P -- 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 <> diLine dí = da <> [sP [cR (1,0) (4,-3) (0,-3), qR (-3,0) (-4,1)]] du = da <> duLine dú = du <> [sP [mR (0.5, 3.5)]] <> duLine duLine = [sP [qR (-1, -2.75) (-2, -3.5)]] diLine = [sP [qR (1.5, -1.5) (1.5, -4)]] dai = da <> [sP [mR (-4,-3), lR (2.5,0), qR (-0.5,1) (-0.5,3)]] dau = da <> [sP [mR (-3,-3.5), cR (-1.5,0.25) (-1.5,3.25) (0,3), cR (1.5,-0.25) (1.5,-3.25) (0,-3), cR (1,-0.25) (2,0.5) (3,0)]] dia = di <> [sP $ adot (-4,0)] dua = du <> [sP $ adot (-2,0)] dḿ = da <> [sP [mR (-4,-3), cR (-0.375,1.125) (-0.25,1.275) (-0.25,1.375), aR 0.625 0.625 0 Small CCW (1.5,0), lR (0,-1), mR (0,1), aR 0.625 0.625 0 Small CCW (1.5,0), cR (0.125,-0.1) (0,-1.125) (-0.25,-1.375)]] dń = da <> [sP [mR (-2,-2.5), qR (0.25,-0.625) (-0.5,-0.5), cR (-1.5,0.25) (-1.5,2.75) (0,2.5), qR (0.375,-0.0625) (0.5,-0.3)]] dł = da <> [sP [mR (-2,-2.75), cR (0.125,-0.125) (0,-0.375) (-0.625,-0.25), cR (-0.75,0.15) (-1,1.25) (0,1.25), lR (0.375,0), mR (-0.625,0), cR (-0.75,0.15) (-1,1.25) (0,1.25), qR (1,0) (1.125,-0.375)]] dŕ = da <> [sP [mR (-3,0), cR (1,0) (3,-1) (3,-2)]] punctuation :: Map Text Glyph punctuation = Map.fromList [(".", eos), ("?", eos), ("!", eos), (",", eop), (":", eop), (";", eop), ("…", ellipsis)] eos = simpleG eosPath 4 eosPath = P $ circA 1 (4,1) <> circA 1 (4,4) eop = simpleG eopPath 2 eopPath = P $ circA 1 (3,2.5) 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, 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 = 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 = 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 = simpleG wavePath 4 ellipsis :: Glyph ellipsis = simpleG (shiftX 3.5 wavePath) 6 wavePath = P [mA (0,2.5), cR (1.5,-2) (2.5,2) (4,0)]