texlive[54301] Master/texmf-dist: luatexko (14mar20)

commits+karl at tug.org commits+karl at tug.org
Sat Mar 14 21:59:17 CET 2020


Revision: 54301
          http://tug.org/svn/texlive?view=revision&revision=54301
Author:   karl
Date:     2020-03-14 21:59:17 +0100 (Sat, 14 Mar 2020)
Log Message:
-----------
luatexko (14mar20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/luatex/luatexko/ChangeLog
    trunk/Master/texmf-dist/doc/luatex/luatexko/README
    trunk/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.pdf
    trunk/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.tex
    trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko-normalize.lua
    trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko-uhc2utf8.lua
    trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko.lua
    trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko.sty

Modified: trunk/Master/texmf-dist/doc/luatex/luatexko/ChangeLog
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/luatexko/ChangeLog	2020-03-14 20:59:04 UTC (rev 54300)
+++ trunk/Master/texmf-dist/doc/luatex/luatexko/ChangeLog	2020-03-14 20:59:17 UTC (rev 54301)
@@ -1,3 +1,11 @@
+2020-03-14	Dohyun Kim <nomos at ktug org>
+
+	Version 2.7
+
+	* luatexko.lua:
+	use post_linebreak_filter callback;
+	support expansion/protrusion in harf mode
+
 2020-02-17	Dohyun Kim <nomos at ktug org>
 
 	Version 2.6

Modified: trunk/Master/texmf-dist/doc/luatex/luatexko/README
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/luatexko/README	2020-03-14 20:59:04 UTC (rev 54300)
+++ trunk/Master/texmf-dist/doc/luatex/luatexko/README	2020-03-14 20:59:17 UTC (rev 54301)
@@ -1,4 +1,4 @@
-LuaTeX-ko Package version 2.6 (2020/02/17)
+LuaTeX-ko Package version 2.7 (2020/03/14)
 ===========================================
 
 This is a Lua(La)TeX macro package that supports typesetting Korean

Modified: trunk/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.tex	2020-03-14 20:59:04 UTC (rev 54300)
+++ trunk/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.tex	2020-03-14 20:59:17 UTC (rev 54301)
@@ -11,39 +11,40 @@
 \documentclass[a4paper]{article}
 \usepackage[hmargin=3.8cm]{geometry}
 \usepackage[svgnames]{xcolor}
+\usepackage{luacolor}
 \usepackage[hangul]{luatexko}
 \directlua{
-  fonts.protrusions.setups.notoserifcjk = {
-    [171]     = { 0.5, 0   },
-    [187]     = { 0,   0.5 },
-    [1002965] = { 0,   0.5 },
-    [1002968] = { 0.5, 0   },
-    [1002969] = { 0,   0.5 },
-    [1002970] = { 0,   1   },
-    [1002971] = { 0,   0.5 },
-    [1002972] = { 0,   1   },
-    [1002974] = { 0,   0.5 },
-    [1002975] = { 0,   0.5 },
-    [1002976] = { 0,   0.5 },
-    [1002985] = { 1,   0   },
-    [1002986] = { 0,   1   },
-    [1002988] = { 0.5, 0   },
-    [1002989] = { 0,   0.5 },
+  local gidoffset = 0x120000
+  local notoserifcjkkr_hb = {
+    [171]     = { 0.5, 0   }, % «
+    [187]     = { 0,   0.5 }, % »
+    [62253+gidoffset] = { 0.5, 0   }, % (
+    [62254+gidoffset] = { 0,   0.5 }, % )
+    [62255+gidoffset] = { 0,   1   }, % ,
+    [62257+gidoffset] = { 0,   1   }, % .
+    [62259+gidoffset] = { 0,   0.5 }, % :
+    [62260+gidoffset] = { 0,   0.5 }, % ;
+    [62270+gidoffset] = { 1,   0   }, % ‘
+    [62271+gidoffset] = { 0,   1   }, % ’
+    [62273+gidoffset] = { 0.5, 0   }, % “
+    [62274+gidoffset] = { 0,   0.5 }, % ”
   }
+  fonts.protrusions.setups.notoserifcjk = notoserifcjkkr_hb
 }
+\defaultfontfeatures+{Renderer=OpenType}
+\setmainfont{Latin Modern Roman}[Expansion] % for hb tlig
 \setmainhangulfont{Noto Serif CJK KR}[
   Scale=0.98,
   AutoFakeSlant,
   Script=Hangul,
   Language=Korean,
-  LocalForms=On,
   UprightFont=* Light,
   BoldFont=* Bold,
   InterLatinCJK=.125em,
   Expansion, Protrusion=notoserifcjk,
 ]
+\setsansfont{Latin Modern Sans}
 \setsanshangulfont{Noto Sans CJK KR}[
-  \ifluahbtex Renderer=OpenType\fi,
   Scale=0.98,
   Script=Hangul,
   Language=Korean,
@@ -50,6 +51,7 @@
   UprightFont=* DemiLight,
   BoldFont=* Bold,
   InterLatinCJK=.125em,
+  CompressPunctuations,
 ]
 \setmonofont{Inconsolatazi4}[
   Scale=0.98,
@@ -72,6 +74,20 @@
     {Size=9-,  Font=* DemiLight},
   },
 ]
+\newhangulfontfamily\verticalhangulfont{Noto Sans CJK KR}[
+  Renderer=Node,
+  Script=Hangul,
+  Language=Korean,
+  UprightFont=* DemiLight,
+  BoldFont=* Bold,
+  InterLatinCJK=.125em,
+  Vertical=Alternates,
+  RawFeature=vertical,
+  CompressPunctuations,
+  InterCharStretch=1pt,
+  CharRaise=3.6pt,
+  CharacterWidth=Full,
+]
 \newhangulfontface\rubyfont{Noto Serif CJK KR Medium}[
   Script=Hangul,
   Language=Korean,
@@ -104,7 +120,7 @@
 \author{Dohyun Kim \normalsize |<nomos at ktug org>| \and
         Soojin Nam \normalsize |<jsunam at gmail com>| \and
   \normalsize <\url{http://github.com/dohyunkim/luatexko}>}
-\date{Version 2.6\quad 2020/02/17}
+\date{Version 2.7\quad 2020/03/14}
 \maketitle
 
 \begin{quote}\small
@@ -256,9 +272,8 @@
 \footnote{%
   옛한글 식자를 위해서는 적어도 |Script=Hangul|
   (플레인텍이라면 |script=hang|)을 주어야 한다.
-  옛한글이 아니더라도 한글을 쓴다면 이 옵션은 주는 것이 좋다.
-  또한 폰트가 지원한다면 |LocalForms=On| (플레인텍이라면 |+locl|)과
-  함께 쓰는 것이 권장된다. }\,%
+  옛한글이 아니더라도 한글을 쓴다면 이 옵션과 |Language=Korean|
+  (플레인텍은 |language=KOR|)을 주는 것이 좋다. }\,%
 \footnote{%
   |PunctRaise|, |NoEmbedding| 옵션은 v2.0부터 더는 제공하지 않는다. }
 
@@ -266,9 +281,9 @@
   \noindent\textbf{%
   世솅〮宗조ᇰ御ᅌᅥᆼ〮製졩〮訓훈〮民민正져ᇰ〮音ᅙᅳᆷ
   }\par
-  製졩〮ᄂᆞᆫ〮글〮지ᅀᅳᆯ〮씨〮니〮御ᅌᅥᆼ〮製졩〮ᄂᆞᆫ〮님〯금〮지〯ᅀᅳ샨〮그〮리라〮訓훈〮은〮ᄀᆞᄅᆞ칠〮씨〮오〮民%
-  민ᄋᆞᆫ〮百ᄇᆡᆨ〮姓셔ᇰ〮이〮오〮音ᅙᅳᆷ은〮소리〮니〮訓훈〮民%
-  민正져ᇰ〮音ᅙᅳᆷ은〮百ᄇᆡᆨ〮姓셔ᇰ〮ᄀᆞᄅᆞ치〮시논〮正져ᇰ〮ᄒᆞᆫ소리〮라〮
+  製졩〮ᄂᆞᆫ〮글〮지ᅀᅳᆯ〮씨〮니〮御ᅌᅥᆼ〮製졩〮ᄂᆞᆫ〮님〯금〮지〯ᅀᅳ샨〮그〮리라〮%
+  訓훈〮은〮ᄀᆞᄅᆞ칠〮씨〮오〮民민ᄋᆞᆫ〮百ᄇᆡᆨ〮姓셔ᇰ〮이〮오〮音ᅙᅳᆷ은〮소리〮니〮%
+  訓훈〮民민正져ᇰ〮音ᅙᅳᆷ은〮百ᄇᆡᆨ〮姓셔ᇰ〮ᄀᆞᄅᆞ치〮시논〮正져ᇰ〮ᄒᆞᆫ소리〮라〮
   \par\medskip
   \noindent\textbf{%
   國귁〮之징語ᅌᅥᆼ〯音ᅙᅳᆷ이〮
@@ -280,8 +295,9 @@
   \noindent\textbf{%
   異잉〮乎ᅘᅩᆼ中듀ᇰ國귁〮ᄒᆞ〮야〮
   }\par
-  異잉〮ᄂᆞᆫ〮다ᄅᆞᆯ씨라乎ᅘᅩᆼᄂᆞᆫ〮아〯모〮그ᅌᅦᄒᆞ〮논겨〮체ᄡᅳ〮는字ᄍᆞᆼ〮ㅣ라〮中듀ᇰ國귁〮ᄋᆞᆫ〮%
-  皇ᅘᅪᇰ帝뎽〮겨〯신나라〮히니〮우〮리〮나랏〮常쌰ᇰ談땀애〮江가ᇰ南남이〮라〮ᄒᆞ〮ᄂᆞ〮니라〮
+  異잉〮ᄂᆞᆫ〮다ᄅᆞᆯ씨라乎ᅘᅩᆼᄂᆞᆫ〮아〯모〮그ᅌᅦᄒᆞ〮논겨〮체ᄡᅳ〮는字ᄍᆞᆼ〮ㅣ라〮%
+  中듀ᇰ國귁〮ᄋᆞᆫ〮皇ᅘᅪᇰ帝뎽〮겨〯신나라〮히니〮우〮리〮나랏〮常쌰ᇰ談땀애〮%
+  江가ᇰ南남이〮라〮ᄒᆞ〮ᄂᆞ〮니라〮
   \par
   中듀ᇰ國귁〮에〮달아〮
 }
@@ -289,10 +305,10 @@
 \begin{figure}
   \fboxsep=1em
   \fbox{\parbox{\dimexpr\linewidth-2.1em\relax}{\sffamily
-  \parindent1em
-  \hunmintxt
-}}
-\caption{옛한글 조판 보기}\label{fig:yethangul}
+      \parindent1em
+      \hunmintxt
+  }}
+  \caption{옛한글 조판 보기}\label{fig:yethangul}
 \end{figure}
 
 \begin{description}
@@ -366,13 +382,14 @@
 
 \item[Protrusion] \pkgkwd*{Protrusion}%
   특정 글자가 행 끝에 왔을 때 판면 바깥으로 끌어내는
-  기능이다. Lua\TeX은 기본값으로 온점 반점 등을 완전 글자내밀기 한다.
+  기능이다. \luatex은 기본값으로 온점 반점 등을 완전 글자내밀기 한다.
   |Protrusion|은 |Protrusion=default|와 같은 뜻이다.%
   \footnote{%
     플레인텍에서는 |protrusion=default|. }
   자신만의 설정을 만들어 지정할 수 있다.%
   \footnote{%
-    default 설정을 고치는 방법은 이를테면 다음과 같다:\par
+    default 설정을 고치는 방법은 이를테면 다음과 같다
+    (이 매뉴얼의 소스 앞부분을 참고하라):\par
     \leftskip=3em\noindent
     \cs{directlua{ fonts.protrusions.setups.default[0x201C] = { 1, 0 } }} }
 
@@ -387,13 +404,10 @@
 \section{고문헌}\label{sec:classic}
 
 \def\analectstext{%
-子曰:「學而時習之,不亦說乎?有朋自遠方來,不亦樂乎?人不知而不慍,
-不亦君子乎?」\par
-有子曰:「其爲人也孝弟,而好犯上者,鮮矣!不好犯上,而好作亂者,未之有也!
-君子務本,本立而道生;孝弟也者,其爲仁之本與?」\par
+子曰:「學而時習之,不亦說乎?有朋自遠方來,不亦樂乎?人不知而不慍,不亦君子乎?」\par
+有子曰:「其爲人也孝弟,而好犯上者,鮮矣!不好犯上,而好作亂者,未之有也!君子務本,本立而道生;孝弟也者,其爲仁之本與?」\par
 子曰:「巧言令色,鮮矣仁!」\par
-曾子曰:「吾日三省吾身:爲人謀,而不忠乎?與朋友交,而不信乎?傳,
-不習乎?」\par
+曾子曰:「吾日三省吾身:爲人謀,而不忠乎?與朋友交,而不信乎?傳,不習乎?」\par
 子曰:「道千乘之國,敬事而信,節用而愛人,使民以時。」\par
 子曰:「弟子入則孝,出則弟;謹而信,汎愛衆;而親仁,行有餘力,則以學文。」
 }
@@ -400,10 +414,11 @@
 \begin{figure}
   \centering
   \fbox{\parbox{37em}{\typesetclassic\sffamily
-  \addhangulfontfeature{CompressPunctuations}
-  \analectstext
+      \analectstext
   }}
-\caption{고문헌 조판 보기. typesetclassic 환경을 이용했다.}\label{fig:gomun}
+  \caption{고문헌 조판 보기. typesetclassic 환경을 이용했다.
+    글꼴에 |CompressPunctuations| 옵션을 주었다.
+  }\label{fig:gomun}
 \end{figure}
 
 고문헌 조판을 위해 \pkgkwd{typesetclassic} 환경을 제공한다.%
@@ -441,8 +456,9 @@
   |vmtx| 정보를 가지고 있지 않은 글꼴은 세로쓰기에 적합치 않은 글꼴이다.
   |otfinfo -t <파일>| 명령으로 글꼴에 들어있는 테이블 정보를 알 수 있다. }\,%
 \footnote{%
-  폰트 옵션 |Renderer=OpenType| 등(플레인텍에서는 |mode=harf| 옵션)을 주고
-  |luahblatex|으로 컴파일하여 Harfbuzz 모듈을 이용하려는 경우 세로쓰기가
+  폰트 옵션 |Renderer=OpenType| 또는 |Renderer=HarfBuzz| 등
+  (플레인텍에서는 |mode=harf| 옵션)을 주고
+  컴파일하여 Harfbuzz 모듈을 이용하려는 경우 세로쓰기가
   현재로서는 지원되지 않는다. 세로쓰기를 하려면 이 옵션을 빼고 디폴트 값인
   |Renderer=Node| (플레인텍에서는 |mode=node|)를 사용하라.}
 세로쓰기에서 |CharRaise| 옵션의 효과에 대해서는 제\ref{sec:fontoption}절을
