summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xetex/xetexko/xetexko-vertical.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/xetex/xetexko/xetexko-vertical.sty')
-rw-r--r--Master/texmf-dist/tex/xetex/xetexko/xetexko-vertical.sty109
1 files changed, 109 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xetex/xetexko/xetexko-vertical.sty b/Master/texmf-dist/tex/xetex/xetexko/xetexko-vertical.sty
new file mode 100644
index 00000000000..0e82f313a23
--- /dev/null
+++ b/Master/texmf-dist/tex/xetex/xetexko/xetexko-vertical.sty
@@ -0,0 +1,109 @@
+% $Id: xetexko-vertical.sty,v 1.12 2012/12/13 09:13:00 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.
+
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname ProvidesPackage\endcsname\relax\else
+ \ProvidesPackage{xetexko-vertical}
+ [2013/03/27 v2.0 Vertical environment for XeTeX-ko]
+\fi
+
+\unless\ifcsname @tempdima\endcsname\newdimen\@tempdima\fi
+\unless\ifcsname @tempdimb\endcsname\newdimen\@tempdimb\fi
+\unless\ifcsname @tempdimc\endcsname\newdimen\@tempdimc\fi
+\unless\ifcsname AtBeginDocument\endcsname\def\AtBeginDocument#1{#1}\fi
+\unless\ifcsname @onlypreamble\endcsname\def\@onlypreamble#1{}\fi
+
+% do not veticalize headline/footline
+\protected\def\verticaltypesetting{%
+ \AtBeginDocument{\XK@vertical@spacing}%
+ \maxdepth\z@
+ \dimen@\textwidth
+ \textwidth\textheight
+ \textheight\dimen@
+ \edef\@outputpage{%
+ \unexpanded{\xetexko@rotatebox\@outputbox\textwidth\textheight}%
+ \unexpanded\expandafter{\@outputpage}}%
+}
+\@onlypreamble\verticaltypesetting
+
+\def\xetexko@rotatebox#1{%
+ \ifvbox#1\count@\@ne\else\count@\z@\fi
+ \dimen@\wd#1\dimen@ii\dimexpr\ht#1+\dp#1\relax
+ \setbox#1\ifnum\count@=\@ne
+ \vbox to\dimen@\bgroup\hbox to\dimen@ii\bgroup\hfil\else
+ \hbox to\dimen@ii\bgroup\vbox to\dimen@\bgroup\fi
+ \wd#1\z@ \ht#1\z@ \dp#1\z@
+ \special{x:gsave}\special{x:rotate -90}\box#1\special{x:grestore}%
+ \ifnum\count@=\@ne\egroup\vfil\else\vfil\egroup\hfil\fi\egroup
+}
+
+% users can declare vertical EM size, which might be different from 1em.
+\newdimen\verticalem
+
+\def\XK@vertical@spacing{%
+ \ifnum\verticalem > \z@
+ \def\XK@vert@half@em{.5\verticalem}%
+ \else
+ \def\XK@vert@half@em{.5em}%
+ \fi
+ \def\precjkopenparen {\leavevmode\hbox to\XK@vert@half@em\bgroup\hss}%
+ \def\precjkcloseparen{\leavevmode\hbox to\XK@vert@half@em\bgroup}%
+ \def\precjkfullstop {\leavevmode\hbox to\XK@vert@half@em\bgroup}%
+ \spaceskip\XK@vert@half@em plus\XK@vert@half@em\relax
+ \parindent\XK@vert@half@em \parindent2\parindent
+}
+
+\protected\long\def\vertical#1{%
+ \setbox\z@\vbox\bgroup
+ \hsize=#1%
+ \leftskip\z@
+ \rightskip\z@
+ \parindent\z@
+ \everypar{}%
+ \XK@vertical@spacing
+}
+
+\protected\def\endvertical{%
+ \egroup
+ \@tempdima\wd\z@
+ \@tempdimb\ht\z@
+ \@tempdimc\dp\z@
+ \setbox\z@\hbox{%
+ \kern\dimexpr\@tempdimb+0.5em\relax
+ \wd\z@\z@
+ \ht\z@\z@
+ \dp\z@\z@
+ \special{x:gsave}%
+ \special{x:rotate -90}%
+ \box\z@
+ \special{x:grestore}}%
+ \wd\z@\dimexpr\@tempdimb+\@tempdimc\relax
+ \ht\z@\z@
+ \dp\z@\z@
+ \leavevmode
+ \raise\dimexpr\@tempdima-\@tempdimc\relax\box\z@
+}
+
+\protected\def\vertlatin#1{\leavevmode\lower0.5ex\hbox{\latinmarks #1}}
+
+\endinput
+
+%% example:
+%\newhangulfontfamily\myvertfont
+% [Script=Hangul,Vertical=RotatedGlyphs]
+% {HCR Dotum LVT}
+%\verticalem=1.05em
+%\begin{vertical}{12em}\myvertfont
+% 세로쓰기 영역.
+% #1 = 세로길이
+%\end{vertical}
+