diff options
Diffstat (limited to 'Master/texmf-dist/tex/plain/kotex-plain/kotexutf-core.tex')
-rw-r--r-- | Master/texmf-dist/tex/plain/kotex-plain/kotexutf-core.tex | 645 |
1 files changed, 645 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/kotex-plain/kotexutf-core.tex b/Master/texmf-dist/tex/plain/kotex-plain/kotexutf-core.tex new file mode 100644 index 00000000000..98bf4ce5959 --- /dev/null +++ b/Master/texmf-dist/tex/plain/kotex-plain/kotexutf-core.tex @@ -0,0 +1,645 @@ +%% File `kotexutf-core.tex` +%% +%% Copyright (C) 2009-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. +%% +\expandafter\ifx\csname eTeXversion\endcsname\relax + \errhelp{kotexutf requires e-TeX. Please run etex or pdftex.} + \errmessage{kotexutf : Not running under e-TeX.} + \expandafter\endinput +\fi + +%% frenchspacing is default +\frenchspacing + +%% modifying commands from utf8.def +\def\UTFviii@two@octets#1#2{% + \ifx\protect\noexpand + \string#1\string#2% + \else + \ifx\protect\string + \string#1\string#2% + \else + \ifcsname u8:\string#1\string#2\endcsname + \csname u8:\string#1\string#2% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\endcsname + \else + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\unihangul@two@octets + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter#1% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter#2% + \fi + \fi + \fi +} +\def\unihangul@two@octets#1#2{% + \expandafter\unihangulchar\expandafter{% + \number\numexpr + (`#1 - 192) * 64 + + (`#2 - 128) \relax}} +\def\UTFviii@three@octets#1#2#3{% + \ifx\protect\noexpand + \string#1\string#2\string#3% + \else + \ifx\protect\string + \string#1\string#2\string#3% + \else + \ifcsname u8:\string#1\string#2\string#3\endcsname + \csname u8:\string#1\string#2\string#3% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\endcsname + \else + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\unihangul@three@octets + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter#1% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter#2% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter#3% + \fi + \fi + \fi +} +\def\unihangul@three@octets#1#2#3{% + \expandafter\unihangulchar\expandafter{% + \number\numexpr + (`#1 - 224) * 4096 + + (`#2 - 128) * 64 + + (`#3 - 128) \relax}} +\def\UTFviii@four@octets#1#2#3#4{% + \ifx\protect\noexpand + \string#1\string#2\string#3\string#4% + \else + \ifx\protect\string + \string#1\string#2\string#3\string#4% + \else + \ifcsname u8:\string#1\string#2\string#3\string#4\endcsname + \csname u8:\string#1\string#2\string#3\string#4% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\endcsname + \else + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\unihangul@four@octets + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter#1% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter#2% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter#3% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter#4% + \fi + \fi + \fi +} +\def\unihangul@four@octets#1#2#3#4{% + \expandafter\unihangulchar\expandafter{% + \number\numexpr + (`#1 - 240) * 262144 + + (`#2 - 128) * 4096 + + (`#3 - 128) * 64 + + (`#4 - 128) \relax}} + + +%% subfont plane and char slot +\def\geth@ngulpl@ne@ndch@r{% + \count@\numexpr % 1 / 256 = .00390625 + \number\dimexpr.00390625\dimexpr\unih@ngulpoint sp\relax\relax + \relax + \chardef\h@ngulch@r % hangul char slot + \number\numexpr\unih@ngulpoint-\@cclvi*\count@\relax + \let\h@ngulpl@ne\@empty % hangul subfont plane + \ifnum\count@>\@cclv + \ifnum\count@>4095 + \def\h@ngulpl@ne{1}\count@\numexpr\count@-4096\relax + \else + \def\h@ngulpl@ne{0}% + \fi + \@tempcnta\numexpr % 1 / 256 = .00390625 + \number\dimexpr.00390625\dimexpr\count@ sp\relax\relax + \relax + \edef\h@ngulpl@ne{\h@ngulpl@ne\dhucsnumt@hex\@tempcnta}% + \count@\numexpr\count@-\@cclvi*\@tempcnta\relax + \fi + \@tempcnta\numexpr % 1 / 16 = .0625 + \number\dimexpr.0625\dimexpr\count@ sp\relax\relax + \relax + \edef\h@ngulpl@ne{\h@ngulpl@ne\dhucsnumt@hex\@tempcnta}% + \count@\numexpr\count@-\sixt@@n*\@tempcnta\relax + \edef\h@ngulpl@ne{\h@ngulpl@ne\dhucsnumt@hex\count@}% +} +\def\dhucsnumt@hex#1{\ifcase\number#1 + 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or a\or b\or c\or d\or e\or f\else \dhucserr@r\fi +} + +%% hangul font specific dimens +\def\dhucs@hu{} +\def\dhucs@interhchar{} +\def\dhucs@fullstoplower{} +\def\dhucs@questionlower{} +\def\dhucs@exclamationlower{} + +\def\usehangulfontspec#1{% + \begingroup + \immediate\openin\z@=hfontspec.#1 % + \ifeof\z@ + \message{\space\space *** Cannot find hangul font-spec file hfontspec.#1 ***\space\space} + \else + \endlinechar\m@ne + \get@hfnt@spec@ + \fi + \immediate\closein\z@ + \endgroup} +\def\get@hfnt@spec@{% + \read\z@ to \@tempb + \ifx\@tempb\@empty + \let\next\relax + \else + \expandafter\get@hfnt@spec@@\@tempb\@@nil + \let\next\get@hfnt@spec@ + \fi\next} +\def\get@hfnt@spec@@#1 = #2\@@nil{% + \expandafter\gdef\csname dhucs@#1\endcsname{#2}} + +%% \unih@ngulpoint is unicode code point +\newcount\unih@ngulpoint + +%% protect \unihangulchar +\protected\def\unihangulchar#1{% + \unih@ngulpoint#1\relax + \futurelet\dhucs@next\unihangulchar@@} +\def\unihangulchar@@{% check what comes next to hangul? + % \nexttoh@ngul = 1 : ascii opening parentheses + % \nexttoh@ngul = 2 : ascii closing parentheses + % \nexttoh@ngul = 3 : ascii numbers + % \nexttoh@ngul = 4 : ascii fullstop + % \nexttoh@ngul = 5 : ascii question mark + % \nexttoh@ngul = 6 : ascii exclamation mark + % \nexttoh@ngul = 0 : all others + \chardef\nexttoh@ngul\z@ + % \puncnobre@k = 0 : this is not char ``orphan'' case + % \puncnobre@k = 1 : do not break before char ``orphan'' + \chardef\puncnobre@k\z@ + % avoiding char ``orphan'' operates only in four cases : + % [hangulchar] [par] + % [hangulchar] [space] [par] + % [hangulchar] [.?!] [par] + % [hangulchar] [.?!] [space] [par] + \ifx\fi\dhucs@next \expandafter\let\csname dhucs@next\endcsname\relax \fi + \ifx\ifx\dhucs@next \expandafter\let\csname dhucs@next\endcsname\relax \fi + \ifx\par\dhucs@next + \chardef\puncnobre@k\@ne + \let\unihangul@branch\unihangulchar@@@ + \else + \ifx\@sptoken\dhucs@next + \let\unihangul@branch\check@next@to@sptoken + \else + \if\noexpand\dhucs@next\relax + \else + \check@dhucs@next@ascii456123\@nil + \fi + \ifnum\nexttoh@ngul>\thr@@ + \let\unihangul@branch\check@next@to@puncs + \else + \let\unihangul@branch\unihangulchar@@@ + \fi + \fi + \fi + \unihangul@branch +} + +\def\check@next@to@sptoken{% + \afterassignment\check@next@to@sptoken@\let\dhucs@next= } +\def\check@next@to@sptoken@{% + \futurelet\dhucs@nextnext\check@next@to@sptoken@@} +\def\check@next@to@sptoken@@{% + \ifx\dhucs@nextnext\par + \chardef\puncnobre@k\@ne + \fi + \unihangulchar@@@\dhucs@next +} + +\def\check@next@to@puncs{% + \afterassignment\check@next@to@puncs@\let\dhucs@next= } +\def\check@next@to@puncs@{% + \futurelet\dhucs@nextnext\check@next@to@puncs@@} +\def\check@next@to@puncs@@{% + \ifx\dhucs@nextnext\par + \chardef\puncnobre@k\@ne + \expandafter\unihangulchar@@@\expandafter\dhucs@next + \else + \ifx\dhucs@nextnext\@sptoken + \expandafter\expandafter\expandafter\check@next@to@punc@sptoken + \else + \expandafter\expandafter\expandafter\unihangulchar@@@ + \expandafter\expandafter\expandafter\dhucs@next + \fi + \fi +} + +\def\check@next@to@punc@sptoken{% + \afterassignment\check@next@to@punc@sptoken@\let\dhucs@nextnext= } +\def\check@next@to@punc@sptoken@{% + \futurelet\dhucs@nextnextnext\check@next@to@punc@sptoken@@} +\def\check@next@to@punc@sptoken@@{% + \ifx\dhucs@nextnextnext\par + \chardef\puncnobre@k\@ne + \fi + \unihangulchar@@@\dhucs@next\dhucs@nextnext +} + +%% see lucenc.dfu +\def\check@dhucs@next@ascii#1{% + \def\@tempa{#1}% + \ifx#1\@nil + \let\next\relax + \else + \let\next\check@dhucs@next@ascii + \edef\@tempb{\csname nexttohangul-#1\endcsname}% + \expandafter\check@dhucs@next@ascii@\@tempb\@nnil + \fi\next +} +\def\check@dhucs@next@ascii@#1{% + \ifx#1\@nnil\let\next@\relax + \else + \ifx#1\dhucs@next + \chardef\nexttoh@ngul\@tempa + \let\next@\remove@to@nnil \let\next\remove@to@nil + \else + \let\next@\check@dhucs@next@ascii@ + \fi + \fi\next@ +} +\def\remove@to@nil#1\@nil{} +\def\remove@to@nnil#1\@nnil{} + +%%% if \strictcharcheck is defined ... +\ifdefined\strictcharcheck + \def\dhucs@check@if@char@exists{% + \unless\iffontchar\font@name\h@ngulch@r + \errmessage{Character \number\h@ngulch@r\space + doesn't exist in font \fontname\font@name}% + \fi} +\else + \let\dhucs@check@if@char@exists\relax +\fi + +%% hangul space factor +\mathchardef\Hangul@spacefactor=1001\relax +\mathchardef\Hanja@spacefactor=1002\relax +\mathchardef\nobreak@spacefactor=998\relax + +\def\getthish@ngulcl@ss{% what is current hangul category? + % \thish@ngul = 1 : hangul + % \thish@ngul = 2 : hanja, hiragana, katakana + % \thish@ngul = 3 : opening parentheses; NOT in use: see lucenc.dfu + % \thish@ngul = 4 : closing parentheses; NOT in use: see lucenc.dfu + % \thish@ngul = 0 : all others + \ifnum\unih@ngulpoint<12352 + \chardef\thish@ngul\z@ % cjk symbols + \else\ifnum\unih@ngulpoint<12539 + \chardef\thish@ngul\tw@ % hiragana, katakana + \else\ifnum\unih@ngulpoint<13312 + \chardef\thish@ngul\z@ % cjk symbols + \else\ifnum\unih@ngulpoint<44032 + \chardef\thish@ngul\tw@ % hanja ext A; hanja unified + \else\ifnum\unih@ngulpoint<57344 + \chardef\thish@ngul\@ne % hangul + \else\ifnum\unih@ngulpoint<64256 + \chardef\thish@ngul\tw@ % hanja compatibillity + \else\ifnum\unih@ngulpoint<65520 + \chardef\thish@ngul\z@ % full/half width marks + \else + \chardef\thish@ngul\tw@ % hanja ext. B mostly + \fi\fi\fi\fi\fi \fi\fi +} + +%% disallow linebreak after opening parentheses +\sfcode`\(=\nobreak@spacefactor +\sfcode`\`=\nobreak@spacefactor +\sfcode`\[=\nobreak@spacefactor +\sfcode`\{=\nobreak@spacefactor +%% TeX inserts \discretionary{}{}{} always after hyphen char, +%% so we can safely give nobreak-spacefactor to ``-'' to suppress +%% unwanted micro-space after latin hyphen char. +\sfcode`\-=\nobreak@spacefactor + +\def\dobeforeh@ngulch@r{% + \ifhmode + \ifcase\lastnodetype + % e-TeX's lastnodetype 0 is char node + \dhucs@normal@break@before@cjk + \or % hlist node + % As \hbox returns spacefactor to 1000, + % we cannot identify what was before this korean char. + % So, allowing linebreak is somewhat dangerous; We Do, however. + \ifcase\thish@ngul + \or \ifcase\puncnobre@k\breakbetweenhanja + \or\nobreakbetweenhanja\fi + \or \ifcase\puncnobre@k\breakbetweenhanja + \or\nobreakbetweenhanja\fi + \fi + \or % vlist node + \or % rule node + \or % ins node + \or % mark node + \or % adjust node + \or % ligature node + \ifnum\spacefactor>\nobreak@spacefactor + \ifcase\thish@ngul + \or \ifcase\puncnobre@k\breakafterasciichar + \or\nobreakafterasciichar\fi + \or \ifcase\puncnobre@k\breakafterasciichar + \or\nobreakafterasciichar\fi + \fi + \fi + \or % disc node + \or % whatsit node + % how do we know what there was before whatsit? + \dhucs@normal@break@before@cjk + \or % math node + \ifcase\thish@ngul + \or \ifcase\puncnobre@k\breakafterinlinemath + \or\nobreakafterinlinemath\fi + \or \ifcase\puncnobre@k\breakafterinlinemath + \or\nobreakafterinlinemath\fi + \fi + \or % glue node + \or % kern node, which is another source of headache! + \ifdim\lastkern=\z@ + % is it safe to break lines after \kern 0pt? + \dhucs@normal@break@before@cjk + \else + \ifnum\spacefactor>\nobreak@spacefactor + \ifdim\lastkern=\@tempdima % see redefinition of \sw@slant + \ifnum\spacefactor>\@m + \ifcase\thish@ngul + \or \ifcase\puncnobre@k\breakbetweenhanja + \or\nobreakbetweenhanja\fi + \or \ifcase\puncnobre@k\breakbetweenhanja + \or\nobreakbetweenhanja\fi + \fi + \else + \ifcase\thish@ngul + \or \ifcase\puncnobre@k\breakafterasciichar + \or\nobreakafterasciichar\fi + \or \ifcase\puncnobre@k\breakafterasciichar + \or\nobreakafterasciichar\fi + \fi + \fi + \else + \ifcase\thish@ngul + \or \ifcase\puncnobre@k\breakbetweenhanja + \or\nobreakbetweenhanja\fi + \or \ifcase\puncnobre@k\breakbetweenhanja + \or\nobreakbetweenhanja\fi + \fi + \fi + \fi + \fi + \@tempdima\z@ + \or % penalty node + % Even after \nobreak, inter-hangulchar kern should be applied! + \ifnum\lastpenalty<\@M + \dhucs@normal@break@before@cjk + \else + \chardef\puncnobre@k\@ne + \dhucs@normal@break@before@cjk + \fi + \or % unset node + \or % math mode node + \fi + \fi +} + +\ifdefined\sw@slant + %% detect last italiccorr + \edef\sw@slant{\unexpanded\expandafter{\sw@slant\@tempdima\lastkern}} +\else + \unless\ifdefined\@tempdima \newdimen\@tempdima\@tempdima=0pt \fi +\fi + +\def\dhucs@normal@break@before@cjk{% + \ifnum\spacefactor>\nobreak@spacefactor + \ifcase\thish@ngul + % other cjk char: do nothing + \or % hangul + \ifnum\spacefactor=\Hangul@spacefactor + \ifcase\puncnobre@k\breakbetweenhangul + \or\nobreakbetweenhangul\fi + \else + \ifnum\spacefactor=\Hanja@spacefactor + \ifcase\puncnobre@k\breakbetweenhanja + \or\nobreakbetweenhanja\fi + \else + \ifcase\puncnobre@k\breakafterasciichar + \or\nobreakafterasciichar\fi + \fi + \fi + \or % hanja, hiragana, katakana + \ifnum\spacefactor=\Hangul@spacefactor + \ifcase\puncnobre@k\breakbetweenhanja + \or\nobreakbetweenhanja\fi + \else + \ifnum\spacefactor=\Hanja@spacefactor + \ifcase\puncnobre@k\breakbetweenhanja + \or\nobreakbetweenhanja\fi + \else + \ifcase\puncnobre@k\breakafterasciichar + \or\nobreakafterasciichar\fi + \fi + \fi + \fi + \fi +} + +\def\do@fterh@ngulch@r{% + \ifhmode + \ifcase\nexttoh@ngul + \ifcase\thish@ngul + \declarehanjaspacefactor + \or \declarehangulspacefactor + \or \declarehanjaspacefactor + \or \declarenobreakspacefactor + \or \declarehanjaspacefactor + \fi + \or \breakbeforeasciichar % ( + \or % ) + \spacefactor\@m + \or \kernbeforeasciichar % 123 + \or \expandafter\expandafter\expandafter\asciifullstopafterhangul % . + \or \expandafter\expandafter\expandafter\asciiquestionafterhangul % ? + \or \expandafter\expandafter\expandafter\asciiexclamationafterhangul % ! + \fi + \fi +} + +\def\declarenobreakspacefactor{\spacefactor\nobreak@spacefactor} +\def\declarehangulspacefactor{\spacefactor\Hangul@spacefactor} +\def\declarehanjaspacefactor{\spacefactor\Hanja@spacefactor} + +%% default linebreaking command +\def\breakbetweenhanja{\discretionary{}{}{}} +\def\nobreakbetweenhanja{} + +%% under option [finemath], hfontspec.un becomes active. +%% otherwize, all font-spec value is 0pt. +\ifdefined\finemath %\if@dhucsfinemath + %% As Korean typesetting allows linebreak at any point between hangul char, + %% \doublehyphendemerits does not have meaning any longer. + \doublehyphendemerits=0 + %% Now that some code to suppress char ``orphan'' has been added, + %% \finalhyphendemerits does not have much meaning, either. + %% Moreover, \finalhyphendemerits discourages linebreak of final word + %% within a paragraph; undesirable when the final word is long. + \finalhyphendemerits=0 + %% + \usehangulfontspec{default} + \def\breakbetweenhangul{\discretionary{}{}{\kern\dhucs@interhchar}} + \def\nobreakbetweenhangul{\kern\dhucs@interhchar} + % \dimexpr used, because \newdimen\something\something=1em fixes + % \something's dimen size when it is initially assigned. + % In this case, for example, \dhucs@hu applied to normal size is the same size + % as to \Huge size font. This does not seem to be what we want. + % Accordingly, we decided to declare \dhucs@hu as a macro, not a dimen. + % Now that \dhucs@hu is a macro, e-TeX's \dimexpr enables simple definition + % of its multiplication. + \def\breakafterinlinemath{\hskip\dimexpr\dhucs@hu*3\relax\relax} + % At above line, \dimexpr absorbs the first \relax; + % second \relax terminates \hskip's arguments. + % On the other hand, as \kern does not scan for ``plus'' or ``minus,'' + % another \relax seems to be redundant at following line. + \def\nobreakafterinlinemath{\kern\dimexpr\dhucs@hu*3\relax} + \def\breakafterasciichar{\hskip\dimexpr\dhucs@hu*2\relax\relax} + \def\nobreakafterasciichar{\kern\dimexpr\dhucs@hu*2\relax} + \def\breakbeforeasciichar{\hskip\dimexpr\dhucs@hu*2\relax\relax} + \def\kernbeforeasciichar{\kern\dimexpr\dhucs@hu*2\relax} + \def\asciifullstopafterhangul#1{% + \lower\dhucs@fullstoplower\hbox\bgroup#1\dhucs@check@another@punc} + \def\asciiquestionafterhangul#1{% + \lower\dhucs@questionlower\hbox\bgroup + \let\dhucs@kern@before@quot@char\dhucs@kern@before@quot@char@ + \kern\dimexpr\dhucs@hu*3\relax#1\dhucs@check@another@punc} + \def\asciiexclamationafterhangul#1{% + \lower\dhucs@exclamationlower\hbox\bgroup + \let\dhucs@kern@before@quot@char\dhucs@kern@before@quot@char@ + \kern\dimexpr\dhucs@hu*4\relax#1\dhucs@check@another@punc} + \def\dhucs@kern@before@quot@char@{% + \ifx'\dhucs@next\kern\dimexpr\dhucs@hu*3\relax\fi + \spacefactor1003\relax} % for U+2019, U+201D; see lucenc.dfu + \let\dhucs@kern@before@quot@char\relax + %% lowering multiple puctuations: + %% If next char is a punctuation, do not close \hbox and scan another char. + \def\dhucs@check@another@punc{% + \futurelet\dhucs@next\dhucs@check@another@punc@} + \def\dhucs@check@another@punc@{% + \chardef\nexttoh@ngul\z@ + \if\noexpand\dhucs@next\relax\else + \check@dhucs@next@ascii456\@nil + \fi + \dhucs@check@another@punc@@} + \def\dhucs@check@another@punc@@{% + \ifcase\nexttoh@ngul + \expandafter\dhucs@check@another@punc@end + \or \expandafter\dhucs@check@another@punc@end + \or \expandafter\dhucs@check@another@punc@end + \or \expandafter\dhucs@check@another@punc@end + \or \let\dhucs@kern@before@quot@char\relax + \expandafter\dhucs@check@another@punc@@@ + \or \let\dhucs@kern@before@quot@char\dhucs@kern@before@quot@char@ + \expandafter\dhucs@check@another@punc@@@ + \or \let\dhucs@kern@before@quot@char\dhucs@kern@before@quot@char@ + \expandafter\dhucs@check@another@punc@@@ + \fi} + \def\dhucs@check@another@punc@@@#1{% + \kern\dhucs@hu\relax #1\dhucs@check@another@punc} + \def\dhucs@check@another@punc@end{% + \dhucs@kern@before@quot@char + \global\count@\spacefactor\egroup\spacefactor\count@} +\else + \usehangulfontspec{default} + \def\breakafterinlinemath{\hskip\z@skip} + \def\nobreakafterinlinemath{} + \def\breakbetweenhangul{\discretionary{}{}{}} + \def\nobreakbetweenhangul{} + \def\breakafterasciichar{\hskip\z@skip} + \def\nobreakafterasciichar{} + \def\breakbeforeasciichar{\hskip\z@skip} + \def\kernbeforeasciichar{} + \def\asciifullstopafterhangul{} + \def\asciiquestionafterhangul{} + \def\asciiexclamationafterhangul{} +\fi + +%% linebreaking related to cjk symbols +\def\cjksymbolextraspace{\discretionary{}{}{}} +\def\cjksymbolskip{% + \ifhmode + \ifnum\spacefactor>\nobreak@spacefactor + \ifnum\lastpenalty<\@M + \cjksymbolextraspace + \fi + \fi + \else + \leavevmode + \fi} +\def\postcjksymskip{\ifhmode\declarehanjaspacefactor\fi} +\def\postcjksymnobreak{\ifhmode\declarehanjaspacefactor\nobreak\fi} +\def\postcjksymbol{\ifhmode\declarehanjaspacefactor\fi} +\def\kernbeforelatinquoteclose{% + \ifhmode\ifnum\spacefactor=1003 \kern\dimexpr\dhucs@hu*3\relax\fi\fi} +\def\cjksymbolunskip{} + +%% \disablehangulfontspec disables all the font-spefic spaces and dimens +%% except the space after inline math. +\def\disablehangulfontspec{% + \def\breakbetweenhangul{\discretionary{}{}{}} + \let\nobreakbetweenhangul\@empty + \def\breakafterasciichar{\hskip\z@skip} + \let\nobreakafterasciichar\@empty + \let\breakbeforeasciichar\breakafterasciichar + \let\kernbeforeasciichar\@empty + \let\asciifullstopafterhangul\relax + \let\asciiquestionafterhangul\relax + \let\asciiexclamationafterhangul\relax +} + +%% \disablehangullinebreak disables all linebreaking +%% related to hangul typesetting. +\def\disablehangullinebreak{% + \let\unihangulchar@\unihangulchar@@@ + \let\dobeforeh@ngulch@r\relax + \let\do@fterh@ngulch@r\relax + \let\cjksymbolskip\leavevmode} + + +%% bangjom emphasis +\def\dhucs@emph#1{} +\newdimen\dhucs@emph@raise +\protected\def\dotemph#1{\begingroup + \setbox\z@\hbox{#1}\dhucs@emph@raise\ht\z@ + \advance\dhucs@emph@raise -.4em + \let\dhucs@emph\dot@emph + #1\endgroup} +\def\dot@emph#1{% + \ifnum\thish@ngul>\z@ %\ifnum\thish@ngul<\thr@@ % hangul or hanja + \setbox\z@\hbox{#1}\dimen@\wd\z@ + \rlap{\raise\dhucs@emph@raise + \hbox to\dimen@{\normalfont\bfseries\hss˙\hss}}\fi %\fi +} + + +\endinput + |