diff options
author | Karl Berry <karl@freefriends.org> | 2020-03-14 20:59:17 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-03-14 20:59:17 +0000 |
commit | 5539e90b9707a375e00782a39510a63435afd840 (patch) | |
tree | 0f403a5fd0cb8abf6afb9a83352dc80e42a35df9 | |
parent | de272326b469b79620b2e8418495d65508f8a9c9 (diff) |
luatexko (14mar20)
git-svn-id: svn://tug.org/texlive/trunk@54301 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexko/ChangeLog | 8 | ||||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexko/README | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.pdf | bin | 324254 -> 324950 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.tex | 188 | ||||
-rw-r--r-- | Master/texmf-dist/tex/luatex/luatexko/luatexko-normalize.lua | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/luatex/luatexko/luatexko-uhc2utf8.lua | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/luatex/luatexko/luatexko.lua | 83 | ||||
-rw-r--r-- | Master/texmf-dist/tex/luatex/luatexko/luatexko.sty | 2 |
8 files changed, 167 insertions, 124 deletions
diff --git a/Master/texmf-dist/doc/luatex/luatexko/ChangeLog b/Master/texmf-dist/doc/luatex/luatexko/ChangeLog index 4e09cacd1c7..5ffa9cd5f21 100644 --- a/Master/texmf-dist/doc/luatex/luatexko/ChangeLog +++ b/Master/texmf-dist/doc/luatex/luatexko/ChangeLog @@ -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 diff --git a/Master/texmf-dist/doc/luatex/luatexko/README b/Master/texmf-dist/doc/luatex/luatexko/README index a60676bd2ac..494b40edf92 100644 --- a/Master/texmf-dist/doc/luatex/luatexko/README +++ b/Master/texmf-dist/doc/luatex/luatexko/README @@ -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 diff --git a/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.pdf b/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.pdf Binary files differindex 8e76e957c14..b37128dcbb5 100644 --- a/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.pdf +++ b/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.pdf diff --git a/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.tex b/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.tex index 759a46bfb98..7d57dee2301 100644 --- a/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.tex +++ b/Master/texmf-dist/doc/luatex/luatexko/luatexko-doc.tex @@ -11,45 +11,47 @@ \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, 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 @@ fontspec의 글꼴 옵션 외에 \luatexko가 따로 제공하는 것들이 있 \footnote{% 옛한글 식자를 위해서는 적어도 |Script=Hangul| (플레인텍이라면 |script=hang|)을 주어야 한다. - 옛한글이 아니더라도 한글을 쓴다면 이 옵션은 주는 것이 좋다. - 또한 폰트가 지원한다면 |LocalForms=On| (플레인텍이라면 |+locl|)과 - 함께 쓰는 것이 권장된다. }\,% + 옛한글이 아니더라도 한글을 쓴다면 이 옵션과 |Language=Korean| + (플레인텍은 |language=KOR|)을 주는 것이 좋다. }\,% \footnote{% |PunctRaise|, |NoEmbedding| 옵션은 v2.0부터 더는 제공하지 않는다. } @@ -266,9 +281,9 @@ fontspec의 글꼴 옵션 외에 \luatexko가 따로 제공하는 것들이 있 \noindent\textbf{% 世솅〮宗조ᇰ御ᅌᅥᆼ〮製졩〮訓훈〮民민正져ᇰ〮音ᅙᅳᆷ }\par - 製졩〮ᄂᆞᆫ〮글〮지ᅀᅳᆯ〮씨〮니〮御ᅌᅥᆼ〮製졩〮ᄂᆞᆫ〮님〯금〮지〯ᅀᅳ샨〮그〮리라〮訓훈〮은〮ᄀᆞᄅᆞ칠〮씨〮오〮民% - 민ᄋᆞᆫ〮百ᄇᆡᆨ〮姓셔ᇰ〮이〮오〮音ᅙᅳᆷ은〮소리〮니〮訓훈〮民% - 민正져ᇰ〮音ᅙᅳᆷ은〮百ᄇᆡᆨ〮姓셔ᇰ〮ᄀᆞᄅᆞ치〮시논〮正져ᇰ〮ᄒᆞᆫ소리〮라〮 + 製졩〮ᄂᆞᆫ〮글〮지ᅀᅳᆯ〮씨〮니〮御ᅌᅥᆼ〮製졩〮ᄂᆞᆫ〮님〯금〮지〯ᅀᅳ샨〮그〮리라〮% + 訓훈〮은〮ᄀᆞᄅᆞ칠〮씨〮오〮民민ᄋᆞᆫ〮百ᄇᆡᆨ〮姓셔ᇰ〮이〮오〮音ᅙᅳᆷ은〮소리〮니〮% + 訓훈〮民민正져ᇰ〮音ᅙᅳᆷ은〮百ᄇᆡᆨ〮姓셔ᇰ〮ᄀᆞᄅᆞ치〮시논〮正져ᇰ〮ᄒᆞᆫ소리〮라〮 \par\medskip \noindent\textbf{% 國귁〮之징語ᅌᅥᆼ〯音ᅙᅳᆷ이〮 @@ -280,8 +295,9 @@ fontspec의 글꼴 옵션 외에 \luatexko가 따로 제공하는 것들이 있 \noindent\textbf{% 異잉〮乎ᅘᅩᆼ中듀ᇰ國귁〮ᄒᆞ〮야〮 }\par - 異잉〮ᄂᆞᆫ〮다ᄅᆞᆯ씨라乎ᅘᅩᆼᄂᆞᆫ〮아〯모〮그ᅌᅦᄒᆞ〮논겨〮체ᄡᅳ〮는字ᄍᆞᆼ〮ㅣ라〮中듀ᇰ國귁〮ᄋᆞᆫ〮% - 皇ᅘᅪᇰ帝뎽〮겨〯신나라〮히니〮우〮리〮나랏〮常쌰ᇰ談땀애〮江가ᇰ南남이〮라〮ᄒᆞ〮ᄂᆞ〮니라〮 + 異잉〮ᄂᆞᆫ〮다ᄅᆞᆯ씨라乎ᅘᅩᆼᄂᆞᆫ〮아〯모〮그ᅌᅦᄒᆞ〮논겨〮체ᄡᅳ〮는字ᄍᆞᆼ〮ㅣ라〮% + 中듀ᇰ國귁〮ᄋᆞᆫ〮皇ᅘᅪᇰ帝뎽〮겨〯신나라〮히니〮우〮리〮나랏〮常쌰ᇰ談땀애〮% + 江가ᇰ南남이〮라〮ᄒᆞ〮ᄂᆞ〮니라〮 \par 中듀ᇰ國귁〮에〮달아〮 } @@ -289,10 +305,10 @@ fontspec의 글꼴 옵션 외에 \luatexko가 따로 제공하는 것들이 있 \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 @@ fontspec의 글꼴 옵션 외에 \luatexko가 따로 제공하는 것들이 있 \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,23 +404,21 @@ fontspec의 글꼴 옵션 외에 \luatexko가 따로 제공하는 것들이 있 \section{고문헌}\label{sec:classic} \def\analectstext{% -子曰:「學而時習之,不亦說乎?有朋自遠方來,不亦樂乎?人不知而不慍, -不亦君子乎?」\par -有子曰:「其爲人也孝弟,而好犯上者,鮮矣!不好犯上,而好作亂者,未之有也! -君子務本,本立而道生;孝弟也者,其爲仁之本與?」\par +子曰:「學而時習之,不亦說乎?有朋自遠方來,不亦樂乎?人不知而不慍,不亦君子乎?」\par +有子曰:「其爲人也孝弟,而好犯上者,鮮矣!不好犯上,而好作亂者,未之有也!君子務本,本立而道生;孝弟也者,其爲仁之本與?」\par 子曰:「巧言令色,鮮矣仁!」\par -曾子曰:「吾日三省吾身:爲人謀,而不忠乎?與朋友交,而不信乎?傳, -不習乎?」\par +曾子曰:「吾日三省吾身:爲人謀,而不忠乎?與朋友交,而不信乎?傳,不習乎?」\par 子曰:「道千乘之國,敬事而信,節用而愛人,使民以時。」\par 子曰:「弟子入則孝,出則弟;謹而信,汎愛衆;而親仁,行有餘力,則以學文。」 } \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 @@ v2.0부터는 고문헌 조판에서 한글^^b7한자와 영문자가 붙어 나 |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 @@ v2.0부터는 고문헌 조판에서 한글^^b7한자와 영문자가 붙어 나 기본으로 셋팅되어 있다. 일종의 고문헌 조판으로 보는 것이다. \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 @@ v2.0부터는 고문헌 조판에서 한글^^b7한자와 영문자가 붙어 나 \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} diff --git a/Master/texmf-dist/tex/luatex/luatexko/luatexko-normalize.lua b/Master/texmf-dist/tex/luatex/luatexko/luatexko-normalize.lua index 41e5d3498d6..0b4553f18f8 100644 --- a/Master/texmf-dist/tex/luatex/luatexko/luatexko-normalize.lua +++ b/Master/texmf-dist/tex/luatex/luatexko/luatexko-normalize.lua @@ -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+", diff --git a/Master/texmf-dist/tex/luatex/luatexko/luatexko-uhc2utf8.lua b/Master/texmf-dist/tex/luatex/luatexko/luatexko-uhc2utf8.lua index df71e43f9dd..70b30b96e33 100644 --- a/Master/texmf-dist/tex/luatex/luatexko/luatexko-uhc2utf8.lua +++ b/Master/texmf-dist/tex/luatex/luatexko/luatexko-uhc2utf8.lua @@ -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+", diff --git a/Master/texmf-dist/tex/luatex/luatexko/luatexko.lua b/Master/texmf-dist/tex/luatex/luatexko/luatexko.lua index 3f21e7c970e..0720a4ecd9c 100644 --- a/Master/texmf-dist/tex/luatex/luatexko/luatexko.lua +++ b/Master/texmf-dist/tex/luatex/luatexko/luatexko.lua @@ -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 insert_before = node.insert_before 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 @@ local function warning (...) 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 @@ local josa_code = setmetatable({ 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 @@ local function prevjosacode (n, parenlevel) 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 @@ local function process_josa (head) 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,13 +1971,33 @@ local font_opt_procs = { } 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 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 @@ add_to_callback("luaotfload.patch_font_unsafe", process_patch_font, 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 function activate (name) 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 @@ local function deactivate_all (str) 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 diff --git a/Master/texmf-dist/tex/luatex/luatexko/luatexko.sty b/Master/texmf-dist/tex/luatex/luatexko/luatexko.sty index 61835450fb6..dd25d17b77c 100644 --- a/Master/texmf-dist/tex/luatex/luatexko/luatexko.sty +++ b/Master/texmf-dist/tex/luatex/luatexko/luatexko.sty @@ -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 |