diff options
author | Karl Berry <karl@freefriends.org> | 2013-05-17 22:32:58 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-05-17 22:32:58 +0000 |
commit | 5e514c20c590569dee9a6ae13ab7ac8ed0878822 (patch) | |
tree | 181c94317f4c68bc0734d51b48742bc39893d6fa /Master/texmf-dist/tex/luatex/luatexko/luatexko.sty | |
parent | 92ef8eb9450138c18ff43262f6251d8e23d722ce (diff) |
luatexko (17may13)
git-svn-id: svn://tug.org/texlive/trunk@30533 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luatexko/luatexko.sty')
-rw-r--r-- | Master/texmf-dist/tex/luatex/luatexko/luatexko.sty | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/luatex/luatexko/luatexko.sty b/Master/texmf-dist/tex/luatex/luatexko/luatexko.sty new file mode 100644 index 00000000000..25ca8590bdd --- /dev/null +++ b/Master/texmf-dist/tex/luatex/luatexko/luatexko.sty @@ -0,0 +1,248 @@ +% $Id: luatexko.sty,v 1.39 2012/11/23 05:06:02 nomos Exp $ +% +% Copyright (c) 2013 Dohyun Kim <nomos at ktug org> +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2006/05/20 or later. + +\ifx\luatexkocatcodeofatchar\undefined\else + \expandafter\endinput\fi % no multiple loading +\ifx\ProvidesPackage\relax \let\ProvidesPackage\undefined \fi +\ifx\ProvidesPackage\undefined % plain tex + \edef\luatexkocatcodeofatchar{\catcode`@=\the\catcode`@} + \input luatexko-core.sty + %\hangulfont{name:NanumGothic:interlatincjk=0.125em} at 10pt + %\setmathhangulfont{NanumGothic} + \luatexkocatcodeofatchar + \expandafter\endinput +\fi + +\ProvidesPackage{luatexko}[2013/05/10 v1.0 Typesetting Korean with LuaLaTeX] +\RequirePackage{fontspec} +\RequirePackage{luatexko-core} + +%% fontspec Korean options +\ExplSyntaxOn + +\DeclareDocumentCommand \newhangulfontfeature {mmmm} + { + \fontspec_define_font_feature:n {#1} + \keys_define:nn {fontspec} + { + #1 .default:n = {#3} , + #1 / unknown .code:n = { + \fontspec_update_fontid:n {#2:##1} + \fontspec_update_featstr:n {#2=##1}#4 + } + } + } + +\fontspec_define_font_feature:n {YetHangul} +\keys_define:nn {fontspec} + { + YetHangul .default:n = {On} , + YetHangul / On .code:n = { + \fontspec_update_fontid:n {yethangul:on} + \fontspec_update_featstr:n {script=hang;+ccmp;+ljmo;+vjmo;+tjmo} + } , + YetHangul / Off .code:n = { + \fontspec_update_fontid:n {yethangul:off} + \fontspec_update_featstr:n {-ljmo;-vjmo;-tjmo} + } + } + +\ExplSyntaxOff + +\newhangulfontfeature{InterHangul}{interhangul}{0}{} +\newhangulfontfeature{InterLatinCJK}{interlatincjk}{0}{} +\newhangulfontfeature{PunctRaise}{punctraise}{0}{} +\newhangulfontfeature{QuoteRaise}{quoteraise}{0}{} +\newhangulfontfeature{CharRaise}{charraise}{0}{} +\newhangulfontfeature{Protrusion}{protrusion}{default}{\aftergroup\pdfprotrudechars\aftergroup\tw@} +\newhangulfontfeature{Expansion}{expansion}{default}{\aftergroup\pdfadjustspacing\aftergroup\tw@} + +%% macros for Korean fonts +\protected\def\setmainhangulfont{\newfontfamily\serifhangul@font} +\protected\def\setmainhanjafont {\newfontfamily\serifhanja@font} +\protected\def\setsanshangulfont{\newfontfamily\sanshangul@font} +\protected\def\setsanshanjafont {\newfontfamily\sanshanja@font} +\protected\def\setmonohangulfont{\newfontfamily\monohangul@font} +\protected\def\setmonohanjafont {\newfontfamily\monohanja@font} + +\protected\def\newhangulfontfamily#1{% + \protected\def#1{\expandafter\let\expandafter\hangul@font + \csname luatexko@\string#1\endcsname + \luatexko@hangul@selectfont}\expandafter\newfontfamily + \csname luatexko@\string#1\endcsname} +\protected\def\newhanjafontfamily#1{% + \protected\def#1{\expandafter\let\expandafter\hanja@font + \csname luatexko@\string#1\endcsname + \luatexko@hanja@selectfont}\expandafter\newfontfamily + \csname luatexko@\string#1\endcsname} + +\protected\def\newhangulfontface#1{% + \protected\def#1{\expandafter\let\expandafter\hangul@font + \csname luatexko@\string#1\endcsname + \luatexko@hangul@selectfont}\expandafter\newfontface + \csname luatexko@\string#1\endcsname} +\protected\def\newhanjafontface#1{% + \protected\def#1{\expandafter\let\expandafter\hanja@font + \csname luatexko@\string#1\endcsname + \luatexko@hanja@selectfont}\expandafter\newfontface + \csname luatexko@\string#1\endcsname} + +\protected\def\hangulfontspec#1#{% + \def\luatexko@fontspec@temp{#1}\hangulfontspec@} +\def\hangulfontspec@#1{% + \expandafter\newfontfamily\expandafter\hangul@font\luatexko@fontspec@temp{#1}% + \luatexko@hangul@selectfont\ignorespaces} +\let\adhochangulfont\hangulfontspec +\protected\def\hanjafontspec#1#{% + \def\luatexko@fontspec@temp{#1}\hanjafontspec@} +\def\hanjafontspec@#1{% + \expandafter\newfontfamily\expandafter\hanja@font\luatexko@fontspec@temp{#1}% + \luatexko@hanja@selectfont\ignorespaces} +\let\adhochanjafont\hanjafontspec + +% add{hangul/hanja}fontfeature +\protected\def\addhangulfontfeature#1{% + \begingroup + \check@hangul@family + \hangul@font\addfontfeature{#1}\global + \let\luatexko@fontspec@temp\f@family + \endgroup + \def\hangul@font{\fontfamily\luatexko@fontspec@temp + \luatexko@orig@selectfont}\luatexko@hangul@selectfont \ignorespaces} +\let\addhangulfontfeatures\addhangulfontfeature +\protected\def\addhanjafontfeature#1{% + \begingroup + \check@hanja@family + \hanja@font\addfontfeature{#1}\global + \let\luatexko@fontspec@temp\f@family + \endgroup + \def\hanja@font{\fontfamily\luatexko@fontspec@temp + \luatexko@orig@selectfont}\luatexko@hanja@selectfont \ignorespaces} +\let\addhanjafontfeatures\addhanjafontfeature + +% check hangul/hanja family +\def\check@hangul@family{% + \unless\ifdefined\hangul@font + \ifx\f@family\sfdefault \let\hangul@font\sanshangul@font + \else\ifx\f@family\ttdefault \let\hangul@font\monohangul@font + \else \let\hangul@font\serifhangul@font + \fi\fi\fi +} +\def\check@hanja@family{% + \unless\ifdefined\hanja@font + \ifx\f@family\sfdefault \let\hanja@font\sanshanja@font + \else\ifx\f@family\ttdefault \let\hanja@font\monohanja@font + \else \let\hanja@font\serifhanja@font + \fi\fi\fi +} + +\let\luatexko@orig@selectfont\selectfont +\protected\def\selectfont{\luatexko@orig@selectfont + \luatexko@hangul@selectfont\luatexko@hanja@selectfont} + +% don't forget to redefine \normalfont +\protected\edef\normalfont{\unexpanded{\let\hangul@font\luatexko@undefined}% + \unexpanded\expandafter{\normalfont}} +\let\reset@font\normalfont + +% normal : finemathattr = 1 +% tt : finemathattr = 0 +% verbatim : finemathattr = off +\protected\edef\ttfamily{\unexpanded\expandafter{\ttfamily + \finemathattr\z@}} +\edef\verbatim@font{\unexpanded\expandafter{\verbatim@font + \unsetluatexattribute\finemathattr}} + +%% hangul in math --- latex +\protected\def\setmathhangulfont{% + \@ifnextchar[{\setmathhangul@font@}{\setmathhangul@font@[]}} +\def\setmathhangul@font@[#1]#2{% + \zf@fontspec{#1}{#2}\xdef\luatexko@math@hangul@family{\zf@family}} +\AtBeginDocument{% + \begingroup + \unless\ifdefined\luatexko@math@hangul@family + \check@hangul@family + \ifdefined\hangul@font \hangul@font \fi + \xdef\luatexko@math@hangul@family{\f@family}% + \fi + \endgroup + \DeclareSymbolFont{mathhangul}\zf@enc\luatexko@math@hangul@family\mddefault\updefault + \ifcsname\zf@enc/\luatexko@math@hangul@family/\bfdefault/\updefault\endcsname + \SetSymbolFont{mathhangul}{bold}\zf@enc\luatexko@math@hangul@family\bfdefault\updefault + \fi + \setmathhangulblock{AC00}{D7A3} +} + +%% package options +\newif\if@hangul +\newif\if@hanja +\newif\if@unfonts +\DeclareOption{hangul}{\@hangultrue} +\DeclareOption{hanja}{\@hangultrue\@hanjatrue} +\DeclareOption{unfonts}{\@unfontstrue} +\ProcessOptions\relax + +\if@unfonts + \setmainhangulfont[ + InterHangul=-0.04em, + InterLatinCJK=0.125em, + PunctRaise=-0.125em, + SlantedFont=*, SlantedFeatures={FakeSlant=0.2}, + ItalicFont=*, ItalicFeatures={FakeSlant=0.2}, + BoldSlantedFont=*Bold, BoldSlantedFeatures={FakeSlant=0.2}, + BoldItalicFont=*Bold, BoldItalicFeatures={FakeSlant=0.2}, + ]{UnBatang} + \setsanshangulfont[ + InterLatinCJK=0.125em, + PunctRaise=-0.125em, + SlantedFont=*, SlantedFeatures={FakeSlant=0.2}, + ItalicFont=*, ItalicFeatures={FakeSlant=0.2}, + BoldSlantedFont=*Bold, BoldSlantedFeatures={FakeSlant=0.2}, + BoldItalicFont=*Bold, BoldItalicFeatures={FakeSlant=0.2}, + ]{UnDotum} + \setmonohangulfont[ + SlantedFont=*, SlantedFeatures={FakeSlant=0.2}, + ItalicFont=*, ItalicFeatures={FakeSlant=0.2}, + BoldSlantedFont=*Bold, BoldSlantedFeatures={FakeSlant=0.2}, + BoldItalicFont=*Bold, BoldItalicFeatures={FakeSlant=0.2}, + ]{UnDotum} +\fi + +\AtBeginDocument{% [unfonts] 없는 경우 에러 방지 +\unless\ifdefined\serifhangul@font\let\serifhangul@font\relax\fi +\unless\ifdefined\sanshangul@font \let\sanshangul@font\serifhangul@font\fi +\unless\ifdefined\monohangul@font \let\monohangul@font\sanshangul@font\fi +% for hyperref +\@ifpackageloaded{hyperref}{\pdfstringdefDisableCommands{% + \let\dotemph\@firstofone + \let\ruby\@firstoftwo + \let\uline\@firstofone + \let\sout\@firstofone + \let\uuline\@firstofone + \let\xout\@firstofone + \let\uwave\@firstofone + \let\dashuline\@firstofone + \let\dotuline\@firstofone + \let\autojosaattr\@firstofone + }}{} +} + +\RequirePackage{kolabels-utf} +\if@hangul + \RequirePackage{konames-utf} + \linespread{1.3888} + \footnotesep=1.3888\footnotesep + \skip\footins=1.3888\skip\footins plus6pt minus3pt + \directlua{luatexko.hangulmain = true} +\fi + +\endinput |