OSDN Git Service

Updated the draft for post-proceedings.
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Sat, 12 Nov 2011 01:26:10 +0000 (10:26 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Sat, 12 Nov 2011 01:26:10 +0000 (10:26 +0900)
doc/ajt-devel-ltja.tex

index bc9c0b4..a91f5ac 100644 (file)
@@ -47,7 +47,7 @@ internal processing methods of \LuaTeX-ja.
 \newcommand{\jstrut}{\vrule width0pt height\cht depth\cdp}
 \newcommand{\imagfm}[1]{\ifvmode\leavevmode\fi%
   \hbox{\fboxsep=0pt\fbox{\setbox0=\hbox{#1}\copy0\kern-\wd0
-  \vrule width \wd0 height 0.4pt depth0.4pt}}}
+  \smash{\vrule width \wd0 height 0.4pt depth0.4pt}}}}
 \begin{document}
 
 %%% Do not forget to start with \maketitle!
@@ -56,51 +56,56 @@ internal processing methods of \LuaTeX-ja.
 \section{Introduction}
 \subsection{History}
 To typeset Japanese documents with \TeX, ASCII p\TeX~\cite{ptex} has
-been widely used.  There are other methods---for example, using Omega
+been widely used in Japan.  There are other methods---for example, using Omega
 and OTP~\cite{omega}, or with the CJK package---to do so, however,
-these alternative methods did not became a majority. On the one hand,
+these alternative methods did not become a majority. On the one hand,
 p\TeX\ enables us to produce high-quality documents. 
 
 On the other hand, p\TeX\ is left behind from the extensions of \TeX\
 such as \eTeX\ and \pdfTeX, and the diffusion of UTF-8 encoding.  In
-recent years, the situation become better, because of the developments
-of |ptexenc|~\cite{ptexenc} by Nobuyuki~Tsuchimura,
+recent years, the situation become better, because of developments
+of |ptexenc|~\cite{ptexenc} by Nobuyuki Tsuchimura (\hbox{土村展之}),
 $\varepsilon$-p\TeX~\cite{eptex} by the author,~and up\TeX~\cite{uptex}
-by Takuji~Tanaka. However, continuing this approach, namely, to develop
+by Takuji Tanaka (田中琢爾). However, continuing this approach, namely, to develop
 an engine extension localized for Japanese, is not wise. This approach
 needs lots of work for \emph{each} engine, and \LuaTeX\ has an ability
-to hook \TeX's internal process by using callbacks.
+to hook \TeX's internal process by using Lua callbacks.
 
 
 There were several experimental attempts to typeset
-Japanese documents under \LuaTeX\ before. Here we cite three examples:
+Japanese documents with \LuaTeX\ before. Here we cite three examples:
 \begin{itemize}
 \item |luaums.sty|~\cite{luaums} developed by the author. This
-      experimental package is for creating a Japanese-based presentation
-      under \LuaTeX.
-\item |luajalayout| package~\cite{luajalayout}, formerly known as the
-      |jafontspec| package, by Kazuki Maeda. This package is based on
-      \LaTeXe\ and |fontspec| package.
-\item |luajp-test| package~\cite{luajp-test}, a test package made by
-      Atsuhito Kohda, based on articles on the web page~\cite{joylua}.
+      experimental package is for creating a certain Japanese-based presentation
+      with \LuaTeX.
+\item the \emph{luajalayout} package~\cite{luajalayout}, formerly known as the
+      \emph{jafontspec} package, by Kazuki Maeda (前田一貴). This package is based on
+      \LaTeXe\ and \emph{fontspec} package.
+\item the \emph{luajp-test} package~\cite{luajp-test}, a test package made by
+      Atsuhito Kohda (香田温人), based on articles on the web page~\cite{joylua}.
 \end{itemize}
-...
+However, these packages are based on \LaTeXe, and do not have much
+ability to control the typesetting rule. And it is inefficient that more
+than one people separately develop similar packages.  Development of the
+\LuaTeX-ja package is started initially by the author and Kazuki Maeda, because of
+these situations.
 
 \subsection{Development Policy of \LuaTeX-ja}
 \label{ssec-pol} 
-The first aim of the project is to implement features (from the
-'primitive' level) of p\TeX as macros under \LuaTeX, so \LuaTeX-ja is
-much affected by p\TeX.  However, as the development proceeds, some
+The first aim of the \LuaTeX-ja project is to implement features (from the
+'primitive' level) of p\TeX\ as macros under \LuaTeX, so \LuaTeX-ja is
+much affected by p\TeX.  However, as development proceeds, some
 technical/conceptual difficulties are arisen. Hence we changed the aim
-of the project.
+of the project as follows:
 \begin{itemize}
-\item\emph{\LuaTeX-ja offers at least the same flexibility of typesetting that
-     p\TeX\ has.}
+\item\emph{\LuaTeX-ja offers at least the same flexibility of
+     typesetting that p\TeX\ has.}
 
      We think that the ability of producing outputs conformed to
      JIS~X~4051~\cite{jisx4051}, the Japanese Industrial Standard for
-     typesetting, is not enough; if one wants to produce very
-     incoherent outputs for some reason, it should be possible. 
+     typesetting, or to a technical note~\cite{w3c} by W3C is not enough;
+     if one wants to produce very incoherent outputs for some reason, it
+     should be possible.
 In this point, previous attempts of Japanese typesetting with \LuaTeX\
      which we cited in the previous subsection are inadequate.
 
@@ -119,15 +124,15 @@ p\TeX\ has some flexibility of typesetting, by changing internal
 \subsection{Contents of this Paper}
 Here we describe the contents of the rest of this paper briefly.  In
 Section~2, we describe major differences between p\TeX\ and \LuaTeX-ja.
-In Section~3, we show the current status of the \LuaTeX-ja project. In
-Section~4, we describe some internal routine of \LuaTeX-ja.  We hope
+In Section~3, we show the current status of the \LuaTeX-ja package. In
+Section~4, we describe some internal routines of \LuaTeX-ja.  We hope
 that the materials in this section have good applications.
 
 \subsection*{About the Project}
 This \LuaTeX-ja project is hosted by SourceForge.jp. The official wiki
 is located on
 \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage}.  There is
-no stable version at Oct.\ 6, 2011, but the development source can be
+no stable version at Oct.\ 11, 2011, however the development source can be
 obtained from the git repository.  Members of the project are as follows
 (in random order): Hironori Kitagawa, Kazuki Maeda, Takayuki Yato,
 Yusuke Kuroki, Noriyuki Abe, Munehiro Yamamoto, Tomoaki Honda,
@@ -135,32 +140,32 @@ and~Shuzaburo Saito.
 
 
 \section{Major differences with \pTeX}
-In this section, we briefly look at ** major differences between p\TeX\
-and \LuaTeX-ja.  For general information of Japanese typesetting and the
-facts about p\TeX, please see Okumara~\cite{ptexjp}.
+In this section, we look at several major differences between p\TeX\
+and our \LuaTeX-ja.  For general information of Japanese typesetting and the
+overview of p\TeX, please see Okumara~\cite{ptexjp}.
 
 
 \subsection{Names of Control Sequences}
