6

Today, once again, the ultimate [X]HTML parser using regular expressions answer came to my attention and I have decided to try to typset it using XeLaTeX. The result is far from perfect, worse even than Chrome's rendering.

Is there a way I can improve the result? Is XeLaTeX and LuaLaTeX incapable of handling the Ponny?

MWE:

\documentclass[]{article}
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{\usepackage{microtype}}{}
\usepackage[normalem]{ulem}
\setmainfont{Doulos SIL}

\title{html - RegEx match open tags except XHTML self-contained tags - Stack
Overflow}
\date{}
\author{StackOverflow}

\begin{document}
\maketitle

Rege̿̔̉x-based
HTML parsers are the cancer that is killing StackOverflow \emph{it is
too late it is too late we cannot be saved} the trangession of a chi͡ld
ensures regex will consume all living tissue (except for HTML which it
cannot, as previously prophesied) \emph{dear lord help us how can anyone
survive this scourge} using regex to parse HTML has doomed humanity to
an eternity of dread torture and security holes \emph{using rege}x as a
tool to process HTML establishes a brea\emph{ch between this world} and
the dread realm of c͒ͪo͛ͫrrupt entities (like SGML entities, but \emph{more
corrupt) a mere glimp}se of the world of reg​\textbf{ex parsers for HTML
will ins}​tantly transport a p\emph{rogrammer's consciousness i}nto a
w\emph{orl}d of ceaseless screaming, he comes\sout{, the pestilent
sl}ithy regex-infection wil​\textbf{l devour your HT}​ML parser,
application and existence for all time like Visual Basic only worse
\emph{he comes he com}es \emph{do not fi}​ght h\textbf{e com̡e̶s, ̕h̵i}​s
un̨ho͞ly radiańcé de\emph{stro҉ying all enli̍̈́̂̈́ghtenment, HTML tags
\textbf{lea͠ki̧n͘g fr̶ǫm ̡yo​͟ur eye͢s̸ ̛l̕ik͏e liq}​uid p}ain, the song of re̸gular
exp​re\sout{ssion parsing} will exti\emph{​nguish the voices of
mor​\textbf{tal man from the sp}​here I can see it can you see ̲͚̖͔̙î̩́t̲͎̩̱͔́̋̀ it is
beautiful t​}he f\texttt{inal snuf}fing o\emph{f the lie​\textbf{s of
Man ALL IS LOŚ͖̩͇̗̪̏̈́T A}}\textbf{LL I​S L}OST th\emph{e pon̷y he come}s he
c̶̮om\sout{es he co}\textbf{\sout{me}s t\emph{he} ich​}or permeat\emph{es
al}l MY FAC\emph{E MY FACE ᵒh god n\textbf{o NO NOO̼}}\textbf{O​O N}Θ
stop t\emph{he an​*̶͑̾̾​̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨ}e̠̅s\texttt{ ͎a̧͈͖r̽̾̈́͒͑e} n\textbf{​ot rè̑ͧ̌aͨl̘̝̙̃ͤ͂̾̆ ZA̡͊͠͝LGΌ ISͮ̂҉̯͈͕̹̘̱ T}O͇̹̺ͅƝ̴ȳ̳
TH̘\textbf{Ë͖́̉ ͠P̯͍̭O̚​N̐Y̡ H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝}S̨̥̫͎̭ͯ̿̔̀ͅ

\end{document}

UPDATE

Using the Doulos SIL font gets me something closer to what Firefox renders but still far from perfect.

  • It seems to be a problem with the encoding. Did you paste that text from a website? – Aradnix Sep 10 '14 at 8:41
  • 2
    I don't see any font switch, and i am pretty sure Latin Modern doesn't have all the needed glyphs. – Johannes_B Sep 10 '14 at 8:46
  • @Aradnix: The encoding is fine. See the linked SO answer. – wilx Sep 10 '14 at 8:52
  • @Johannes_B: OK. Using Doulos SIL makes the result significantly more as expected. Is there a font with even better coverage? – wilx Sep 10 '14 at 9:07
  • How does DejaVu Serif look? – Torbjørn T. Sep 10 '14 at 9:26
7

Try with code2000.ttf and XeLaTeX.

enter image description here

    \documentclass[]{article}
    \usepackage{fontspec}
    \defaultfontfeatures{Scale=MatchLowercase}
    \setmainfont{code2000.ttf}

    \title{html - RegEx match open tags except XHTML self-contained tags - Stack
    Overflow}
    \date{}
    \author{StackOverflow}

    \begin{document}
   \documentclass[]{article}
\usepackage{fontspec}
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{code2000.ttf}

\title{html - RegEx match open tags except XHTML self-contained tags - Stack
Overflow}
\date{}
\author{StackOverflow}

\begin{document}
You can't parse [X]HTML with regex. Because HTML can't be parsed by regex. Regex is not a tool that can be used to correctly parse HTML. As I have answered in HTML-and-regex questions here so many times before, the use of regex will not allow you to consume HTML. Regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML. HTML is not a regular language and hence cannot be parsed by regular expressions. Regex queries are not equipped to break down HTML into its meaningful parts. so many times but it is not getting to me. Even enhanced irregular regular expressions as used by Perl are not up to the task of parsing HTML. You will never make me crack. HTML is a language of sufficient complexity that it cannot be parsed by regular expressions. Even Jon Skeet cannot parse HTML using regular expressions. Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp. Parsing HTML with regex summons tainted souls into the realm of the living. HTML and regex go together like love, marriage, and ritual infanticide. The <center> cannot hold it is too late. The force of regex and HTML together in the same conceptual space will destroy your mind like so much watery putty. If you parse HTML with regex you are giving in to Them and their blasphemous ways which doom us all to inhuman toil for the One whose Name cannot be expressed in the Basic Multilingual Plane, he comes. HTML-plus-regexp will liquify the n​erves of the sentient whilst you observe, your psyche withering in the onslaught of horror. Rege̿̔̉x-based HTML parsers are the cancer that is killing StackOverflow it is too late it is too late we cannot be saved the trangession of a chi͡ld ensures regex will consume all living tissue (except for HTML which it cannot, as previously prophesied) dear lord help us how can anyone survive this scourge using regex to parse HTML has doomed humanity to an eternity of dread torture and security holes using regex as a tool to process HTML establishes a breach between this world and the dread realm of c͒ͪo͛ͫrrupt entities (like SGML entities, but more corrupt) a mere glimpse of the world of reg​ex parsers for HTML will ins​tantly transport a programmer's consciousness into a world of ceaseless screaming, he comes, the pestilent slithy regex-infection wil​l devour your HT​ML parser, application and existence for all time like Visual Basic only worse he comes he comes do not fi​ght he com̡e̶s, ̕h̵i​s un̨ho͞ly radiańcé destro҉ying all enli̍̈́̂̈́ghtenment, HTML tags lea͠ki̧n͘g fr̶ǫm ̡yo​͟ur eye͢s̸ ̛l̕ik͏e liq​uid pain, the song of re̸gular exp​ression parsing will exti​nguish the voices of mor​tal man from the sp​here I can see it can you see ̲͚̖͔̙î̩́t̲͎̩̱͔́̋̀ it is beautiful t​he final snuffing of the lie​s of Man ALL IS LOŚ͖̩͇̗̪̏̈́T ALL I​S LOST the pon̷y he comes he c̶̮omes he comes the ich​or permeates all MY FACE MY FACE ᵒh god no NO NOO̼O​O NΘ stop the an​*̶͑̾̾​̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨe̠̅s ͎a̧͈͖r̽̾̈́͒͑e n​ot rè̑ͧ̌aͨl̘̝̙̃ͤ͂̾̆ ZA̡͊͠͝LGΌ ISͮ̂҉̯͈͕̹̘̱ TO͇̹̺ͅƝ̴ȳ̳ TH̘Ë͖́̉ ͠P̯͍̭O̚​N̐Y̡ H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔̀ͅ պետք է եղբայրաբար վերաբերվեն
\end{document}

The font code2000 and code2001 has an amazing history and can be found at fontspace. I also added some Armenian at the bottom of the text to enhance readability!

  • This looks a lot better. Too bad it misses the bolds and italics. – wilx Sep 10 '14 at 15:26
  • Your code example looks broken. Also, your "are" after "angles" is not monospaced. Have you altered the MWE to remove it? – wilx Sep 10 '14 at 15:30
  • @VáclavZeman I copied the text from the link you have provided to see first if all the unicode symbols are there and added a bit of the Armenian. You need to default italic and bold commands to use code2000 as well then it can get nearer to what you need. – Yiannis Lazarides Sep 10 '14 at 15:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.