\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}