消えたアンダーバースマートフォン用の表示で見る消えたアンダーバー2017-12-06そのフォントサイズほんとに9pt?―jsclassesのフォントサイズ指定についていよいよもって冬らしくなってきたこの頃ですがTUTの皆さんはいかがお過ごしでしょうか。6日目を担当する@akahana_1です。普段はコンピュータクラブでコンテキストに多分に依存した雑談をしたり、年に非負整数回発行される部誌『とよぎぃ通信』の編集をしたりしています。学部4年生の方々はそろそろ卒論の提出(あるいはもうすでに終わっている?)や卒研発表等に追われる忙しい時期ですね。中にはTeXを使って原稿を制作する人もいるでしょう。いう原稿にはなぜだかフォントサイズの指定がなされていたります。js~~で指定できるフォントサイズは基本的に欧文のもの、和文はそれに合わせてやや小さくなるただしいくつかの和文フォントサイズは指定可能TeXのフォントサイズは他のソフトウェアのものよりやや小さくなるので、他のソフトウェアと完全に同じ出力を実現することはそのままでは難しい。前フリLaTeXで日本語文章を作成する時に皆さんが使われるクラスファイルといえばjsの接頭辞で始まるクラスファイル群(以下jsclassesと呼ぶ)だと思います。jsclassesではドキュメントクラスの読み込み時にクラスオプションを指定することで本文のフォントサイズを変更することが出来ます。9pt]{jsarticle}と指定しますね。ところでこの時指定される9ptって日本語の9ptですか?というわけでちょっと確かめてみましょう。CCでフォントサイズに10ptを指定した時の出力結果です。おや?よく見るとpLaTeXを用いた出力結果のほうがややフォントサイズが小さくなっていますね。なんでこうなってるんでしょうか?答えは単純です。いうことなのか具体的に見ていきましょう。jsclassesにおけるフォントサイズ決定についてさて、jsclassesにおけるフォントサイズ指定では欧文フォントのサイズが指定されるということを明らかにしましたが、だとしても疑問が残ります。和文フォントサイズを思い通りにする方法はないの?あたりが定番じゃないでしょうか。順を追って解説していきます。はじめに、jsclassesでは指定された欧文フォントのサイズに対して和文フォントのサイズをやや小さくすると言う処理を行っています。そのようなことになっているのでしょうか?皆さんご存知のことと思いますが、pLaTeXエンジンではフォントファイルをそのまま取り扱うことはしません。metric)ファイルを参照して文字の幅を取得して、文字を配置していきます。配置された文字が実際のフォントに置き換わるのはdviファイルをdviドライバによって変換したタイミングです。このことから、TeXで日本語を取り扱うためにはまず日本語文字に対応するtfmファイルが必要なことがわかります。そのようなtfmファイルとして作成されたものの一つがmin10.tfmです。これはpTeXのさらに前身である「アスキー日本語TeX」向けに作られたtfmファイルです。このtfmファイルに定義される10pt指定で出力されるフォントのサイズが9.62216ptとなっています。3.3818mmが実際に出力されるサイズとなっていました。現在ではmin10.tfmファイルによるメトリックは用いられていませんが、jsclassesで用いられているjisフォントメトリックでも同様に10ptでは9.62216ptで出力されるようになっています。話がここで終われば単純ですが、まだ続きます。和文組版では一般的にptの代わりに級(Q)という単位を使います。1Q=0.25mmとして定義されています。jisフォントメトリックでは10ptの欧文に対して9.62216ptの和文となっていましたが、jsclassesではさらにこれを13Q相当に縮小して用いています。0.961倍すればよいことになります。よって、jsclassesでは標準設定となる10pt指定の和文フォントサイズは13Q、おおよそ9.24ptとなります。これはTeXにおけるptの定義を用いているので、他のソフトウェアで用いられる定義の1/72inchを用いてptに換算すれば9.21ptということになります。0.9247倍されたフォントサイズになる」ということになります。解説の中で明らかにしましたが、「TeXのptは他のソフトウェアで扱うptよりもやや小さい」ということもわかります。いうわけで、フォント指定がなされているタイプの原稿を執筆する時に厳密に他のソフトウェアでの出力にTeXを追従させようとする試みはかなり難しいといえます。8.4425ptとなります。クラスオプションで9ptを指定したつもりが本文の和文は8ptのほうが近い値で組まれることになってしまいますね。おや?今9ptの換算をしたつもりなのに、なぜか10ptを元にして計算を行い謎の係数を乗じてますね。この謎については後で答えることにして、次の疑問を解決します。jsclassesでクラスオプションに指定したフォントサイズは欧文のフォントサイズを指すことがわかり、それに比べて和文のフォントサイズはやや小さくなるということがわかりました。和文のフォントサイズを指定してしまう方法はないのでしょうか。これについてもjsclassesのクラスオプションに用意されています。具体的には次のフォントサイズで和文を出力するように設定することが可能です。pt指定のもの10ptj10.5ptj11ptj12ptj級数指定のもの12Q14Qこれらのフォントサイズについては和文のフォントサイズを指定することになります。この時、和文のフォントサイズに合わせて先ほどとは反対に欧文のフォントサイズがやや大きくなります。いうわけで2.の解答は「一部のフォントサイズであれば和文のフォントサイズを指定することができる」となります。一つだけ疑問が残っています。先程、和文フォントサイズが欧文フォントサイズに対してやや小さくなると言う説明をして、9ptでも換算してみた時に登場した謎の係数0.913は一体何なのでしょうか。tfmファイルには文字の幅が記録されていると言いましたが、そのままだと複数のフォントサイズ向けに複数のtfmファイルを用意する必要があるように見えます。ところがjisフォントメトリックを用いる時に利用するtfmファイルは二つだけ(jis.tfmおよびjisg.tfm)です。やって様々なフォントサイズを実現しているのでしょうか。いうわけで3つ目の疑問はこれです。jsclassesにおいて複数のフォントサイズの切り替えをどうやって実現しているのか先に結論だけを言うと「組版時に用紙サイズを任意に拡大(縮小)してから10ptで組版を行い、それを元の用紙サイズになるように縮小(拡大)して指定のフォントサイズを実現します」どういうことなのか、詳しく説明します。jis.tfmおよびjisg.tfmに記載されているフォントメトリックは10pt指定時のものです。このままでは他のフォントサイズを取り扱うことが出来ません。現実にはそのような複数のフォントサイズを取り扱う需要があるわけです。この解決方法はふたつ考えられます。フォントサイズごとに異なるフォントメトリックを用意するフォントメトリックを固定して何らかの方法でフォントサイズを実現する前者の方法はjisメトリックの前身であるmin10を始めとするフォントメトリックで用いられていた方法です。jisメトリックを利用するjsclassesでは後者の何とかする方法を採用します。これを実現するのがTeXプリミティブとして用意されている\mag命令です。この命令は引数に取る数値の1000分率の割合で組版を行う版面を拡大します。1414と書かれていれば、版面が1.414倍拡大された状態になります。jsclassesではこれを利用して10pt設定のフォントメトリックを用いて所望のフォントサイズを得ています。このような組版を行っているのは世界広しといえどもjsclassesくらいのものなようです。いうわけで先程の換算で出現した0.913と言う謎の係数はこの\magにおける拡大率になります。この\magにおける拡大縮小はすべてのフォントサイズ指定に関わってきます。次の画像を見てください。どちらもソースファイルのプリアンブルを除くと同じ\begin{document}\section{これがLargeサイズ}Windowsでコンピューターの世界が広がります\end{document}です。見比べると下の画像のほうが上の画像よりも全体的にフォントサイズが大きくなっていることがわかりますね。10pt]{jsarticle}となっているためです。\magによる版面拡大縮小の影響は本文フォント以外のフォントも影響を受けます。TeXとフォントサイズの変更で検索すると本文フォントに対して\Largeなどが何ptであるか記載されている例がありますが、あくまでも欧文10ptの時に他のフォントサイズ指定が欧文でどのptに相当するかを書いているだけであって、jsclassesのクラスオプションでフォントサイズを変更した場合は連動して変わりうるということです。まとめ卒論や修論、あるいは発表予稿などを書く時に役に立つかもしれないTeXの豆知識について書いてみました。\magの解説についてはかなり怪しい部分があると思うので、詳細な動作を知っている方がいらっしゃいましたら教えていただけると幸いです。それでは皆様よきTeXライフを。僕も編集に関わっている豊橋技術科学大学コンピュータクラブ部誌『とよぎぃ通信』が冬のコミックマーケット93で頒布される予定です。C93初日東ク-34aで皆様をお待ちしています。明日は@_Nnwww氏の音楽についての記事です。付属マニュアル*1:10ptは欧文における標準のフォントサイズです*2:ちなみにPostScriptの1ポイントは1/72inchです。このことからもTeXのptのほうがそれ以外のソフトでの出力よりやや小さくなることがわかります。Adven...2018-12-16卒研を倒すための装備の整え方タイトルはoverclaimなので話半分に読みましょう。逐次的に読めるシリアライズファイルを作る/読むTwitterが死んだあとにWindowsラップトップでイヤホン接続/非接続で音量を切り替える月別アーカイブはてなブログをはじめよう!akahana_1さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。