@@ -452,26 +468,28 @@
 기본으로 셋팅되어 있다. 일종의 고문헌 조판으로 보는 것이다.
 
 \begin{figure}
-\framebox[\linewidth]{\begin{vertical}{19.6em}\sffamily
-  \addhangulfontfeature{Renderer=Node, Vertical=Alternates, RawFeature=vertical}
-  \linespread{1.5}\selectfont
-  \hunmintxt
-\end{vertical}}
-\caption{세로쓰기의 예. 박스 높이 |20em|을 지시했다.}\label{fig:vertical}
+  \framebox[\linewidth]{
+    \begin{vertical}{20em}
+      \linespread{1.5}\sffamily \verticalhangulfont
+      \hunmintxt
+    \end{vertical}
+  }
+  \caption{세로쓰기의 예. 박스 높이 |20em|을 지시했다.}\label{fig:vertical}
 \end{figure}
 
 \begin{figure}
-\framebox[\linewidth]{\begin{vertical}{18.62em}\sffamily
-  \addhangulfontfeature{Renderer=Node, Vertical=Alternates, RemoveClassicSpaces,
-  InterCharStretch=1pt, CompressPunctuations, RawFeature=vertical}
-  \linespread{1.5}\selectfont
-  \parindent=-1em \leftskip=1em
-  \analectstext
-\end{vertical}}
-\caption{세로쓰기의 다른 예. 박스 높이 |19em|을 지시했다.
-  글꼴옵션으로 |RemoveClassicSpaces|, |CompressPunctuations|와 더불어
-  |InterCharStretch=1pt|를 추가했다. 공백이 없는 문서는 자간늘이기 값을
-  넉넉하게 주는 것이 좋다.}\label{fig:vertical3}
+  \framebox[\linewidth]{
+    \begin{vertical}{19em}
+      \linespread{1.5}\sffamily \verticalhangulfont
+      \parindent0pt \everypar{\hangindent1em \hangafter1 }
+      \analectstext
+    \end{vertical}
+  }
+  \caption{세로쓰기의 다른 예. 박스 높이 |19em|을 지시했다.
+    글꼴에 |CompressPunctuations|와 더불어
+    |InterCharStretch=1pt|를 옵션으로 주었다. 공백이 없는 문서는 자간늘이기 값을
+    넉넉하게 주는 것이 좋다.
+  }\label{fig:vertical3}
 \end{figure}
 
 문서의 일부를 세로쓰기하려면
