Docx Parse: Recognises code points in sym elements which are in the private range
This commit is contained in:
parent
5bedaba080
commit
3bb19307f6
1 changed files with 4 additions and 1 deletions
|
@ -59,6 +59,7 @@ import Data.Bits ((.|.))
|
|||
import qualified Data.ByteString.Lazy as B
|
||||
import qualified Text.Pandoc.UTF8 as UTF8
|
||||
import Control.Monad.Reader
|
||||
import Control.Applicative ((<$>))
|
||||
import qualified Data.Map as M
|
||||
import Text.Pandoc.Compat.Except
|
||||
import Text.Pandoc.Readers.Docx.OMath (readOMML)
|
||||
|
@ -681,13 +682,15 @@ elemToRunElem ns element
|
|||
-- The char attribute is a hex string
|
||||
getSymChar :: NameSpaces -> Element -> RunElem
|
||||
getSymChar ns element
|
||||
| Just s <- getCodepoint
|
||||
| Just s <- lowerFromPrivate <$> getCodepoint
|
||||
, Just font <- getFont =
|
||||
let [(char, _)] = readLitChar ("\\x" ++ s) in
|
||||
TextRun . maybe "" (:[]) $ getUnicode font char
|
||||
where
|
||||
getCodepoint = findAttr (elemName ns "w" "char") element
|
||||
getFont = stringToFont =<< findAttr (elemName ns "w" "font") element
|
||||
lowerFromPrivate ('F':xs) = '0':xs
|
||||
lowerFromPrivate xs = xs
|
||||
getSymChar _ _ = TextRun ""
|
||||
|
||||
stringToFont :: String -> Maybe Font
|
||||
|
|
Loading…
Reference in a new issue