-\label{ssec-csname}
-Since p\TeX\ is a engine modification of Knuth's original \TeX82 engine,
-some primitives added in it takes a form that cannot be simulated by a
-macro.  For example, an additional primitive
-|\prebreakpenalty|$\langle\hbox{\it
+\label{ssec-csname} Since p\TeX\ is an engine modification of Knuth's
+original \TeX82 engine, some primitives added by it take a form that is
+very difficult to be simulated by a macro.  For example, an additional
+primitive |\prebreakpenalty|$\langle\hbox{\it
 char\_code}\rangle$|[=]|$\langle\hbox{\it penalty}\rangle$ in p\TeX\
-sets the amount of penalty inserted before $\langle\hbox{\it
-char\_code}\rangle$ to $\langle\hbox{\it penalty}\rangle$, and
-|\prebreakpenalty|$\langle\hbox{\it char\_code}\rangle$ can be also used
-for retrieving the value.
+sets the amount of penalty inserted before a character whose code is
+$\langle\hbox{\it char\_code}\rangle$ to $\langle\hbox{\it
+penalty}\rangle$, and |\prebreakpenalty|$\langle\hbox{\it
+char\_code}\rangle$ can be also used for retrieving the value.
 
 Moreover, there are some parameters which values of them at the end of a
 horizontal box or that of a paragraph are effective in whole box or
 paragraph.  These parameters were implemented as additional internal
-parameters in \pTeX. However, the implementation ofthese parameters in
-\LuaTeX-ja is not so easy; Twe will discuss on it in
+parameters in \pTeX. However, the implementation of these parameters in
+\LuaTeX-ja is not so easy; we will discuss on it in
 Subsection~\ref{ssec-stack}.
 
 From above 2~problems we discussed above, the assignment and retrieval
-of most parameters in \LuaTeX-ja are summarized into 3~control sequences:
+of most parameters in \LuaTeX-ja are summarized into the following
+3~control sequences:
 \begin{itemize}
 \item |\ltjsetparameter{|$\langle\hbox{\it
       name}\rangle$|=|$\langle\hbox{\it value}\rangle$|,...}|: for local
@@ -173,7 +178,7 @@ of most parameters in \LuaTeX-ja are summarized into 3~control sequences:
       a string.
 \end{itemize}
 
-\subsection{Line break after a Japanese Character}
+\subsection{Line Break after a Japanese Character}
 \label{ssec-line} 
 
 Japanese texts can break lines almost everywhere, in contrast with
@@ -181,7 +186,7 @@ alphabetic texts can break lines only between words (or use
 hyphenation). Hence, p\TeX's input processor is modified so that a
 line break after a Japanese character doesn't emit a space. However,
 there is no way to customize the input processor of \LuaTeX, other than
-hack its CWEB-source. All we can do is to modify an input line before
+to hack its CWEB-source. All a macro package can do is to modify an input line before
 when \LuaTeX\ begin to process it, inside the |process_input_buffer|
 callback.
 
@@ -190,19 +195,20 @@ purpose) will be appended to an input line, if this line ends with a Japanese
 character\footnote{Strictly speaking, it also requires that the catcode
 of the end-line character is 5~(\emph{end-of-line}). This condition is
 useful under the verbatim environment.}. One might jump to a conclusion
-that the treatment of a line break by p\TeX\ and that of \LuaTeX-ja is
-totally same, but they are different in the respect that \LuaTeX-ja's
+that the treatment of a line break by p\TeX\ and that of \LuaTeX-ja are
+totally same, however they are different in the respect that \LuaTeX-ja's
 judgement whether a comment letter will be appended the line is done
 \emph{before} the line is actually processed by \LuaTeX.
 
-Figure~\ref{fig-linebreak} shows an example; the command at the first
-line marks most of Japanese characters as `non-Japanese character'. In
-other words, from this command onward, the letter `あ' will be treated
-as an alphabetic character by \LuaTeX-ja. Then, it is natural to occur a
-space between `あ' and `y' in the output, where the actual output in the
-figure does not so.  This is because `あ' is considered to be a Japanese
-character by \LuaTeX-ja, when \LuaTeX-ja does a decision whether U+FFFFF
-will be added to the input line~2.
+Figure~\ref{fig-linebreak} shows an example of this situation; the
+command at the first line marks most of Japanese characters as
+non-Japanese characters. In other words, from that command onward, the
+letter `あ' will be treated as an alphabetic character by
+\LuaTeX-ja. Then, it is natural to occur a space between `あ' and `y' in
+the output, where the actual output in the figure does not so.  This is
+because `あ' is considered to be a Japanese character by \LuaTeX-ja,
+when \LuaTeX-ja does a decision whether U+FFFFF will be added to the
+input line~2.
 
 \begin{figure}
 \begin{LTXexample}
@@ -217,41 +223,45 @@ Japanese character.}\label{fig-linebreak}
 \subsection{Separation between `real' fonts and Metrics}
 \label{ssec-sepmet}
 
