From 4f70a140932277cc2ef6292e47ebe25c5d8c3230 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Sun, 22 Jan 2017 22:34:22 +0000
Subject: fontspec (22jan17)

git-svn-id: svn://tug.org/texlive/trunk@43016 c570f23f-e606-0410-a88d-b1316a301751
---
 .../source/latex/fontspec/fontspec-patches.dtx     | 61 ++++++++++++++++------
 1 file changed, 46 insertions(+), 15 deletions(-)

(limited to 'Master/texmf-dist/source/latex/fontspec/fontspec-patches.dtx')

diff --git a/Master/texmf-dist/source/latex/fontspec/fontspec-patches.dtx b/Master/texmf-dist/source/latex/fontspec/fontspec-patches.dtx
index 15c5aa66c02..7114a8af2ea 100644
--- a/Master/texmf-dist/source/latex/fontspec/fontspec-patches.dtx
+++ b/Master/texmf-dist/source/latex/fontspec/fontspec-patches.dtx
@@ -1,7 +1,7 @@
 % \section{Patching code}
 %
 %    \begin{macrocode}
-%<*patches>
+%<*fontspec>
 %    \end{macrocode}
 %
 %
@@ -97,29 +97,60 @@
 % \begin{macro}{\eminnershape}
 % \begin{macro}{\emfontdeclare}
 % Redefinition of |{\em ...}| and |\emph{...}| to allow nesting of emphases.
+%
 %    \begin{macrocode}
-\int_new:N \l_@@_em_int
-\int_new:N \l_@@_emdef_int
 \cs_new_protected:Npn \emfontdeclare #1
   {
-    \int_zero:N \l_@@_emdef_int
-    \clist_map_inline:nn {#1}
-      {
-        \int_incr:N \l_@@_emdef_int
-        \cs_set:cpn {@@_em_font_ \int_use:N \l_@@_emdef_int _switch:} {##1}
-      }
+    \prop_clear:N \g_@@_em_prop
+    \int_zero:N   \l_@@_emdef_int
+    \group_begin:
+      \normalfont
+      \clist_map_inline:nn {\emreset,#1}
+        {
+          ##1
+          \prop_gput:NxV \g_@@_em_prop { \f@series/\f@shape } { \l_@@_emdef_int }
+          \prop_gput:Nxn \g_@@_em_prop { switch-\int_use:N \l_@@_emdef_int } { ##1 }
+          \int_incr:N \l_@@_emdef_int
+        }
+    \group_end:
   }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \DeclareRobustCommand \em
   {
     \@nomath\em
+
+    \prop_get:NxNT \g_@@_em_prop { \f@series/\f@shape } \l_@@_em_tmp_tl
+      { \int_set:Nn \l_@@_em_int { \l_@@_em_tmp_tl } }
+
     \int_incr:N \l_@@_em_int
-    \use:c {@@_em_font_ \int_use:N \l_@@_em_int _switch:}
+
+    \prop_get:NxNTF \g_@@_em_prop { switch-\int_use:N \l_@@_em_int } \l_@@_em_switch_tl
+      { \l_@@_em_switch_tl }
+      {
+        \int_zero:N \l_@@_em_int
+        \emreset
+      }
+
   }
+%    \end{macrocode}
+% Document commands:
+%    \begin{macrocode}
 \DeclareTextFontCommand{\emph}{\em}
+\cs_set:Npn \emreset { \upshape }
 \cs_set:Npn \emshape { \itshape }
 \cs_set:Npn \eminnershape { \upshape }
 \emfontdeclare{ \emshape, \eminnershape }
 %    \end{macrocode}
+% Ensure nesting resets when necessary:
+%    \begin{macrocode}
+\cs_set:Npn \reset@font { \normalfont \int_zero:N \l__fontspec_em_int }
+%    \end{macrocode}
+% Programmer's interface for setting nesting level:
+%    \begin{macrocode}
+\cs_new:Nn \fontspec_set_em_level:n { \int_set:Nn \l_@@_em_int {#1} }
+%    \end{macrocode}
 % \end{macro} \end{macro} \end{macro} \end{macro} \end{macro}
 %
 % \subsection{\cmd\-}
@@ -148,19 +179,19 @@
 % Many thanks to Apostolos Syropoulos for discovering this problem and writing the  redefinion of \LaTeX's |verbatim| environment and \cs{verb*} command.
 %
 % \begin{macro}{\fontspec_visible_space:}
-% Print \unichar{2434}{Open box}, which is used to visibly display a space character.
+% Print \unichar{2423}{Open box}, which is used to visibly display a space character.
 %    \begin{macrocode}
 \cs_new:Nn \fontspec_visible_space:
  {
-  \font_glyph_if_exist:NnTF \font {"2423}
+  \@@_primitive_font_glyph_if_exist:NnTF \font {"2423}
    { \char"2423\scan_stop: }
    { \fontspec_visible_space_fallback: }
  }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\fontspec_visible_space:@fallback}
-% If the current font doesn't have \unichar{2434}{Open box}, use Latin Modern Mono instead.
+% \begin{macro}{\fontspec_visible_space_fallback:}
+% If the current font doesn't have \unichar{2423}{Open box}, use Latin Modern Mono instead.
 %    \begin{macrocode}
 \cs_new:Nn \fontspec_visible_space_fallback:
  {
@@ -302,5 +333,5 @@
 %
 %
 %    \begin{macrocode}
-%</patches>
+%</fontspec>
 %    \end{macrocode}
-- 
cgit v1.2.3

