%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjfont}[2015/08/28 Patch to NFSS2 for LuaTeX-ja]
+\ProvidesPackage{lltjfont}[2016/04/01 Patch to NFSS2 for LuaTeX-ja]
\let\k@encoding\@empty
\let\ck@encoding\@empty
\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 = luatexja.jfont.font_metric_table[
- tex.getattribute('ltj@curtfnt')] or {}
- ft = ft and ft.char_type
- ft = ft and ft[0]
- local fm = font.getfont(font.current()).characters[77] or {} %% 'M'
- print('M', fm.height, fm.depth)
- print('漢', ft.height, ft.depth)
- tex.setattribute('ltj@tablshift',
- 0.5*(fm.height - fm.depth - ft.height+ ft.depth))
- print('tab', tex.getattribute('ltj@tablshift'))
+ 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
+ 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)
end
- }
- \def\ltj@@adjust@baseline{\luafunction\ltj@@adjust@baseline@inner}
+ }\endgroup
+ \def\adjustbaseline{\luafunction\ltj@@adjust@baseline@inner
+ \cvs\normalbaselineskip}
\else
+ \newbox\adjust@box
\newbox\adjust@box@aux
\newdimen\adjust@dimen
- \def\ltj@@adjust@baseline{%
+ \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
\ltj@tablshift=\adjust@dimen
}
\fi
- \newbox\adjust@box
-\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
- \ltj@@adjust@baseline
-}
\DeclareRobustCommand\romanencoding[1]{%
\expandafter\ifx\csname T@#1\endcsname\relax
\@latex@error{Encoding scheme `#1' unknown}\@eha
\def\ltj@@does@alt@set#1{%
\directlua{luatexja.jfont.does_alt_set'\luatexluaescapestring{#1}'}}
+%%%% patch \@text@composite because of {y,t}albaselineshift
+
\endinput