-Traditionally, most Japanese fonts used in typesetting are not proportional,
-that is, most glyphs have same size (in most cases,
+Traditionally, most Japanese fonts used in typesetting are not
+proportional, that is, most glyphs have same size (in most cases,
 square-shaped). Hence, it is not rare that the contents of different
-JFMs are totally same, and only differ in their names. For example, the
-difference between |min10.tfm| and |goth10.tfm|, which are JFMs shipped
-with p\TeX\ for seriffed \emph{mincho} family and sans-seriffed
-\emph{gothic} family, are their |FAMILY| and |FACE| only. Moreover,
-|jis.tfm| and |jisg.tfm|, which consists a parts of \emph{jis} font
-metric which is used in Haruhiko Okumura's
-\emph{jsclasses}~\cite{jsclasses}, are totally same as binary files.
-Another example is: if one want to use many fonts which are not
-installed in his \TeX\ distribution, of course he needs to prepare TFMs
-for them. But, as long as he wants to use Japanese fonts with p\TeX, he
-has to only copy and rename some JFM (\emph{e.g.},~copy |jis.tfm| to
-|hoge.tfm|).
-
-Considering this situation, we decided to separate `real' fonts and
-metrics used for these in \LuaTeX-ja. Typical font declarations are shown in
-Figure~\ref{fig-jfdef}.
+JFMs are totally same, and only differ in their names. For example,
+|min10.tfm| and |goth10.tfm|, which are JFMs shipped with p\TeX\ for
+seriffed \emph{mincho} family and sans-seriffed \emph{gothic} family,
+differ their |FAMILY| and |FACE| only. Moreover, |jis.tfm| and
+|jisg.tfm|, which consists a parts of \emph{jis} font metric, which is
+used in \emph{jsclasses}~\cite{jsclasses} by Haruhiko Okumura (奥村晴彦),
+are totally same as binary files.  Considering this situation, we
+decided to separate `real' fonts and metrics used for them in
+\LuaTeX-ja. Typical declarations of Japanese fonts in the style of plain
+\TeX\ are shown in Figure~\ref{fig-jfdef}.
 \begin{itemize}
-\item a control sequence |\jfont| must be used for Japanese fonts, instead of |\font|.
-\item \LuaTeX-ja automatically loads the |luaotfload| package, so
-      |file:| prefix and features can be used as the line~1 in
-      Figure~\ref{fig-jfdef}.
+\item A control sequence |\jfont| must be used for Japanese fonts, instead of |\font|.
+\item \LuaTeX-ja automatically loads the \emph{luaotfload} package, so
+      |file:| and |name:| prefixes, and various font features can be
+      used as the line~1 in Figure~\ref{fig-jfdef}.
 \item The |jfm| key specifies the metric for the font. In
       Figure~\ref{fig-jfdef}, both fonts will use a metric stored in a
       Lua script named |jfm-ujis.lua|. This metric is the standard
       metric in \LuaTeX-ja, and is based on JFMs used in the \emph{otf}
       package~\cite{otf}.
 \item The |psft:| prefix can be used to specify name-only, non-embedded
-      fonts. 
+      fonts. When one display a pdf with these fonts, actual fonts which
+      will be used for them depend on a pdf reader. 
 \end{itemize}
-We note that |-kern| in features is important, since if kerning
-information from real font itself will clash with spacing from the
-metric.
+The specification of a metric used in \LuaTeX-ja is similar to that of a
+JFM (see \cite{ptexjp}); characters are grouped into several classes,
+the size information of characters are specified for each class, and
+glue/kern insertions are specified for each pair of classes. Although
+the author have not tried, it may be possible to develop a program that
+`converts' a JFM to a metric for \LuaTeX-ja.  \LuaTeX-ja offers three
+metrics by default; |jfm-ujis.lua|, |jfm-jis.lua| based on the
+\emph{jis} font metric, and |jfm-min.lua| based on old |min10.tfm|.
+
+ Note that |-kern| in features
+is important, since  kerning information from real font itself will
+clash with glue/kern informations from the metric.
 
 \begin{figure}
 \begin{verbatim}
@@ -266,38 +276,41 @@ metric.
 \label{ssec-jglue}
 
 As described in \cite{luatexref}, \LuaTeX's kerning and ligaturing
-process is totally different from that of \TeX82.  \TeX82's process is
+processes are totally different from those of \TeX82.  \TeX82's process is
 done just when a (sequence of) character is appended to current
 list. Thus we can interrupt this process by writing as
 |f{}irm|. However, \LuaTeX's process is \emph{node-based}, that is, the
-process will be done when a horizontal box of a paragraph is ended, so
-|f{}irm| and |firm| yield the same output under \LuaTeX.
+process will be done when a horizontal box or a paragraph is ended, so
+|f{}irm| and |firm| yield  same outputs under \LuaTeX.
 
-The situation for Japanese characters is basically same, but not
-entirely.  Glues (and kerns) those will be needed for Japanese
+The situation for Japanese characters is more complicated.
+Glues (and kerns) which are needed for Japanese
 typesetting will be divided into the following three categories:
-\begin{description}
-\item[Glue (or Kern) from the Metric of Japanese Fonts] 
-\item[Default Glue Between a Japanese Character and an Alphabetic Character] 
-Usually 1/4 of full-width (\emph{shibuaki}) with some stretch and shrink for justifying
-          each line.
-\item[Default Glue Between Two Consecutive Japanese Characters] 
-The main reason of this glue is to enable line-breaking almost
-          everywhere in Japanese texts. In most cases, its natural
-          width is zero, and
-some stretch/shrink for justifying each line. 
-\end{description}
-In p\TeX, these three kinds of glues are treated differently. The first
- category (\emph{JFM glue}, for short) is inserted when a (sequence of)
- Japanese character is appended to current list, same as alphabetic
- characters in \TeX82. This means that one can interrupt the insertion
- process by saying |{}|.  The second category (\emph{xkanjiskip}, for
- short) is inserted just before `hpack' or line-breaking of a paragraph;
- this timing is somewhat similar to that of \LuaTeX's kerning
- process. The third category (\emph{kanjiskip}, for short) is not
- appeared as a node anywhere; only appears implicitly in calculation of
- the width of a horizontal box or that of breaking lines. These
- specifications made p\TeX's behavior very hard to understand.
+\begin{itemize}
+\item Glue (or kern) from the metric of Japanese fonts (\emph{JFM glue},
+      for short). 
+
+\item Default glue between a Japanese character and an alphabetic
+      character (\emph{xkanjiskip}, for short), usually 1/4 of
+      full-width (\emph{shibuaki}) with some stretch and shrink for
+      justifying each line.
+\item Default glue between two consecutive Japanese characters
+      (\emph{kanjiskip}, for short). The main reason of this glue is to
+      enable breaking lines almost everywhere in Japanese texts. In most
+      cases, its natural width is zero, and some stretch/shrink for
+      justifying each line.
+\end{itemize}
+In p\TeX, these three kinds of glues are treated differently. A JFM glue
+is inserted when a (sequence of) Japanese character is appended to
+current list, same as the case of alphabetic characters in \TeX82. This
+means that one can interrupt the insertion process by saying |{}|.  A
+\emph{xkanjiskip} is inserted just before `hpack' or line-breaking of a
+paragraph; this timing is somewhat similar to that of \LuaTeX's kerning
+process. Finally, A \emph{kanjiskip} is not appeared as a node anywhere;
+only appears implicitly in calculation of the width of a horizontal box,
+that of breaking lines, and the actual output process to a DVI
+file. These specifications made p\TeX's behavior very hard to
+understand.
 
 \LuaTeX-ja inserts glues in all three categories simultaneously inside
 |hpack_filter| and |pre_linebreak_filter| callbacks.  The reasons of
@@ -328,33 +341,35 @@ p\TeX      &あ】\hbox{}【〙\hbox{}〘&い』\/a   &う)\hbox{}(   &え
 \imagfm{\jstrut 】\inhibitglue}%
 \imagfm{\jstrut\kern.5\zw}%
 \imagfm{\jstrut\kern.5\zw}%
-\imagfm{\jstrut\hbox{}\inhibitglue【}%
+\imagfm{\jstrut\inhibitglue【}%
 \imagfm{\jstrut 〙\inhibitglue}%
 \imagfm{\jstrut\kern.5\zw}%
 \imagfm{\jstrut\kern.5\zw}%
-\imagfm{\jstrut \hbox{}\inhibitglue〘}%
+\imagfm{\jstrut\inhibitglue〘}%
 \end{center}
 \caption{Detail of (1) in Table~\ref{tab-jfmglue}.}
 \label{fig-ptexjfm}
 \end{figure}
 
-Now we will take a look inside the insertion process itself, and describe three points.
+Now we will take a look inside the insertion process itself, and describe 4~points.
 
 \begin{description}
 \item[Ignored Nodes]
-As noted in the previous subsection, the insertion process in p\TeX\ is
-          interrupted by saying |{}| or anything else. This leads the
-          second row in Table~\ref{tab-jfmglue}, or
-          Figure~\ref{fig-ptexjfm}. `The process is interrupted'
-          means that p\TeX\ does not think the letter `】\inhibitglue'
-          is followed by `\inhibitglue【', hence two half-width glues
-          are inserted between between `】\inhibitglue' and
-          `\inhibitglue【', where one is from `】\inhibitglue' and
-          another is from `\inhibitglue【'.
+As noted in the previous subsection, the insertion process in p\TeX\ can be
+          interrupted by saying |{}| or anything else\footnote{This is
+          why some tricks like \texttt{ちょ\char`\{\char`\}っと} that
+          are needed when we use \texttt{min10.tfm} work.}. This leads
+          the second row in Table~\ref{tab-jfmglue}, or
+          Figure~\ref{fig-ptexjfm}. `The process is interrupted' means
+          that p\TeX\ does not think the letter `】\inhibitglue' is
+          followed by `\inhibitglue【', hence two half-width glues are
+          inserted between between `】\inhibitglue' and `\inhibitglue【',
+          where one is from `】\inhibitglue' and another is from
+          `\inhibitglue【'.
 
           On the other hand, in \LuaTeX-ja, the process is done inside
           |hpack_filter| and |pre_linebreak_filter| callbacks. Hence,
-          \emph{anything that does not make any nodes will be
+          \emph{anything that does not make any node will be
           ignored}\ in \LuaTeX-ja, as shown in (1) in
           Table~\ref{tab-jfmglue}. \LuaTeX-ja also ignores any nodes
           which does not make any contribution to current horizontal
@@ -364,17 +379,24 @@ As noted in the previous subsection, the insertion process in p\TeX\ is
 
 By the way, around a \emph{glyph\_node} $p$ there may be some nodes
           attached to $p$. These are an accent and kerns for
-          positioning it, and kerns from italic correction for $p$, and
-          it is natural that these attachments should be ignored in the
-          process. Hence \LuaTeX-ja takes this approach, as the latest
-          version of p\TeX\ (p3.2). This explains (2) in the figure.
-
-Summerizing, to 
+          positioning it, and a kern from italic
+          correction\footnote{\TeX82 (and \LuaTeX) does not distinguish
+          between explicit kern and a kern for italic correction. To
+          distinguish them, \LuaTeX-ja uses an additional attribute and
+          redefines \texttt{\char`\\/}.} for $p$. It is natural that
+          these attachments should be ignored in the process. Hence
+          \LuaTeX-ja takes this approach, as the latest version of
+          p\TeX\ (p3.2). This explains (2) in the figure.
+
+Summerizing above, one should put an empty horizontal box |\hbox{}| to
+          where he wants to interrupt the insertion process in
+          \LuaTeX-ja as (3) in the figure.
 
 \item[Fonts with the Same Metric]
 Recall that \LuaTeX-ja separated `real' fonts and metrics, as in Subsection~\ref{ssec-sepmet}. 
-Consider the following input, where all Japanese fonts
-          use same metric (in \LuaTeX-ja), and |\gt| selects \emph{gothic} family:
+Consider the following input, where all Japanese fonts use same metric
+          (in \LuaTeX-ja), and |\gt| selects \emph{gothic} family for
+          the current Japanese font family:
 \begin{quote}
 \begin{verbatim}
 明朝)\gt (ゴシック
@@ -385,22 +407,23 @@ If the above input is processed by p\TeX, since the insertion process is
 \begin{quote}
 \mc 明朝)\hbox{}\gt (ゴシック
 \end{quote}
-But this is unnatural, since two Japanese fonts in the output uses the
-same metric, \emph{i.e.}, the same typesetting rule.  Hence, we decided
-that Japanese fonts with the same metric are treated as one font in the
-insertion process of \LuaTeX-ja. Thus, the output from the above input
-in \LuaTeX-ja is:
+However this seems to be unnatural, since two Japanese fonts in the
+          output uses the same metric, \emph{i.e.}, the same
+          typesetting rule.  Hence, we decided that Japanese fonts with
+          the same metric are treated as one font in the insertion
+          process of \LuaTeX-ja. Thus, the output from the above input
+          in \LuaTeX-ja is:
 \begin{quote}
 \mc 明朝)\gt (ゴシック
 \end{quote}
-One might have the situation that this specification is not
+One might have the situation that this default behavior is not
           suitable. \LuaTeX-ja offers a way to cope with this case, but
           we leave it to the manual~\cite{man}.
 
 \item[Fonts with Different Metrics] 
-In the case where two Japanese characters with different metrics and/or
+In the case where two consecutive Japanese characters use different metrics and/or
           different size is similar. Consider the following input where
-          the \emph{mincho} fmaily and the \emph{gothic} family use
+          the \emph{mincho} family and the \emph{gothic} family use
           different metrics:
 \begin{quote}
 \begin{verbatim}
@@ -418,78 +441,101 @@ We thought that amounts of spaces between parentheses in above output
           from the left character and that from the right
           character. For example, Figure~\ref{fig-diffmet} shows the
           output from above input. The width of glue indicated `(1)' is
-          half-width , and the width of glue indicated `(2)' is about
-          0.55 times of full-width. This default behavior can be changed
-          by \textsf{diffrentmet} parameter of \LuaTeX-ja.
+          $(a/2 + a/2)/2 = 0.5a$, and the width of glue indicated `(2)'
+          is $(a/2 + 1.2a/2)/2 = 0.55a$. This default behavior can be
+          changed by \textsf{diffrentmet} parameter of \LuaTeX-ja.
 
 \begin{figure}
 \begin{center}
 \fontsize{40}{40}\selectfont
-\imagfm{\jstrut 漢}%
+\imagfm{\jstrut\smash{%
+  \vtop{\lineskiplimit=\maxdimen\lineskip2pt\halign{#\cr漢\cr
+    \small\vrule height .5ex depth .5ex\hrulefill\ \lower.5ex\hbox{$a$}\ 
+    \hrulefill\vrule height .5ex depth .5ex\cr}}}}%
 \imagfm{\jstrut )\inhibitglue}%
 \imagfm{\jstrut\hbox to .5\zw{\hss\normalsize (1)\hss}}%
-\imagfm{\jstrut\hbox{}\inhibitglue\gt (}%
+\imagfm{\jstrut\inhibitglue\gt (}%
 \imagfm{\jstrut\gt 漢}%
 \imagfm{\jstrut\gt )\inhibitglue}%
 \imagfm{\jstrut\hbox to .55\zw{\hss\normalsize (2)\hss}}%
-\imagfm{\fontsize{48}{48}\selectfont\jstrut\gt\hbox{}\inhibitglue (}%
-\imagfm{\fontsize{48}{48}\selectfont\jstrut\gt 漢}%
+\imagfm{\fontsize{48}{48}\selectfont\jstrut\gt\inhibitglue (}%
+\imagfm{\fontsize{48}{48}\selectfont\jstrut\smash{%
+  \vtop{\lineskiplimit=\maxdimen\lineskip2pt\halign{#\cr\gt 大\cr
+    \small\vrule height .5ex depth .5ex\hrulefill\ \lower.5ex\hbox{$1.2a$}\ 
+    \hrulefill\vrule height .5ex depth .5ex\cr}}}}
 \end{center}
-\caption{Fonts with Different Metrics.}
+\caption{Fonts with different metrics.}
 \label{fig-diffmet}
 \end{figure}
+
+\item[\emph{kanjiskip} and \emph{xkanjiskip}]
+In p\TeX, the value of \emph{xkanjiskip} is controlled by a skip named
+          |\xkanjiskip|. A defect of this implementation is that the
+          value of \emph{xkanjiskip} is not connected with the size of
+          the currnt Japanese font. It seems that |EXTRASPACE|,
+          |EXTRASTRETCH|, |EXTRASHRINK| parameters in a JFM are
+          reserved for specifying the default value of
+          \emph{xkanjiskip} in a unit of the design size, but p\TeX\
+          did not use these parameters. 
+
+Considering this situation of p\TeX, \LuaTeX-ja can use the value of
+          \emph{xkanjiskip} that specified in a metric. If the value of
+          \emph{xkanjiskip} on the user side (this is the
+          \textsf{xkanjiskip} parameter in |\ltjsetparameter|) is
+          |\maxdimen|, then the \LuaTeX-ja use the specification from
+          the current used metric as the actual value of
+          \emph{xkanjiskip}.
+This description also applies for \emph{kanjiskip}.
 \end{description}
 
 
-\section{Current Status of the Development}
+\section{Current Status of Development}
 At the moment, \LuaTeX-ja can be used under plain \TeX, and under
 \LaTeXe. Generally speaking, one only has to read |luatexja.sty|, by |\input|
-command or |\usepackage| (in~\LaTeXe) if you merely want to typeset
+command or |\usepackage| (in~\LaTeXe), if you merely want to typeset
 Japanese character.  We look more detail by parts.
 
 \subsection{`Engine Extension'}
 The lowest part of \LuaTeX-ja corresponds the p\TeX\ extension as
-\emph{\TeX\ engine}. We, the project menbers, think that this part is almost
-done. Other features of \LuaTeX-ja which we have not described are the
-followings:
+\emph{an engine extension of \TeX}. We, the project menbers, think that
+this part is almost done. Other features of \LuaTeX-ja which we have not
+described are the followings:
 \begin{description}
-\item[Setting the range of `Japanese characters'] This feature is
+\item[Setting the Range of `Japanese characters'] This feature is
           inspired by up\TeX. up\TeX\ has an additional primitive named
-          |\kcatcode| for setting a character is treated as alphabetic
-          character, \emph{kana}, \emph{kanji}, \emph{Hangul},
-          or~\emph{other CJK character}, and the assignment of
-          |\kcatcode| can be done by Unicode block\footnote{There
-          are some exceptions. For example, U+FF00--FFEF (Halfwidth and
-          Fullwidth Forms) are divided into three blocks in up\TeX.}.
+          |\kcatcode| for setting how a character is treated among an
+          alphabetic character, \emph{kana}, \emph{kanji},
+          \emph{Hangul}, or~\emph{an other CJK character}. and the
+          assignment of |\kcatcode| can be done by a Unicode
+          block\footnote{There are some exceptions. For example,
+          U+FF00--FFEF (Halfwidth and Fullwidth Forms) are divided into
+          three blocks in up\TeX.}.
 
 \LuaTeX-ja uses a slightly different approach. Because there are many
-          Unicode blocks in Basic Multilingual Plane which are not
-          included in most Japanese fonts.  Furthermore, the basic
-          Japanese character set JIS~X~0208 are not just union of
-          Unicode blocks. For example, the intersection of JIS~X~0208
+          Unicode blocks already in Basic Multilingual Plane which are
+          not included in most Japanese fonts, so it would be
+          inefficient to toggle by a Unicode block.  Furthermore, the
+          basic Japanese character set JIS~X~0208 are not just union of
+          Unicode blocks; for example, the intersection of JIS~X~0208
           and Latin-1 Supplement is shown in Table~\ref{tab-inter}.
           Considering these two points, to customize the range of
           Japanese characters in \LuaTeX-ja, one has to define
-          character ranges in his source.
+          character ranges in his source in advance.
 
-\item[Baseline Shifting]
+\item[Shifting Baseline]
 In order to make a match between Japanese fonts and alphabetic fonts,
-          sometimes shifting the baseline of alphabetic characters is
-          needed. p\TeX\ has a dimension |\ybaselineshift|, which
-          corresponds the amount of shifting the baseline of alphabetic
-          characters. 
-
-\LuaTeX-ja extends p\TeX's |\ybaselineshift| to Japanese
+          sometimes shifting the baseline of alphabetic characters may
+          be needed. p\TeX\ has a dimension |\ybaselineshift|, which
+          corresponds the amount of shifting down the baseline of alphabetic
+          characters. This is useful for Japanese-based documents, but
+          not for documents mainly in languages with alphabetic
+          characters.
+
+Hence, \LuaTeX-ja extends p\TeX's |\ybaselineshift| to Japanese
           characters. Namely, \LuaTeX-ja offers two parameters,
           \textsf{yjabaselineshift} and \textsf{yalbaselineshift}, for the
           amount of shifting the baseline of Japanese characters and
-          that of alphabetic characters, respectively. The example
-          output is shown in Figure~\ref{fig-bls}. The left half is the
-          output when \textsf{yjabaselineshift} is positive, hence the
-          baseline of Japanese characters is shifted down. On the other
-          hand, the right half is the output when
-          \textsf{yalbaselineshift} is positive, hence the baseline of
-          alphabetic characters is shifted.
+          that of alphabetic characters, respectively. 
 
 \begin{figure}
 \begin{center}
@@ -510,10 +556,50 @@ In order to make a match between Japanese fonts and alphabetic fonts,
 }
 \end{center}
 
-\caption{Baseline shifting.}
+\caption{First example of shifting baseline.}
 \label{fig-bls}
 \end{figure}
 
+\begin{figure}
+\begin{center}
+\fontsize{30}{30}\selectfont\fboxsep0mm
+\vrule width 0.9\textwidth height0.4pt depth0.4pt\kern-0.9\textwidth
+\hbox to 0.9\linewidth{%
+\hfil
+\imagfm{a}%
+\imagfm{b}\hskip.25\zw%
+\imagfm{\jstrut 本}%
+\imagfm{\jstrut 文}\hskip.33333\zw%
+\raise3.514582pt\imagfm{\fontsize{20}{20}\selectfont\jstrut\inhibitglue (}%
+\raise3.514582pt\imagfm{\fontsize{20}{20}\selectfont\jstrut 注}%
+\raise3.514582pt\imagfm{\fontsize{20}{20}\selectfont\jstrut 釈}\hskip.1666667\zw%
+\raise3.514582pt\imagfm{\fontsize{20}{20}\selectfont c}%
+\raise3.514582pt\imagfm{\fontsize{20}{20}\selectfont o}%
+\raise3.514582pt\imagfm{\fontsize{20}{20}\selectfont m}%
+\raise3.514582pt\imagfm{\fontsize{20}{20}\selectfont m}%
+\raise3.514582pt\imagfm{\fontsize{20}{20}\selectfont e}%
+\raise3.514582pt\imagfm{\fontsize{20}{20}\selectfont n}%
+\raise3.514582pt\imagfm{\fontsize{20}{20}\selectfont t}%
+\raise3.514582pt\imagfm{\fontsize{20}{20}\selectfont\jstrut )\inhibitglue}%
+\hskip.33333\zw%
+\imagfm{\jstrut 本}%
+\imagfm{\jstrut 文}%
+\hfil
+}
+\end{center}
+
+\caption{Second example of shifting baseline.}
+\label{fig-small}
+\end{figure}
+
+An example output is shown in Figure~\ref{fig-bls}. The left half is the
+          output when \textsf{yjabaselineshift} is positive, hence the
+          baseline of Japanese characters is shifted down. On the other
+          hand, the right half is the output when
+          \textsf{yalbaselineshift} is positive, hence the baseline of
+          alphabetic characters is shifted. Figure~\ref{fig-small}
+          shows an intresting use of these parameters.
+
 \end{description}
 Note that \LuaTeX-ja doesn't support for vertical typesetting, \emph{tategaki}, for now. 
 
@@ -535,23 +621,25 @@ Note that \LuaTeX-ja doesn't support for vertical typesetting, \emph{tategaki},
 \end{table}
 
 \subsection{Patches for plain \TeX\ and \LaTeXe}
-p\TeX\ has patches for plain \TeX, namely |ptex.tex|, that for \LaTeXe\
+p\TeX\ has a patch for plain \TeX, namely |ptex.tex|, that for \LaTeXe\
 macro (this patch and \LaTeXe\ consist \emph{p\LaTeXe}), and
 |kinsoku.tex| which includes the default setting of \emph{kinsoku
 shori}, the Japanese hyphenation.  We ported them to \LuaTeX-ja, except
-the codes related to vertical typesetting. We remark two points related to the porting:
+the codes related to vertical typesetting, since \LuaTeX-ja doesn't
+support vertical typesetting yet. We remark two points related to the
+porting:
 \begin{description}
 \item[Default Range of Japanese Characters] 
 As described in the previos subsection, \LuaTeX-ja can customize the
 range of Japanese characters.  \LuaTeX-ja predefines 8~character ranges,
 as shown in Table~\ref{tab-chrrng}.  Almost of these ranges are just the
-union of Unicode blocks, and determined from the Adobe-Japan1 character
-set, and JIS~X~0208.  And, among these 8~ranges, the ranges~2, 3, 6, 7,
+union of Unicode blocks, and determined from the Adobe-Japan1-6 character
+correction, and JIS~X~0208.  And, among these 8~ranges, the ranges~2, 3, 6, 7,
 and~8 are considered ranges of Japanese characters, and others are
 considered ranges of alphabetic characters.
 
-This default setting is suitable for Japanese-based documents, but it
-          causes that other packages with Unicode fonts do not work
+This default setting is suitable for Japanese-based documents, however it
+          causes that other packages which use Unicode fonts do not work
           correctly. For example, |\times| provided by the
           |unicode-math| package is the character U+00D7, which belongs
           to the range~8, and |\textendash| provided by the |EU2|
@@ -560,7 +648,7 @@ This default setting is suitable for Japanese-based documents, but it
           charatcer cannot be typeset with the default range setting.
 
 \begin{table}
-\caption{Predefined Ranges in \LuaTeX-ja}
+\caption{Predefined ranges in \LuaTeX-ja}
 \label{tab-chrrng}
 \begin{center}
 \begin{tabular}{@{\bf}rl}
@@ -577,8 +665,8 @@ This default setting is suitable for Japanese-based documents, but it
 \end{table}
 
 
-\item[The behavior of\/ {\tt\char92fontfamily\/} command]
-The |\fontfamily| command in p\LaTeXe\ changes the current alphabetic
+\item[Behavior of\/ {\tt\char92fontfamily\/}]
+The control sequence |\fontfamily| in p\LaTeXe\ changes the current alphabetic
           font family and/or the current Japanese font family,
           depending the argument. More concretely,
           |\fontfamily{|$\langle\hbox{\it arg\/}\rangle$|}| changes the
@@ -586,7 +674,7 @@ The |\fontfamily| command in p\LaTeXe\ changes the current alphabetic
           arg\/}\rangle$, if and only if one of the following
           conditions are satisfied:
 \begin{itemize}
-\item Alphabetic font family named $\langle\hbox{\it arg\/}\rangle$ in
+\item An alphabetic font family named $\langle\hbox{\it arg\/}\rangle$ in
       \emph{some} alphabetic encoding already defined in the document.
 \item There exists an alphabetic encoding $\langle\hbox{\it
       enc\/}\rangle$ already defined in the document such that a font
@@ -595,14 +683,14 @@ The |\fontfamily| command in p\LaTeXe\ changes the current alphabetic
 \end{itemize}
 The same criterion is used for changing Japanese font family.
 
-To work this behavior well, a list of all encodings defined in the
+To work this behavior well, a list of all encodings defined already in the
           document is needed. Since \LuaTeX-ja is loaded as a package,
-          \LuaTeX-ja doesn't so.  Hence \LuaTeX-ja adopted different
+          \LuaTeX-ja cannot have this list.  Hence \LuaTeX-ja adopted different
           approach, namely |\fontfamily{|$\langle\hbox{\it
           arg\/}\rangle$|}| changes the current alphabetic font family
           to $\langle\hbox{\it arg\/}\rangle$, if and only if:
 \begin{itemize}
-\item Alphabetic font family named $\langle\hbox{\it arg\/}\rangle$ in
+\item An alphabetic font family named $\langle\hbox{\it arg\/}\rangle$ in
       the current alphabetic encoding $\langle\hbox{\it enc\/}\rangle$.
 \item A  font definition file $\langle\hbox{\it enc\/}\rangle\langle\hbox{\it
       arg\/}\rangle$|.fd| exists.
@@ -618,9 +706,8 @@ To produce `high-quality' Japanese documents, we need not only that
 Japanese characters are correctly placed, but also class files for
 Japanese documents. In p\TeX, there are two major families of classes:
 \emph{jclasses} which is distributed with the official p\LaTeXe\ macros,
-and \emph{jsclasses}~\cite{jsclasses} by Haruhiko Okumura which is now
-widely used in Japanese \TeX\ users.  At the present, \LuaTeX-ja simply
-contains their counterparts: \emph{ltjclasses} and
+and \emph{jsclasses}.  At the present, \LuaTeX-ja
+simply contains their counterparts: \emph{ltjclasses} and
 \emph{ltjsclasses}. However, the policy on classess is not determined
 now, and we hope to have another family of classes which are useful in
 commercial printing.  In the author's opinion, \emph{ltjclasses} is
@@ -628,8 +715,19 @@ better to stay as an example of porting of class files for \pTeX\ to
 \LuaTeX-ja.
 
 \subsection{Patches for Packages}
+Apart from patches for the \LaTeXe~kernel and classes for Japanese
+documents, we need to make patches for several packages. At the present,
+we considered the following packages, and made patches or porting for
+the former two packages.
+
 \begin{description}
-\item[fontspec]
+\item[The \emph{fontspec} package] The \emph{fontspec} package is built
+          on NFSS2, hence control sequences offered by the
+          \emph{fontspec} package, such as |\setmainfont|, are only
+          effective for alphabetic fonts if \LuaTeX-ja is
+          loaded. |luatexja-fontspec.sty| offers these counterparts for
+          Japanese fonts, with additional `j' in the name of control
+          sequences, such as |\setmainjfont|.
 
 \item[The \emph{otf} package]
 This package is widely used for characters which is
@@ -638,13 +736,16 @@ and \emph{gothic} font families. Therefore \LuaTeX-ja supports features
 in the \emph{otf} package, by loading |luatexja-otf.sty|. Note that
 characters by |\UTF{xxxx}| and |\CID{xxxx}| are not appended to the
 current list as a \emph{glyph\_node}, so they are not affected by
-callbacks by |luaotfload|. We have another remark; |\CID| does not work
+callbacks by the \emph{luaotfload} package. We have another remark; |\CID| does not work
 with TrueType fonts.
 
 \item[The \emph{listings} package]
-We simply adopted the patch for p\LaTeXe\ |jlistings.sty|~\cite{jlisting} by Thor. 
-However, it seems to be that a Japanese character after a space does not
-          recieve any process of the \emph{listings} package; ...
+It is well-known that there is a patch of the \emph{listings} package for
+          p\LaTeXe,\ called |jlisting.sty|. Generally speaking, it also
+          can be used in \LuaTeX-ja. However, it seems to be that a
+          Japanese character after a space does not recieve any process
+          of the \emph{listings} package; this is inconvinient when we
+          use the \emph{showexpl} package.
 \end{description}
 
 
@@ -673,36 +774,37 @@ As in Figure~\ref{fig-jfdef}, \LuaTeX-ja uses |\jfont| for defining
 Japanese font, as p\TeX.  However, since the information of the current
 Japanese font is stored into an attribute, control sequences defined by
 |\jfont| (\emph{e.g.},~|\foo| and |\bar| in Figure~\ref{fig-jfdef}) is
-not representing a font by the means of \TeX82. In other words,
-these control sequence cannot be an argument of |\the| or |\textfont|,
-and they are just an assignments to an attribute, in fact.
-
+not representing a font by the means of \TeX82. In other words, each of
+these control sequences is just an assignment to an attribute, therefore
+they cannot be an argument of |\the|, |\fontname|, or |\textfont|.
 
 \subsection{Overview of the Processes}
 Now we describe an outline of the \LuaTeX-ja's process briefly.
 \begin{description}
 \item[Treatment of Linebreaks after Japanese Characters] This part is
-          described already at Subsection~\ref{ssec-line}. Done in the
+          described already in Subsection~\ref{ssec-line}. Done in the
           |process_input_buffer| callback.
-\item[Font Replacement] In the |hyphenate| callback, we looks into for
-          each \textit{glyph\_node}~$p$. If its character is considered
-          to be a Japanese character, the font used in $p$ is replaced
-          by the value of |\ltj@curjfnt| that is associated
-          with~$p$. Also we subtract the subtype of $p$ by 1 to
-          suppress hyphenation around it by \LuaTeX, since later
-          processes of \LuaTeX-ja take care of all things about
-          Japanese charaters.
+\item[Font Replacement] In the |hyphenate| callback, \LuaTeX-ja looks
+          into for each \textit{glyph\_node}~$p$ in the list. If the
+          character represented by $p$ is considered as a Japanese
+          character, the font used in $p$ is replaced by the value of
+          |\ltj@curjfnt|, `the current Japanese font' at~$p$. Also the
+          character class of the character is looked up at this time.
+
+Furthermore the subtype of $p$ is subtracted by 1 to suppress
+          hyphenation around it by \LuaTeX, since later processes of
+          \LuaTeX-ja take care of all things about Japanese charaters.
 \end{description}
 %
 Following processes are all executed in |pre_linebreak_filter| and
 |hpack_filter| callback. These processes are main routines of \LuaTeX-ja.
 
 \begin{description}
-\item[Examination of Stack Level] We traverse the horizontal list which
-          is the content of a horizontal box
-to determine what is the level of \LuaTeX-ja's internal stack in the end
+\item[Examination of Stack Level] The horizontal list which
+          is the content of a horizontal box is traversed, 
+to determine what is the level of \LuaTeX-ja's internal stack at the end
           of the list. This is needed because of the place of
-          |hpack_filter| in the source of \LuaTeX. We will discuss more
+          |hpack_filter| callback in the source of \LuaTeX. We will discuss more
           detail in Subsection~\ref{ssec-stack}.
 
 \item[Insertion of Glues/Kerns for Japanese Typesetting]
@@ -712,13 +814,18 @@ This part is already described at Subsection~\ref{ssec-jglue}.
 We will discuss the detail about this in Subsection~\ref{ssec-width}.
 \end{description}
 
+The callbacks by the \emph{luaotfload} package, e.g., replacement of
+glyphs according to font features, are executed just after `Examination
+of Stack Level' above. 
+
 \subsection{Stack Management}
 \label{ssec-stack}
 
-As we noted on Subsection~\ref{ssec-csname}, parameters that the values
+As we noted in Subsection~\ref{ssec-csname}, parameters that the values
 at the end of a horizontal box or that of a paragraph are effective in
-whole box or paragraph, such as \emph{kanjiskip}, cannot be implemented by internal integers or
-registers of other types in \TeX. We explain it in this section.
+whole box or paragraph, such as \emph{kanjiskip}, cannot be implemented
+by internal integers or registers of other types in \TeX. We explain it
+in this section.
 
 \begin{figure}
 \begin{lstlisting}
@@ -739,14 +846,14 @@ void package(int c)
 \label{fig-ltsrc}
 \end{figure}
 
-Figure~\ref{fig-ltsrc} is an expert of a CWEB-source
-\texttt{tex/packaging.w} of \LuaTeX\ (version?). This function is called
-just when explicit |\hbox{...}| or |\vbox{...}| is ended, and the
-function |filtered_hpack()| is where the |hpack_filter| and then the
-`hpack' process is performed. Notice that the |unsave()| function is
-called before |filtered_hpack()|. This is the problem; because of
-|unsave()|, we can only the values of registers outside the box, even in
-the |hpack_filter| callback.
+Figure~\ref{fig-ltsrc} is an extract of a CWEB-source
+\texttt{tex/packaging.w} of \LuaTeX\ (SVN revision 4358). This function
+is called just when explicit |\hbox{...}| or |\vbox{...}| is ended, and
+the function |filtered_hpack()| is where the |hpack_filter| and then the
+actual `hpack' process are performed. Notice that the |unsave()|
+function is called before |filtered_hpack()|. This is the problem;
+because of |unsave()|, we can retrive only the values of registers
+\emph{outside} the box, even in the |hpack_filter| callback.
 
 To cope with this problem, \LuaTeX-ja has its own stack system, based on
 Lua codes in \cite{stack-mail}. Furthermore, \emph{whatsit} nodes whose
@@ -758,12 +865,14 @@ callback, the list in question is traversed to determine whether the
 stack level at the end of the list and that outside the box coincides.
 
 Let $x$ be the value of |\currentgrouplevel|, and $y$ be the current
-stack level, both inside the |hpack_filter| callback. Then we have:
+stack level, both inside the |hpack_filter| callback, i.e., outside a
+horizontal box. Consider a list which represents the content of the box,
+then we have:
 \begin{itemize}
 \item A \emph{stack\_node} whose value is $x+1$ (since all materials in
-      the box are included in a group |\hbox{...}|) in the list
-      represents an assignment related to the stack system in just
-      top-level of the list, like
+      the box are included in a group |\hbox{...}|, the value is at
+      least $x+1$) in the list represents an assignment related to the
+      stack system in just top-level of the list, like
 \begin{quote}
 \begin{verbatim}
 \hbox{...(assignment)...}
@@ -773,30 +882,29 @@ In this case, the current stack level is incremented to $y+1$ after the assignme
 \item A \emph{stack\_node} whose value is more than  $x+1$ in the list represents
 an assignment inside another group contained in the box. For example,
       the following input creates
-a \emph{stack\_node} whose value is more than  $x+3=(x+1)+2$:
+a \emph{stack\_node} whose value is $x+3=(x+1)+2$:
 \begin{quote}
 \begin{verbatim}
 \hbox{...{...{...(assignment)}...}...}
 \end{verbatim}
 \end{quote}
 \end{itemize}
-Thus, we can conclude that the stack
-level at the end of the list is $y+1$, if and only if there is a
-\emph{whatsit} node whose \emph{user\_id} is 30112 and whose value is
+Thus, we can conclude that the stack level at the end of the list is
+$y+1$, if and only if there is a \emph{stack\_node} whose value is
 $x+1$. Otherwise, the stack level is just $y$.
 
 \subsection{Adjustment of the Position of Japanese Characters}
 \label{ssec-width}
 
-The imaginary glyph size specified in a metric and that of the real font
+The size of a glyph specified in a metric and that of the real font
 usually differ. For example, the letter `\inhibitglue【' is half-width
-in |jfm-ujis.lua| or |jis.tfm|, while
-this letter is full-width like `【' in most TrueType fonts used in
-Japanese typesetting, such as IPA~Mincho. Hence the adjustment of
-position of such glyphs is needed. In p\TeX, this process was done in a virtual font.
+in |jfm-ujis.lua| or |jis.tfm|, while this letter is full-width like `【'
+in most TrueType fonts used in Japanese typesetting, such as
+IPA~Mincho. Hence the adjustment of position of such glyphs is
+needed. In the context of p\TeX, this process was performed using virtual fonts.
 
 On the other hand, Lua\TeX-ja does the adjustment by encapsuling a glyph
-into a horizontal box.  There are two main reasons we adopted this
+into a horizontal box. There are two main reasons why we adopted this
 method; one is that we feared Lua codes for coexisting with callback by
 |luaotfload| package would be large if we use virtual fonts, and the
 other is to cope with the shifting of the baseline of characters at the
@@ -818,6 +926,7 @@ same time.
 
 \thicklines
 \put(0,0){\vector(0,1){9}\line(0,-1){3}\vector(1,0){12}}
+\put(12,9){\makebox(0,0)[rt]{\strut$M$\,}}
 \put(12,0){\line(0,1){9}\vector(0,-1){3}}
 \put(0,9){\line(1,0){12}}
 \put(0,-3){\line(1,0){12}}
@@ -853,11 +962,12 @@ Figure~\ref{fig-pos} shows the adjustment process. A large square $M$ is
 the imaginary body which is specified in the metric, and a vertical
 rectangle is the imaginary body of a real glyph. First, the real glyph
 is aligned with respect to the width of $M$. In the figure, the real
-glyph is aligned `middle'; this setting in used for the full-width
-middle dot `・'. We have other settings, namely, `left' and
-`right'.  Then, it is shifted according to the value of |left| and
-|down|, which are specified in the metric. The final position of the
-real glyph is shown by the gray rectangle.
+glyph is aligned `middle'; this setting is useful for the full-width
+middle dot `・'. We have other settings, namely, `left' and `right'.
+After that, it is shifted according to the value of |left| and |down|,
+which are specified in the metric. The final position of the real glyph
+is shown by the gray rectangle. If the amount of shifting baseline is
+not zero, $M$ (and hence the real glyph) is shifted by that amount.
 
 We would like to remark briefly about the vertical position of a glyph.
 A JFM (or the metric used in \LuaTeX-ja) and the real font used for it
@@ -868,11 +978,12 @@ Otobe~\cite{min10}. Here the policy on this problem is not determined
 now, however we want to offer several solutions by \LuaTeX-ja.
 
 \section{Conclusion}
-We have discussed about our \LuaTeX-ja package, which is affected by
-p\TeX to some extent. For now, it can be used for experimental use, but
-not for production yet. ...
+We have discussed about our \LuaTeX-ja package, which is much affected
+by p\TeX. For now, it can be used for experimental use, however there
+are much refinements which are needed for regular use. The author hopes
+that this paper and this project contribute the typesetting Japanese,
+and possibly other Asian languages, under \LuaTeX.
 
-\section*{Acknowledgements}
 
 
 %%% The style of the bibiliogrphy is `amsplain'.
@@ -881,71 +992,78 @@ not for production yet. ...
 \begin{thebibliography}{99}
 
 \bibitem{ptex}
-ASCII MEDIA WORKS, \textbf{アスキー日本語\TeX\ (p\TeX)}. \url{http://ascii.asciimw.jp/pb/ptex/}
+ASCII MEDIA WORKS,アスキー日本語\TeX\ (p\TeX).\url{http://ascii.asciimw.jp/pb/ptex/}
 
 \bibitem{omega}
-Jin-Hwan~Cho and Haruhiko Okumura, \textbf{Typesetting CJK Languages with Omega},
+Jin-Hwan~Cho and Haruhiko Okumura, \emph{Typesetting CJK Languages with Omega},
 \TeX, XML, and Digital Typography, Lecture Notes in Computer Science, vol.~3130,
 Springer, 2004, 139--148.
 
 \bibitem{joylua}
-Yannis Haralambous. \textbf{The Joy of LuaTeX}. \url{http://luatex.bluwiki.com/}
+Yannis Haralambous. \emph{The Joy of \LuaTeX}. \url{http://luatex.bluwiki.com/}
+
+\bibitem{jisx4051}
+Japanese Industrial Standards Committee. \emph{JIS~X~4051: Formatting
+       rules for Japanese documents}, 1993, 1995, 2004.
 
 \bibitem{eptex}
-Hironori Kitagawa\ (北川弘典), \textbf{$\varepsilon$-p\TeX についてのwiki}.
+北川弘典,$\varepsilon$-p\TeX についてのwiki.
 \url{http://sourceforge.jp/projects/eptex/wiki/FrontPage}
 
 \bibitem{luaums}
-Hironori Kitagawa, \textbf{LuaTeXで日本語}. 
+北川弘典,\LuaTeX で日本語.
 \url{http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=378}
 
 \bibitem{luatexref}
-\LuaTeX\ development team, \textbf{The \LuaTeX\ reference}. 
-\url{http://www.luatex.org/svn/trunk/manual/luatexref-t.pdf} (snapshot)
+\LuaTeX\ development team, \emph{The \LuaTeX\ reference}. 
+\url{http://www.luatex.org/svn/trunk/manual/luatexref-t.pdf} (snapshot of SVN trunk)
 
 \bibitem{man}
-The \LuaTeX-ja project team, \textbf{The \LuaTeX-ja package}. 
+The \LuaTeX-ja project team, \emph{The \LuaTeX-ja package}. 
 Not completed for now. Available at |doc/man-en.pdf| (in English) or
        |doc/man-ja.pdf| (in Japanese)
 in the Git repository.
 
 \bibitem{luajp-test}
-Atsuhito Kohda, \textbf{LuaTeXと日本語}.
+香田温人,\LuaTeX と日本語.
 \url{http://www1.pm.tokushima-u.ac.jp/~kohda/tex/luatex-old.html}
 
 \bibitem{luajalayout}
-Kazuki Maeda\ (前田一貴), \textbf{luajalayout パッケージ---LuaLaTeX によ
-       る日本語組版---}.
+前田一貴,luajalayout パッケージ---Lua\LaTeX によ
+       る日本語組版---
 \url{http://www-is.amp.i.kyoto-u.ac.jp/lab/kmaeda/lualatex/luajalayout/}
 
 \bibitem{jsclasses}
-Haruhiko Okumura\ (奥村晴彦), \textbf{pLaTeX2e 新ドキュメントクラス}.
+奥村晴彦,p\LaTeXe 新ドキュメントクラス.
 \url{http://oku.edu.mie-u.ac.jp/~okumura/jsclasses/}
 
 \bibitem{ptexjp}
-Haruhiko Okumura\ (奥村晴彦), \textbf{p\TeX\ and Japanese Typesetting},
+Haruhiko Okumura, \emph{p\TeX\ and Japanese Typesetting},
        The Asian Journal of \TeX\ \textbf{2}~(2008), 43--51.
 
 \bibitem{min10}
-Yoshiki Otobe\ (乙部厳己), \textbf{min10フォントについて}.
+乙部厳己,min10フォントについて.
 \url{http://argent.shinshu-u.ac.jp/~otobe/tex/files/min10.pdf}
 
 \bibitem{otf}
-Shuzaburo Saito\ (齋藤修三郎), \textbf{Open Type Font用VF}.
+齋藤修三郎,Open Type Font用VF.
 \url{http://psitau.kitunebi.com/otf.html}
 
 \bibitem{stack-mail}
-Jonathan Sauer, \textbf{[Dev-luatex] tex.currentgrouplevel}. 
+Jonathan Sauer, \emph{[Dev-luatex] tex.currentgrouplevel}. 
 \url{http://www.ntg.nl/pipermail/dev-luatex/2008-August/001765.html}
 
 \bibitem{uptex}
-Takuji Tanaka, \textbf{up\TeX, up\LaTeX---unicode version of p\TeX, p\LaTeX}.
+Takuji Tanaka, \emph{up\TeX, up\LaTeX---unicode version of p\TeX, p\LaTeX}.
 \url{http://homepage3.nifty.com/ttk/comp/tex/uptex_en.html}
 
 \bibitem{ptexenc}
-Nobuyuki Tsuchimura, \textbf{Development of a Japanese \TeX\ Distribution~`ptetex3'},
+Nobuyuki Tsuchimura, \emph{Development of a Japanese \TeX\ Distribution~`ptetex3'},
 Computer Software\ \textbf{24} (2007), no.~4, 40--50, (in Japanese).
 
+\bibitem{w3c}
+W3C Working Group, \emph{Requirements for Japanese Text Layout}. 
+\url{http://www.w3.org/TR/jlreq/}
 \end{thebibliography}
 
 \end{document}