OSDN Git Service

lltjext.sty: platex/#77
[luatex-ja/luatexja.git] / src / patches / lltjfont.sty
index 97fff14..ce566c3 100644 (file)
@@ -3,7 +3,7 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjfont}[2017/02/23 Patch to NFSS2 for LuaTeX-ja]
+\ProvidesPackage{lltjfont}[2018/01/12 Patch to NFSS2 for LuaTeX-ja]
 
 \def\ltj@chardef@text@cmd#1{%
   \let\@ifdefinable\@@ifdefinable%
@@ -28,6 +28,7 @@
   \def\DeclareTextComposite#1#2#3#4{}%
   \input{tuenc.def}
   \let\DeclareTextComposite=\ltj@temp@DeclareTextComposite
+  \expandafter\patchcmd\csname TU\string\textasteriskcentered\endcsname{\char}{\ltjalchar}{}{}
 \fi
 
 
 \newbox\zstrutbox
 \def\strutbox{%
   \ifnum\ltjgetparameter{direction}=1 \dstrutbox       % dtou
-  \else\ifnum\ltjgetparameter{direction}=3 \tstrutbox  % tate
-  \else\ifnum\ltjgetparameter{direction}=11 \tstrutbox % utod (tstrutbox)
-  \else\ystrutbox % yoko
-  \fi\fi\fi
+  \else\ifnum\ltjgetparameter{direction}=4 \ystrutbox  % yoko
+  \else\tstrutbox  % tate and utod
+  \fi\fi
 }
 \def\strut{\relax
   \ifnum\ltjgetparameter{direction}=1 % dtou
 }
 \def\ltj@selectfont@patch{%
  \directlua{luatexja.base.start_time_measure('selectfont')}%
+ \global\let\ltj@afont@name=\font@name
  \let\tmp@error@fontshape\error@fontshape
   \let\error@fontshape\error@kfontshape
   \directlua{luatexja.jfont.is_kyenc('\luatexluaescapestring{\k@encoding}')}\ifin@%
        % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり
     \fi
   \fi
+  \global\let\font@name=\ltj@afont@name
   \directlua{luatexja.base.stop_time_measure('selectfont')}%
 }
 \EverySelectfont{\ltj@selectfont@patch}
       \setbox\tstrutbox\hbox{\tate
           \vrule\@width\z@
                 \@height.5\baselineskip \@depth.5\baselineskip}%
-      \setbox\zstrutbox\hbox{\tate
+      \setbox\zstrutbox\hbox{\utod
           \vrule\@width\z@
                 \@height.7\baselineskip \@depth.3\baselineskip}%
      \let\size@update\relax}}
 