@@ -494,29 +512,31 @@
 \footnote{폰트 지시는 |horizontal| 환경 안에서 행하는 것을 권장한다.}
 
 \begin{figure}
-\framebox[\linewidth]{\begin{vertical}{16.66em}\sffamily
-  \addhangulfontfeature{Renderer=Node, Vertical=Alternates, CharRaise=3.2pt,
-  CompressPunctuations, CharacterWidth=Full, RawFeature=vertical}
-  \parindent-1em\leftskip1em \linespread{1.5}\selectfont
-  \spaceskip=.5em plus.25em minus.125em
-  \noindent 님의 침묵(The Silent Beloved)
-  \smallbreak
-  \hfil\hfil 한 용 운\hfil
-  \bigbreak
-  님은 갓슴니다 아아 사랑하는나의님은 갓슴니다\par
-  푸른산빗을깨치고 단풍나무숩을향하야난 적은길을 거러서 참어떨치고
-  갓슴니다\par
-  黃金의꽃가티 굿고빗나든 옛盟誓는 차듸찬띠끌이되야서 한숨의 微風에
-  나러갓슴니다\par
-  날카로은 첫〈키쓰〉의追憶은 나의運命의指針을 돌너노코 뒷거름처서 사러젓슴니다\par
-  \hellipsis\par
-  아아 님은갓지마는 나는 님을보내지 아니하얏슴니다\par
-  제곡조를못이기는 사랑의노래는 님의沈默을 휩싸고돔니다\par
-\end{vertical}}
-\caption{세로쓰기의 또 다른 예.  박스 높이 |17em|을 지시했다.
-  Noto Sans CJK 글꼴의 세로쓰기 공백은 원래 |1em|,
-  즉 전각크기로 매우 크기 때문에, 여기서는 \cs{spaceskip} 명령을 이용하여
-  반각 크기로 강제했다.}\label{fig:vertical2}
+  \framebox[\linewidth]{
+    \begin{vertical}{17em}
+      \linespread{1.5}\sffamily \verticalhangulfont
+      \parindent0pt \everypar{\hangindent1em \hangafter1 }
+      \spaceskip=.5em plus.25em minus.125em
+      \quad 님의 침묵(The Silent Beloved)
+      \smallbreak
+      \hfil\hfil 한 용 운\hfil
+      \bigbreak
+      님은 갓슴니다 아아 사랑하는나의님은 갓슴니다\par
+      푸른산빗을깨치고 단풍나무숩을향하야난 적은길을 거러서 참어떨치고
+      갓슴니다\par
+      黃金의꽃가티 굿고빗나든 옛盟誓는 차듸찬띠끌이되야서 한숨의 微風에
+      나러갓슴니다\par
+      날카로은 첫〈키쓰〉의追憶은 나의運命의指針을 돌너노코 뒷거름처서 사러젓슴니다\par
+      \hellipsis\par
+      아아 님은갓지마는 나는 님을보내지 아니하얏슴니다\par
+      제곡조를못이기는 사랑의노래는 님의沈默을 휩싸고돔니다\par
+    \end{vertical}
+  }
+  \caption{세로쓰기의 또 다른 예.  박스 높이 |17em|을 지시했다.
+    Noto Sans CJK 글꼴의 세로쓰기 공백은 원래 |1em|,
+    즉 전각크기로 매우 크기 때문에, 여기서는 \cs{spaceskip} 명령을 이용하여
+    반각 크기로 강제했다.
+  }\label{fig:vertical2}
 \end{figure}
 
 \section{드러냄표}\label{sec:dotemph}

