From 0471b6695ec95cefb5142c39396e00264f42c675 Mon Sep 17 00:00:00 2001 From: bruce miller Date: Sat, 22 Jul 2023 12:09:23 -0400 Subject: [PATCH] More ligatures (#2156) * Add ? text ligatures: * Report text ligatures when --debug=document * Add upside down \! and ? to ligatures test case --- lib/LaTeXML/Core/Document.pm | 1 + lib/LaTeXML/Package/TeX.pool.ltxml | 34 ++++++++++++++++++++--------- t/tokenize/ligatures.pdf | Bin 51133 -> 51869 bytes t/tokenize/ligatures.tex | 2 ++ t/tokenize/ligatures.xml | 3 +++ 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/lib/LaTeXML/Core/Document.pm b/lib/LaTeXML/Core/Document.pm index a79bced30..4c311618f 100644 --- a/lib/LaTeXML/Core/Document.pm +++ b/lib/LaTeXML/Core/Document.pm @@ -1243,6 +1243,7 @@ sub closeText_internal { next if ($fonttest = $$ligature{fontTest}) && !&$fonttest($font); $string = &{ $$ligature{code} }($string); } } $node->setData($string) unless $string eq $ostring; + Debug("LIGATURE $ostring => $string") if $LaTeXML::DEBUG{document} && ($string ne $ostring); $$self{node} = $parent; # Effectively closed (->setNode, but don't recurse) return $parent; } else { diff --git a/lib/LaTeXML/Package/TeX.pool.ltxml b/lib/LaTeXML/Package/TeX.pool.ltxml index 4affa796a..866440824 100644 --- a/lib/LaTeXML/Package/TeX.pool.ltxml +++ b/lib/LaTeXML/Package/TeX.pool.ltxml @@ -7112,19 +7112,33 @@ DefMathI('\to', undef, "\x{2192}", role => 'ARROW'); # RIGHTWARDS ARROW??? a bit DefPrimitive('\@@endash', sub { Box("\x{2013}", undef, undef, T_CS('\@@endash')); }); DefPrimitive('\@@emdash', sub { Box("\x{2014}", undef, undef, T_CS('\@@emdash')); }); -DefLigature(qr{--}, "\x{2013}", - fontTest => sub { $_[0]->getFamily ne 'typewriter'; }); # EN DASH (NOTE: With digits before & aft => \N{FIGURE DASH}) -DefLigature(qr{---}, "\x{2014}", - fontTest => sub { $_[0]->getFamily ne 'typewriter'; }); # EM DASH +sub nonTypewriter { + my ($font) = @_; + return ($font->getFamily ne 'typewriter'); } + +sub nonTypewriterT1 { + my ($font) = @_; + return ($font->getFamily ne 'typewriter') && (($font->getEncoding || 'OT1') =~ /^(OT1|T1)$/); } + +# EN DASH (NOTE: With digits before & aft => \N{FIGURE DASH}) +DefLigature(qr{--}, "\x{2013}", fontTest => \&nonTypewriter); # EN dash +DefLigature(qr{---}, "\x{2014}", fontTest => \&nonTypewriter); # EM dash # Ligatures for doubled single left & right quotes to convert to double quotes # [should ligatures be part of a font, in the first place? (it is in TeX!) -DefLigature(qr{\x{2018}\x{2018}}, "\x{201C}", - fontTest => sub { ($_[0]->getFamily ne 'typewriter') - && (($_[0]->getEncoding || 'OT1') =~ /^(OT1|T1)$/); }); # is this needed? -DefLigature(qr{\x{2019}\x{2019}}, "\x{201D}", - fontTest => sub { ($_[0]->getFamily ne 'typewriter') - && (($_[0]->getEncoding || 'OT1') =~ /^(OT1|T1)$/); }); +DefLigature(qr{\x{2018}\x{2018}}, "\x{201C}", fontTest => \&nonTypewriterT1); # double left quote +DefLigature(qr{\x{2019}\x{2019}}, "\x{201D}", fontTest => \&nonTypewriterT1); # double right quote +DefLigature(qr{\?\x{2018}}, UTF(0xBF), fontTest => \&nonTypewriterT1); # ? backquote +DefLigature(qr{!\x{2018}}, UTF(0xA1), fontTest => \&nonTypewriterT1); # ! backquote +# These ligatures are also handled by TeX. +# However, it appears that decent modern fonts in modern browsers handle these at that level. +# So it's likely not worth doing it at the conversion level, possibly adversely affecting search. +# DefLigature(qr{ff}, "\x{FB00}", fontTest => \&nonTypewriterT1); +# DefLigature(qr{fi}, "\x{FB01}", fontTest => \&nonTypewriterT1); +# DefLigature(qr{fl}, "\x{FB02}", fontTest => \&nonTypewriterT1); +# DefLigature(qr{ffi}, "\x{FB03}", fontTest => \&nonTypewriterT1); +# DefLigature(qr{ffl}, "\x{FB04}", fontTest => \&nonTypewriterT1); + DefConstructor('\TeX', "", diff --git a/t/tokenize/ligatures.pdf b/t/tokenize/ligatures.pdf index a09eb65aa59015ab169399e1315fc2af1efc0bcf..ac68f19357c8efa56af0670cf405353f2c3767aa 100644 GIT binary patch delta 20488 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 NhLLb{D{3l{{0B7R>d^oI delta 19767 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 Wa&&ldWo8OBFgP$W3MC~)Peuw*JD7$5 diff --git a/t/tokenize/ligatures.tex b/t/tokenize/ligatures.tex index 14a3f8b11..2aae9ffc6 100644 --- a/t/tokenize/ligatures.tex +++ b/t/tokenize/ligatures.tex @@ -8,6 +8,8 @@ \section{Text Ligatures} A ``quote'' like this. +?`Espa\~nol? !`Hola! + \section{Ignore comments} %foo `%bar diff --git a/t/tokenize/ligatures.xml b/t/tokenize/ligatures.xml index 4bc13fae1..063acddc9 100644 --- a/t/tokenize/ligatures.xml +++ b/t/tokenize/ligatures.xml @@ -21,6 +21,9 @@ In interjection — like this — gets em-dash.

A “quote” like this.

+ +

¿Español? ¡Hola!

+