OSDN Git Service

\ltj@vert@ori: orientation of a character in \tate
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 25 Jul 2019 08:44:55 +0000 (17:44 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 25 Jul 2019 08:44:55 +0000 (17:44 +0900)
src/ltj-setwidth.lua
src/luatexja-core.sty
test/test51b-vorg.tex

index 4e312be..9f13c97 100644 (file)
@@ -58,6 +58,7 @@ local dir_tate = luatexja.dir_table.dir_tate
 local attr_ykblshift = luatexbase.attributes['ltj@ykblshift']
 local attr_tkblshift = luatexbase.attributes['ltj@tkblshift']
 local attr_icflag = luatexbase.attributes['ltj@icflag']
+local attr_vert_ori = luatexbase.attributes['ltj@vert@ori']
 
 local ltjf_font_extra_info = ltjf.font_extra_info
 
@@ -180,7 +181,7 @@ local function capsule_glyph_tate(p, met, char_data, head, dir)
       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] then
+        if feir.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*(ascent-descent))
         end
       end
index 64448d0..1b9a1af 100644 (file)
 \newattribute\ltj@tablshift % attribute for talbaselineshift
 \newattribute\ltj@tkblshift % attribute for tjabaselineshift
 \newattribute\jfam          % index for current jfam
+\newattribute\ltj@vert@ori  % <=0: UAX#50, >0: always upright
 
 \newattribute\ltj@dir
 \newlanguage\ltj@@japanese
index 24c780d..02fa902 100644 (file)
@@ -2,46 +2,40 @@
 \usepackage[margin=15mm,centering]{geometry}
 \usepackage{lltjext,xcolor}
 %\usepackage{lua-visual-debug}
+\makeatletter
+\protected\def\ltjuprightchar{\afterassignment\ltj@@uprightcharchar\ltj@tempcnta}
+\def\ltj@@uprightchar{{\directlua{tex.globaldefs=0}\ltj@alljachar
+  \ltj@vert@ori\@ne\ltj@@origchar\ltj@tempcnta}}
+\def\ltjvertupright{\ltj@vert@ori\@ne}
 \begin{document}
+\sffamily
 \def\V#1{%
   \setbox0=\hbox to0pt{\yoko\hss\smash{#1} \kern-\zw\hss}%
   \box0\relax
 }
-\def\YL{\rlap{\textcolor{magenta}{\vrule height 0.0625mm depth 0.0625mm width 500pt}}}
+\def\YL{\rlap{\textcolor{cyan!50!white}{\vrule height 0.05mm depth 0.05mm width 500pt}}}
 \def\TEST#1{\smash{\hbox to 0pt{\tate%
   \kern120pt\YL%
   \tfont\A=#1:jfm=ujisv at 10pt\A
   \jfont\B=#1:jfm=ujis at 10pt\B
-  å\9b½\V ï¼´\V ï½\99\V ï½\90\V ï½\8f\V ï½\87\V ï½\92\V ï½\81\V ï½\90\V ï½\88\V ï½\99国\V Q国
-  \V J国\V{\ltjjachar`Å}国
+  å\9b½\V ï¼´\V ï½\99\V ï½\90\V ï½\8f\V ï½\87\V ï½\92\V ï½\81\V ï½\90\V ï½\88\V ï¼¹国\V Q国
+  \V J国\V{\ltjjachar`Å}国\V{\ltjjachar`β}国
   \hss}}%
-  \smash{\hbox to 0pt{\tate%
+  \smash{\hbox to 0pt{\tate\ltjvertupright%
   \hbox to 120pt{\ttfamily #1\hss}\YL%
-  \tfont\A=#1:jfm=ujisv at 10pt\A
-  国Typography国Q国J国\ltjjachar`Å国\ltjjachar"3031国
+  \tfont\A=#1:jfm=ujisv;notdef=false at 10pt\A
+  国TypographY国Q国J国\ltjjachar`Å国\ltjjachar`β国\ltjjachar"3031国
+  \ltjjachar"41国
   \hss}}\quad}
 
+% AJ1-6 には Å の pre-rotated glyph あり→こいつは回転してはいけない
+% TODO: notdef があると乱れる
+
 \def\TL{\smash{\rlap{\hbox to 0pt{\tate%
-  \kern120pt\color{cyan}\kern-0.0625mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
-  \vrule height 400pt depth 0pt width 0.125mm\kern\dimexpr10pt-0.125mm%
+  \kern120pt\color{cyan}\kern-0.05mm%
+  \count2=0 \loop\ifnum\count2<50
+  \vrule height 400pt depth 0pt width 0.1mm\kern\dimexpr10pt-0.1mm%
+  \advance\count2 by 1\relax\repeat
 }}}}
 
 \leavevmode