Modified: trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko-normalize.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko-normalize.lua	2020-03-14 20:59:04 UTC (rev 54300)
+++ trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko-normalize.lua	2020-03-14 20:59:17 UTC (rev 54301)
@@ -13,8 +13,8 @@
 
 luatexbase.provides_module({
   name        = "luatexko-normalize",
-  version     = "2.6",
-  date        = "2020/02/17",
+  version     = "2.7",
+  date        = "2020/03/14",
   author      = "Dohyun Kim, Soojin Nam",
   description = "Hangul normalization",
   license     = "LPPL v1.3+",

Modified: trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko-uhc2utf8.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko-uhc2utf8.lua	2020-03-14 20:59:04 UTC (rev 54300)
+++ trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko-uhc2utf8.lua	2020-03-14 20:59:17 UTC (rev 54301)
@@ -13,8 +13,8 @@
 
 luatexbase.provides_module({
   name        = "luatexko-uhc2utf8",
-  version     = "2.6",
-  date        = "2020/02/17",
+  version     = "2.7",
+  date        = "2020/03/14",
   author      = "Dohyun Kim, Soojin Nam",
   description = "UHC (CP949) input encoding",
   license     = "LPPL v1.3+",

Modified: trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko.lua
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko.lua	2020-03-14 20:59:04 UTC (rev 54300)
+++ trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko.lua	2020-03-14 20:59:17 UTC (rev 54301)
@@ -13,8 +13,8 @@
 
 luatexbase.provides_module {
   name        = 'luatexko',
-  date        = '2020/02/17',
-  version     = '2.6',
+  date        = '2020/03/14',
+  version     = '2.7',
   description = 'typesetting Korean with LuaTeX',
   author      = 'Dohyun Kim, Soojin Nam',
   license     = 'LPPL v1.3+',
@@ -36,11 +36,9 @@
 local nodecopy        = node.copy
 local nodecount       = node.count
 local nodefree        = node.free
-local nodeid          = node.id
 local nodenew         = node.new
 local noderemove      = node.remove
 local nodeslide       = node.slide
-local nodesubtype     = node.subtype
 local nodewrite       = node.write
 local rangedimensions = node.rangedimensions
 local setglue         = node.setglue
@@ -83,19 +81,19 @@
   return module_warning("luatexko", stringformat(...))
 end
 
-local dirid     = nodeid"dir"
-local discid    = nodeid"disc"
-local glueid    = nodeid"glue"
-local glyphid   = nodeid"glyph"
-local hlistid   = nodeid"hlist"
-local kernid    = nodeid"kern"
-local mathid    = nodeid"math"
-local penaltyid = nodeid"penalty"
-local ruleid    = nodeid"rule"
-local vlistid   = nodeid"vlist"
-local whatsitid = nodeid"whatsit"
-local literal_whatsit = nodesubtype"pdf_literal"
-local user_whatsit    = nodesubtype"user_defined"
+local dirid     = node.id"dir"
+local discid    = node.id"disc"
+local glueid    = node.id"glue"
+local glyphid   = node.id"glyph"
+local hlistid   = node.id"hlist"
+local kernid    = node.id"kern"
+local mathid    = node.id"math"
+local penaltyid = node.id"penalty"
+local ruleid    = node.id"rule"
+local vlistid   = node.id"vlist"
+local whatsitid = node.id"whatsit"
+local literal_whatsit = node.subtype"pdf_literal"
+local user_whatsit    = node.subtype"user_defined"
 local directmode = 2
 local fontkern   = 0
 local userkern   = 1
@@ -1125,10 +1123,8 @@
   end
 end })
 
-local ignore_parens = false
-
-local function prevjosacode (n, parenlevel)
-  local parenlevel, josacode = parenlevel or 0
+local function prevjosacode (n, parenlevel, ignore_parens)
+  local josacode
   while n do
     local id = n.id
     if id == glyphid then
@@ -1144,7 +1140,7 @@
     elseif id == hlistid or id == vlistid then
       local list = n.list
       if list then
-        josacode, parenlevel = prevjosacode(nodeslide(list), parenlevel)
+        josacode, parenlevel = prevjosacode(nodeslide(list), parenlevel, ignore_parens)
         if josacode then break end
       end
     end
@@ -1170,8 +1166,7 @@
         end
         local t = josa_table[cc]
         if t then
-          ignore_parens = autojosaattr > 0
-          cc = t[prevjosacode(getprev(curr)) or 3]
+          cc = t[prevjosacode(getprev(curr), 0, autojosaattr > 0) or 3]
           if cc then
             curr.char = cc
           else
@@ -1976,7 +1971,14 @@
 }
 
 local font_opt_procs_single = {
-  expansion = function()
+  expansion = function(fontdata)
+    if is_harf(fontdata) then -- for now, no support in harf mode
+      local val   = option_in_font(fontdata, "expansion")
+      local setup = fonts.expansions.setups[val] or {}
+      fontdata.stretch = fontdata.stretch or (setup.stretch or 2)*10
+      fontdata.shrink  = fontdata.shrink  or (setup.shrink  or 2)*10
+      fontdata.step    = fontdata.step    or (setup.step    or .5)*10
+    end
     if tex.adjustspacing == 0 then
       texset("global", "adjustspacing", 2)
     end
@@ -1983,6 +1985,19 @@
   end,
 
   protrusion = function(fontdata)
+    if is_harf(fontdata) then -- for now, no support in harf mode
+      local val   = option_in_font(fontdata, "protrusion")
+      local setup = fonts.protrusions.setups[val] or {}
+      local quad  = fontdata.parameters.quad
+      for i, v in pairs(setup) do
+        local chr = fontdata.characters[i]
+        if chr then
+          local wdq = chr.width/quad
+          chr.left_protruding  = chr.left_protruding  or wdq*v[1]*1000
+          chr.right_protruding = chr.right_protruding or wdq*v[2]*1000
+        end
+      end
+    end
     if tex.protrudechars == 0 then
       texset("global", "protrudechars", 2)
     end
@@ -2043,17 +2058,17 @@
 
 local auxiliary_procs = {
   dotemph = {
-    hpack_filter = process_dotemph,
-    vpack_filter = process_dotemph,
+    hpack_filter          = process_dotemph,
+    post_linebreak_filter = process_dotemph,
   },
   uline   = {
-    hpack_filter = process_uline,
-    vpack_filter = process_uline,
+    hpack_filter          = process_uline,
+    post_linebreak_filter = process_uline,
   },
   ruby    = {
-    pre_linebreak_filter = process_ruby_pre_linebreak,
-    hpack_filter         = process_ruby_post_linebreak,
-    vpack_filter         = process_ruby_post_linebreak,
+    pre_linebreak_filter  = process_ruby_pre_linebreak,
+    hpack_filter          = process_ruby_post_linebreak,
+    post_linebreak_filter = process_ruby_post_linebreak,
   },
   autojosa = {
     luatexko_hpack_first        = process_josa,
@@ -2070,7 +2085,7 @@
     local fun
     if cbnam == "hpack_filter" then
       fun = function(h, gc)
-        if gc == "align_set" then
+        if gc == "hbox" or gc == "adjusted_hbox" or gc == "align_set" then
           h = cbfun(h)
         end
         return h
@@ -2118,7 +2133,7 @@
   luatexko.deactivated = {}
   for _, name in ipairs{ "hpack_filter",
                          "pre_linebreak_filter",
-                         "vpack_filter",
+                         "post_linebreak_filter",
                          "hyphenate",
                          "luaotfload.patch_font_unsafe", -- added for harf
                          "luaotfload.patch_font" } do

Modified: trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko.sty
===================================================================
--- trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko.sty	2020-03-14 20:59:04 UTC (rev 54300)
+++ trunk/Master/texmf-dist/tex/luatex/luatexko/luatexko.sty	2020-03-14 20:59:17 UTC (rev 54301)
@@ -14,7 +14,7 @@
 \ifdefined\luatexkohangulfontattr \endinput\fi
 \ifdefined\selectfont
   \NeedsTeXFormat{LaTeX2e}[2020/02/02]
-  \ProvidesPackage{luatexko}[2020/02/17 v2.6 typesetting Korean with LuaTeX]
+  \ProvidesPackage{luatexko}[2020/03/14 v2.7 typesetting Korean with LuaTeX]
   \RequirePackage{luatexbase}
   \RequirePackage{fontspec}[2020/02/03]
 \else



More information about the tex-live-commits mailing list.