summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/ptex/base/jfm.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/ptex/base/jfm.tex')
-rw-r--r--Master/texmf-dist/doc/ptex/base/jfm.tex168
1 files changed, 168 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/ptex/base/jfm.tex b/Master/texmf-dist/doc/ptex/base/jfm.tex
new file mode 100644
index 00000000000..9e97f594e38
--- /dev/null
+++ b/Master/texmf-dist/doc/ptex/base/jfm.tex
@@ -0,0 +1,168 @@
+\documentclass[twoside]{jarticle}
+\addtolength{\textwidth}{0.9in}
+\setlength{\oddsidemargin}{.4in}
+\setlength{\evensidemargin}{.4in}
+\pagestyle{headings}
+\begin{document}
+\section{JFM file format}
+%JFMファイルフォーマット
+JFMファイルのフォーマットは、
+基本的にはTFMファイルのフォーマットに準拠しており、
+TFMを拡張した形になっている。
+ここでは、主にその拡張部分について説明を行い、
+その他の部分に関しては、
+\TeX\ the program等のTFMの説明を参照してもらいたい。
+\subsection{JFMファイルの構成}
+JFMファイル全体の構成は、
+Table\ref{構成}(\pageref{構成}ページ)に示すとおりである。 \\
+ここでTFMと異なるのは次の点である。
+\begin{enumerate}
+\item {\it char\_type}のテーブルが付け加えられたこと。
+\item {\it ligature}の換わりに{\it glue}のテーブルが設けられたこと。
+\item 2に関連して、{\it lig\_kern}から{\it glue\_kern}テーブルへ変更されたこと。
+\item これらに伴い、先頭のファイル内の各部分を規定する
+ パラメータ表が変更されている。
+ また、オリジナルのTFMとの区別のためにidを付加している。
+\end{enumerate}
+
+\subsection{char\_type}
+今回の\TeX の日本語化においては、同一の文字幅、
+高さ前後に挿入されるグルー等、その文字が持つ属性全てが
+同じものを、1つの{\it `char\_type'}として英字フォントの1キャラクタと
+同様にして扱うようにしている。
+そこで、漢字の2バイトコードとこの{\it char\_type}との対応付けを
+このテーブルを使って行う。
+
+このテーブルの各エントリーは1ワードで構成され、
+上位半ワードに漢字コード、下位半ワードに{\it char\_type}を持ち、
+テーブル内にはコードの値の順番に収められていなければならない。
+またこのテーブルの先頭には、デフォルトのインデックスとして
+漢字コード及び{\it char\_type}の項が0のものが、
+必ず1つ存在しなければならず、このテーブルに登録されていない文字は、
+$char\_type = 0$として扱う。
+つまり、このデフォルト以外の文字幅、カーン等の属性を持つキャラクタ
+のコードとタイプが2番目以降のエントリーとして存在しなければならない。
+
+\subsection{char\_info}
+{\it char\_type}をインデックスとしてこのテーブルを
+参照することにより、各{\it char\_type}の属性を検索する。
+各テーブルへのインデックス等の情報を次の順番でパッキング
+して1ワードに収めてある。
+\begin{description}
+\item{width\_index(8bits)} width\_table へのインデックス
+\item{height\_index(4bits)} height\_table へのインデックス
+\item{depth\_index(4bits)} depth\_table へのインデックス
+\item{italic\_index(6bits)} italic\_table へのインデックス
+\item{tag(2bits)}
+ \begin{description}
+ \item{tag=0} {\it remainder}の項は無効であり使用しないことを示す。
+ \item{tag=1} {\it glue\_kern}プログラムが{\it glue\_kern[remender]}
+ からに収めれれていることを示す。
+ \item{tag=2、3} 使用しない。
+ \end{description}
+\item{remainder(8bits)}
+\end{description}
+%
+\subsection{glue\_kern}
+特定のキャラクタタイプの組み合せ時に挿入すべきglue又はkernを
+簡単なプログラム言語によって指定する。
+各命令は、以下の4バイトで構成される。
+\begin{description}
+\item{第1バイト} 128以上の時、このワードでプログラム終了。
+\item{第2バイト}
+ \begin{itemize}
+ \item 次の文字のキャラクタタイプが、
+ このバイトで示すキャラクタタイプと同じ場合、
+ 第3バイトの処理を実行し、プログラム終了。
+ \item そうでなければ次のステップへ。
+ \end{itemize}
+\item{第3バイト}
+ この値によってグルーを扱うかカーンを扱うかを規定する。
+ \begin{itemize}
+ \item 127以下の場合{\it glue[remainder$\times$3]}のグルーを挿入。
+ \item 128以上の場合{\it kern[remainder]}のカーンを挿入。
+ \end{itemize}
+\item{第4バイト} remainder
+\end{description}
+\subsection{glueテーブル}
+3ワードで1つのグルーを構成する。
+各値は、$design size\times2^{-20}$を単位として表す。
+\begin{description}
+\item{第1ワード} width
+\item{第2ワード} stretch
+\item{第3ワード} shrink
+\end{description}
+\subsection{paramテーブル}
+\begin{description}
+\item{param[1]} italic slant。
+\item{param[2][3][4]} 漢字フォント間に挿入するグルーのデフォルト値。
+\item{param[5][6][7]} 漢字--英字フォント間に挿入するグルーのデフォルト値。
+\end{description}
+\newpage
+\begin{table}[h]
+\begin{minipage}[b]{2in}
+\begin{tabular}{|c|c|} \hline
+\hbox to.8in{\hfil$id$\hfil} & \hbox to.8in{\hfil$nt$\hfil} \\ \hline
+$lf$ & $lh$ \\ \hline
+$bc$ & $ec$ \\ \hline
+$nw$ & $nh$ \\ \hline
+$nd$ & $ni$ \\ \hline
+$nl$ & $nk$ \\ \hline
+$ng$ & $np$ \\ \hline
+\multicolumn{2}{|c|}{} \\
+\multicolumn{2}{|c|}{header} \\
+\multicolumn{2}{|c|}{}\\ \hline
+\multicolumn{2}{|c|}{} \\
+\multicolumn{2}{|c|}{char\_type} \\
+\multicolumn{2}{|c|}{}\\ \hline
+\multicolumn{2}{|c|}{}\\
+\multicolumn{2}{|c|}{char\_info} \\
+\multicolumn{2}{|c|}{}\\ \hline
+\multicolumn{2}{|c|}{}\\
+\multicolumn{2}{|c|}{width} \\
+\multicolumn{2}{|c|}{}\\ \hline
+\multicolumn{2}{|c|}{}\\
+\multicolumn{2}{|c|}{height} \\
+\multicolumn{2}{|c|}{}\\ \hline
+\multicolumn{2}{|c|}{}\\
+\multicolumn{2}{|c|}{depth} \\
+\multicolumn{2}{|c|}{}\\ \hline
+\multicolumn{2}{|c|}{}\\
+\multicolumn{2}{|c|}{italic} \\
+\multicolumn{2}{|c|}{}\\ \hline
+\multicolumn{2}{|c|}{}\\
+\multicolumn{2}{|c|}{glue\_kern} \\
+\multicolumn{2}{|c|}{}\\ \hline
+\multicolumn{2}{|c|}{}\\
+\multicolumn{2}{|c|}{kern} \\
+\multicolumn{2}{|c|}{}\\ \hline
+\multicolumn{2}{|c|}{}\\
+\multicolumn{2}{|c|}{glue} \\
+\multicolumn{2}{|c|}{}\\ \hline
+\multicolumn{2}{|c|}{}\\
+\multicolumn{2}{|c|}{patam} \\
+\multicolumn{2}{|c|}{}\\ \hline
+\end{tabular}
+\end{minipage}
+\begin{minipage}[b]{3.3in}
+\noindent
+\begin{tabular}{l}
+$id=$ JFM\_ID number. ($=11$) \\
+$nt=$ number of words in the character type table. \\
+$lf=$ length of the entire file, in words. \\
+$lh=$ length of the header data, in words. \\
+$bc=$ smallest character type in the font. \\
+$ec=$ largest character type in the font. \\
+$nw=$ number of words in the width table. \\
+$nh=$ number of words in the height table. \\
+$nd=$ number of words in the depth table. \\
+$ni=$ number of words in the italic correction table. \\
+$nl=$ number of words in the glue/kern table. \\
+$nk=$ number of words in the kern table. \\
+$ng=$ number of words in the glue table. \\
+$np=$ number of font parameter words. \\
+\end{tabular}
+\end{minipage}
+\caption{JFMファイルの構成\label{構成}}
+\end{table}
+\end{document}