OSDN Git Service

uax50 (forum:2935)
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Wed, 23 Sep 2020 15:03:45 +0000 (00:03 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Wed, 23 Sep 2020 15:03:45 +0000 (00:03 +0900)
src/ltj-jfont.lua
src/ltj-setwidth.lua
test/test51a-vert_vrt2.pdf
test/test51a-vert_vrt2.tex

index d95b34a..254d8f0 100644 (file)
@@ -280,6 +280,7 @@ end
 ------------------------------------------------------------------------
 
 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
@@ -314,6 +315,7 @@ do
    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)
@@ -337,9 +339,13 @@ do
                         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)
@@ -775,7 +781,6 @@ end
 ------------------------------------------------------------------------
 -- 追加のフォント情報
 ------------------------------------------------------------------------
-local font_extra_info = {}
 luatexja.jfont.font_extra_info= font_extra_info -- key: fontnumber
 local font_extra_basename = {} -- key: basename
 
@@ -794,7 +799,6 @@ do
     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
@@ -807,7 +811,6 @@ do
     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 ポイントを持っている場合.
@@ -829,7 +832,7 @@ do
 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
index 372a0e0..c502e98 100644 (file)
@@ -189,8 +189,8 @@ local function capsule_glyph_tate(p, met, char_data, head, dir)
    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
index 82e9f05..b1b689c 100644 (file)
Binary files a/test/test51a-vert_vrt2.pdf and b/test/test51a-vert_vrt2.pdf differ
index f359ddc..da49f22 100644 (file)
@@ -39,27 +39,30 @@ 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}