fix handling of punctuation

This commit is contained in:
Rhiannon Morris 2021-04-29 19:01:42 +02:00
parent 5583865e27
commit 7a205bc6bd
2 changed files with 9 additions and 8 deletions

View file

@ -655,11 +655,11 @@ punctuation :: Map Text Glyph
punctuation = Map.fromList
[(".", eos), ("?", eos), ("!", eos), (",", eop), (":", eop), (";", eop)]
eos = G {path = eosPath, width = 2}
eosPath = P $ circA 1 (1,1) <> circA 1 (1,4)
eos = G {path = eosPath, width = 4}
eosPath = P $ circA 1 (4,1) <> circA 1 (4,4)
eop = G {path = eopPath, width = -2}
eopPath = P $ circA 1 (-1,2.5)
eop = G {path = eopPath, width = 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}

View file

@ -1,13 +1,13 @@
module Split (split) where
import Glyphs
import Text.Megaparsec
import Text.Megaparsec.Char
import Data.Text (Text)
import qualified Data.Text as Text
import qualified Data.Char as Char
import Data.Map (Map, (!))
import qualified Data.Map.Strict as Map
import Text.Megaparsec
import Text.Megaparsec.Char
import Data.Void
@ -39,7 +39,8 @@ ivowel :: P Glyph
ivowel = maxFrom "vowel" vowels
word :: P [Piece]
word = (<>) <$> some initMed <*> fin where
word = [is <> f <> concat p | is <- some initMed, f <- fin, p <- many punct]
where
initMed = try $
[(i, [m]) | i <- initial, m <- medial] <|>
[(v, []) | v <- ivowel] <|>
@ -52,7 +53,7 @@ number = some (digit <|> hash) where
digit = [(numbers ! Char.digitToInt i, []) | i <- digitChar]
punct :: P [Piece]
punct = [[(p, [])] | p <- maxFrom "punctuation" punctuation]
punct = [[(p, [])] | p <- maxFrom "punctuation" punctuation] <* space
dash :: P Piece
dash = (wave, []) <$ chunk ""