-\ifdefined\newluafunction
-  \newluafunction\ltj@@adjust@baseline@inner
-  \begingroup\catcode`\~=12
-  \directlua{%
-    local nulltable = {}
-    local t = lua.get_functions_table()
-    local getfont, dir_tate = font.getfont, luatexja.dir_table.dir_tate
-    local fmt, get_attr = luatexja.jfont.font_metric_table, tex.getattribute
-    local setdimen, set_attr = tex.setdimen, tex.setattribute
-    local dir = luatexja.unary_pars.direction
-    t[\the\ltj@@adjust@baseline@inner] = function()
-      local ft = fmt[get_attr('ltj@curtfnt')] or nulltable
+\newluafunction\ltj@@adjust@baseline@inner
+\begingroup\catcode`\~=12
+\directlua{%
+  local nulltable = {}
+  local t = lua.get_functions_table()
+  local getfont, dir_tate = font.getfont, luatexja.dir_table.dir_tate
+  local fmt, get_attr = luatexja.jfont.font_metric_table, tex.getattribute
+  local setdimen, set_attr = tex.setdimen, tex.setattribute
+  local dir = luatexja.unary_pars.direction
+  t[\the\ltj@@adjust@baseline@inner] = function()
+    local ft = fmt[get_attr('ltj@curtfnt')] or nulltable
+    ft = ft and ft.char_type or nulltable
+    local fk = ft and ft[0] or nulltable
+    local ht, dp, wd = fk.height or 0, fk.depth or 0,
+                       fk.width or ft.zw or 0
+    local fm 
+      = ((getfont(font.current()) or nulltable)
+        .characters or nulltable)[77] or nulltable %% 'M'
+    set_attr('ltj@tablshift',
+      0.5*((fm.height or 0)- (fm.depth or 0) - ht+ dp))
+    if dir() ~= dir_tate then
+      ft = fmt[get_attr('ltj@curjfnt')] or nulltable
       ft = ft and ft.char_type or nulltable
-      local fk = ft and ft[0] or nulltable
-      local ht, dp, wd = fk.height or 0, fk.depth or 0,
-                         fk.width or ft.zw or 0
-      local fm 
-        = ((getfont(font.current()) or nulltable)
-          .characters or nulltable)[77] or nulltable %% 'M'
-      set_attr('ltj@tablshift',
-        0.5*((fm.height or 0)- (fm.depth or 0) - ht+ dp))
-      if dir() ~= dir_tate then
-        ft = fmt[get_attr('ltj@curjfnt')] or nulltable
-        ft = ft and ft.char_type or nulltable
-        fk = ft and ft[0] or nulltable
-        ht, dp, wd = fk.height or 0, fk.depth or 0,
-                     fk.width or ft.zw or 0
-      end
-      setdimen('cht', ht); setdimen('cdp', dp)
-      setdimen('cwd', wd); setdimen('chs', wd)
-      setdimen('cHT', ht+dp)
+      fk = ft and ft[0] or nulltable
+      ht, dp, wd = fk.height or 0, fk.depth or 0,
+                   fk.width or ft.zw or 0
     end
-  }\endgroup
-  \def\adjustbaseline{\luafunction\ltj@@adjust@baseline@inner
-     \cvs\normalbaselineskip}
-\else
-  \newbox\adjust@box
-  \newbox\adjust@box@aux
-  \newdimen\adjust@dimen
-  \def\adjustbaseline{%
-    \setbox\adjust@box\hbox{%
-      \ltj@ykblshift\z@\ltj@tkblshift\z@ 漢}%
-    \cht\ht\adjust@box
-    \cdp\dp\adjust@box
-    \cwd\wd\adjust@box
-    \cvs\normalbaselineskip
-    \chs\cwd
-    \cHT\cht \advance\cHT\cdp
-    \setbox\adjust@box@aux\hbox{\tate\ltj@tkblshift\z@ 漢}%
-    \setbox\adjust@box\hbox{\tate\ltj@tablshift\z@ M}%
-    \adjust@dimen\ht\adjust@box
-    \advance\adjust@dimen\dp\adjust@box
-    \advance\adjust@dimen-\ht\adjust@box@aux
-    \divide\adjust@dimen\tw@
-    \advance\adjust@dimen0.5\dp\adjust@box@aux
-    \advance\adjust@dimen-\dp\adjust@box
-    \ltj@tablshift=\adjust@dimen
-  }
-\fi
+    setdimen('cht', ht); setdimen('cdp', dp)
+    setdimen('cwd', wd); setdimen('chs', wd)
+    setdimen('cHT', ht+dp)
+  end
+}\endgroup
+\def\adjustbaseline{\luafunction\ltj@@adjust@baseline@inner
+   \cvs\normalbaselineskip}
 \DeclareRobustCommand\romanencoding[1]{%
     \expandafter\ifx\csname T@#1\endcsname\relax
       \@latex@error{Encoding scheme `#1' unknown}\@eha
   \csname D@\k@encoding\endcsname
   \let\kenc@update\relax
   \let\ck@encoding\k@encoding
-  \edef\tmp@enc{'\luatexluaescapestring{\k@encoding}'}
+  \edef\tmp@enc{'\luatexluaescapestring{\k@encoding}'}%
   \directlua{luatexja.jfont.is_kyenc(\tmp@enc)}\ifin@%
     \let\cy@encoding\k@encoding
   \else
 }
 \@onlypreamble\romanprocess@table
 \@onlypreamble\kanjiprocess@table
-\DeclareTextCommandDefault{\textunderscore}{%
-  \leavevmode\kern.06em
-  \vbox{\hrule\@width.3em}}
 
 %%%%%% LuaTeX-ja specific