------------------------------------------------------------------------
local load_jfont_metric, check_callback_order
+local font_extra_info = {} -- defined later
do
local cstemp
local global_flag -- true if \globaljfont, false if \jfont
luatexbase.create_callback("luatexja.define_jfont", "data", function (ft, fn) return ft end)
-- EXT
+ local fastcopy=table.fastcopy
function luatexja.jfont.jfontdefY()
local j = load_jfont_metric(jfm_dir)
local fn = font.id(cstemp)
kanjiskip = sz.kanjiskip, xkanjiskip = sz.xkanjiskip,
chars_cbcache = {},
vert_activated = vert_activated,
+ rotation = fastcopy(font_extra_info[fn].rotation),
}
if auto_enable_vrt2 then
- ltju.enable_feature(fn, ltju.exist_feature(fn, 'vrt2') and 'vrt2' or 'vert')
+ local vert_name = ltju.exist_feature(fn, 'vrt2') and 'vrt2' or 'vert'
+ local rot = fmtable.rotation
+ ltju.enable_feature(fn, vert_name)
+ ltju.loop_over_feat(f, {[vert_name]=true}, function (i,k) rot[i] = nil end)
end
fmtable = luatexbase.call_callback("luatexja.define_jfont", fmtable, fn)
------------------------------------------------------------------------
-- 追加のフォント情報
------------------------------------------------------------------------
-local font_extra_info = {}
luatexja.jfont.font_extra_info= font_extra_info -- key: fontnumber
local font_extra_basename = {} -- key: basename
end
return lo%2==1
end
- local vert_vrt2 = { vert=true, vrt2 = true }
local function list_rorate_dup (i, v, dest)
local f = dest[i]
if not f then
for i,_ in pairs(tfmdata.characters) do
if rotate_in_uax50(i) then rot[i] = true end
end
- ltju.loop_over_feat(tfmdata, vert_vrt2, function (i,k) rot[i] = nil end)
-- ↓「TeX Live 2019のLuaLaTeXで縦書きの三点リーダーが横書きになる」
-- (https://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=2722) により無効化
-- -- 同じグリフが複数の Unicode ポイントを持っている場合.
end
do
- local cache_ver = 22
+ local cache_ver = 23
local nameonly, lower = file.nameonly, string.lower
local lfs = require"lfs"
local file_attributes = lfs.attributes
do
local pf, pc = getfont(p), getchar(p)
local feir = ltjf_font_extra_info[pf]
- if feir and feir.rotation and met.vert_activated then
- if feir.rotation[pc] and (has_attr(p, attr_vert_ori) or 0)<=0 then
+ if met.rotation and met.vert_activated then
+ if met.rotation[pc] and (has_attr(p, attr_vert_ori) or 0)<=0 then
return capsule_glyph_tate_rot(p, met, char_data, head, dir,
0.5*(get_ascender(pf)-get_descender(pf)))
end
\tfont\VD=\FN:jfm=ujisv;script=hani
\HN\VD font: \texttt{\FN}\directlua{myfeat()}
\par\nobreak\medskip\ttfamily
- \parbox<t>{210pt}{\VD ■default\\\TEST}\ \vrule\
- \parbox<t>{210pt}{\VB ■+vert~+vrt2\\\TEST}\ \vrule\
- \parbox<t>{210pt}{\VN ■-vert~-vrt2\\\TEST}\ \vrule\
- \parbox<t>{210pt}{\VT ■+vert~-vrt2\\\TEST}\ \vrule\
- \parbox<t>{210pt}{\VU ■-vert~+vrt2\\\TEST}
+ \parbox<t>{210pt}{\VD ■default\\\TEST0}\ \vrule\
+ \parbox<t>{210pt}{\VB ■+vert~+vrt2\\\TEST1}\ \vrule\
+ \parbox<t>{210pt}{\VN ■-vert~-vrt2\\\TEST1}\ \vrule\
+ \parbox<t>{210pt}{\VT ■+vert~-vrt2\\\TEST1}\ \vrule\
+ \parbox<t>{210pt}{\VU ■-vert~+vrt2\\\TEST1}
\par\smallskip\hrule\smallskip
- \parbox<y>{210pt}{\HN ■よこぐみ\\\TEST}
+ \parbox<y>{210pt}{\HN ■よこぐみ\\\TEST0}
\par\egroup\bigskip
}
-\def\TEST{
+\catcode`\@=11
+\def\TEST#1{\ltj@vert@ori#1
左←↑↓→☜☝☟☞⇦⇧⇩⇨⬅⬆⬇➡右¶\ltjjachar"253B\ltjjachar"0165\relax
あ:いーう,え、お.か。き;け\ltjjachar"201Cこ\ltjjachar"301D%
さ\ltjjachar"301Fし\ltjjachar"201Dす\ltjjachar"2015せ\ltjjachar"2014そ
- \ltjjachar"205A\ltjjachar"205D‥…〜ー=―‐゠㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㍾㍽㍼㍻=≒≠≡}
+ ‥…〜ー=―‐゠㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㍾㍽㍼㍻=≒≠≡\ltjjachar`β%
+ \ltjjachar`Å}
\TESTA{MogaMincho}
\TESTA{IPAexMincho}
\TESTA{KozMinPr6N-Regular}
-\TESTA{HaranoAjiMincho-Regular}
+\TESTA{SourceHanSerif-Regular}
+\TESTA{HiraMinProN-W3}
\end{document}