Windows に入っている游フォントおよび platex + dvipdfmx を用いてダブルクォーテーションマークを組むと,全角幅の中に配置されないという事象に出くわしました.JFM の何かがおかしいのでしょうか?
添付ファイルの1ページ目が Windows 10 + TeX Live 2016 での結果,2ページ目が Mac OS + TeX Live 2016 での結果です.「いわゆる」の周りのダブルクォーテーションマークが,1ページ目のほうは詰まってしまっています.
Windows のほうは,8.1 + TL15 でも 10 + TL16 でも同様の結果です.
Windows のほうは
# kanji-config-updmap --sys yu-win10
$ ptex2pdf -l -ot "-kanji=utf8" double-quotation-yuwin-w10TL16.tex
として作りました.
Mac のほうは
$ platex test.tex
$ dvipdfmx -f ptex-yu-win.map test.dvi
として作りました.
% ConTeXt mkiv のような Unicode 多言語が前提の入力の場合,ダブルクォーテーションマークを日本語組版要件で組ませるためには,その範囲が日本語であることを明示しないといけない,というのは体験済みでした(未解決).pTeX 系で遭遇するとは驚きです.
Windows の游のほうだけおかしいということですが、同じく TrueType である IPAex だと
正常ですので、TFM (JFM) のほうの問題ではない、と思います。
仮説として
「物理フォント側のダブルクオーテーションのボックスが正方形でない」
というのであれば、dvipdfmx でおかしくなることは説明がつきます。
(詰まった分だけ右端がそろわなくなる → forum:1898)
とっかかりになるでしょうか。
正常ですので、TFM (JFM) のほうの問題ではない、と思います。
仮説として
「物理フォント側のダブルクオーテーションのボックスが正方形でない」
というのであれば、dvipdfmx でおかしくなることは説明がつきます。
(詰まった分だけ右端がそろわなくなる → forum:1898)
とっかかりになるでしょうか。
> 「物理フォント側のダブルクオーテーションのボックスが正方形でない
手元のエディタで游明朝を選んでみたら半角幅?で表示されたので,なんかそうみたいですね.ヒラギノも同じく半角幅ですが,こちらはdvipdfmxは正しく扱ってくれます.OTFだからかな.
これ,おもしろいですね.こんな感じ↓に“を一行にたくさん配置すると,後続文字がどんどん左にずれていく.しかも途中に欧文文字があるとその前に空きができる.
\documentclass{jsarticle}
\begin{document}
% 右端があわない
あ“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い
% Aの前に大きな空きができる
あ“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“Aい“い“い“い“い
\end{document}
dviの段階で(JFMの情報から)各文字の位置は決まるのだと思っていました.和文文字に関しては左にどんどん詰めていくのはdvipdfmxの仕事ということなんでしょうか?
-----
ところで別件ですが,「問題が再現できる完全なTeXファイル」を提示すべきではなかったのでしょうか.特にJFMがどうこう言うならばどのJFMを使ったのかくらい提示すべきかと.
手元のエディタで游明朝を選んでみたら半角幅?で表示されたので,なんかそうみたいですね.ヒラギノも同じく半角幅ですが,こちらはdvipdfmxは正しく扱ってくれます.OTFだからかな.
これ,おもしろいですね.こんな感じ↓に“を一行にたくさん配置すると,後続文字がどんどん左にずれていく.しかも途中に欧文文字があるとその前に空きができる.
\documentclass{jsarticle}
\begin{document}
% 右端があわない
あ“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い
% Aの前に大きな空きができる
あ“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“Aい“い“い“い“い
\end{document}
dviの段階で(JFMの情報から)各文字の位置は決まるのだと思っていました.和文文字に関しては左にどんどん詰めていくのはdvipdfmxの仕事ということなんでしょうか?
-----
ところで別件ですが,「問題が再現できる完全なTeXファイル」を提示すべきではなかったのでしょうか.特にJFMがどうこう言うならばどのJFMを使ったのかくらい提示すべきかと.
> ところが同じdvipdfmxでもuptexなら大丈夫なのがよくわからんです。
platex と uplatex で比べてみました。
\documentclass{jsarticle}
%\documentclass[uplatex]{jsarticle}
\begin{document}
あ“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い
あ“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“Aい“い“い“い“い
\end{document}
どちらも結果は期待はずれであることに変わりありませんが
・platex だとどんどん詰まっていく
・uplatex だと詰まらないがダブルクオートが正方形の左半分に寄る
となります。
ふたつまとめて zip で添付します。この違いの理由は理解できていません。
platex と uplatex で比べてみました。
\documentclass{jsarticle}
%\documentclass[uplatex]{jsarticle}
\begin{document}
あ“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い
あ“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“い“Aい“い“い“い“い
\end{document}
どちらも結果は期待はずれであることに変わりありませんが
・platex だとどんどん詰まっていく
・uplatex だと詰まらないがダブルクオートが正方形の左半分に寄る
となります。
ふたつまとめて zip で添付します。この違いの理由は理解できていません。
「dvipdfmx が左からどんどん詰めていく」という仕様は,pTeX, upTeX ともに,次のようなケースでよく見かけます。
hirapropパッケージを用いて,欧文フォントとしてヒラギノ従属欧文を用いるときに,TFMの想定と異なるウエイトのヒラギノフォントを dvipdfmx の map に指定すると,従属欧文はどんどん左に詰められてゆき,和文に復帰するところで大きくズレが出てきます。
また,欧文文字のみで行を組むと,右に空白ができ,行末もガタガタになります。
upLaTeX + dvipdfmx で試したサンプルソースは以下の通りです。添付ファイルは出力結果のPDFです。
%%%% upLaTeX サンプルソース
\documentclass[uplatex]{jsarticle}
\usepackage[uplatex,deluxe]{otf}
\usepackage{hiraprop}
\usepackage{lipsum}
\def\test{あいうえおThe quick brown fox jumps over the lazy dog.です。\par}
%%% ヒラギノ角ゴW6の従属欧文用TFMに,あえてヒラギノ角ゴW3を割り当てる
\AtBeginDvi{\special{pdf:mapline hirakaku-w6-h Identity-H :0:HiraginoSans-W3.ttc}} %%% El Capitan 付属の ヒラギノ角ゴシック W3.ttc へのシンボリックリンク
\begin{document}
\test %%% 和文:ヒラギノ明朝W3,欧文:Computer Modern
{\hmrfamily\test}%%% 和文:ヒラギノ明朝W3,欧文:ヒラギノ明朝W3の従属欧文
{\gtfamily\hsffamily\test}%%% 和文:ヒラギノ角ゴW3,欧文:ヒラギノ角ゴW3の従属欧文
{\gtfamily\hsffamily\bfseries\test}%%% 和文:ヒラギノ角ゴW6,欧文:ヒラギノ角ゴW6用のTFMで組んでdvipdfmxでヒラギノ角ゴW3の従属欧文を埋め込む
{\gtfamily\hsffamily\lipsum[1]}%%% ヒラギノ角ゴW3の従属欧文のみで段落を組む
{\gtfamily\hsffamily\bfseries\lipsum[1]}%%% ヒラギノ角ゴW6用のTFMを用いて段落を組み,dvipdfmxでヒラギノ角ゴW3の従属欧文を埋め込む
\end{document}
hirapropパッケージを用いて,欧文フォントとしてヒラギノ従属欧文を用いるときに,TFMの想定と異なるウエイトのヒラギノフォントを dvipdfmx の map に指定すると,従属欧文はどんどん左に詰められてゆき,和文に復帰するところで大きくズレが出てきます。
また,欧文文字のみで行を組むと,右に空白ができ,行末もガタガタになります。
upLaTeX + dvipdfmx で試したサンプルソースは以下の通りです。添付ファイルは出力結果のPDFです。
%%%% upLaTeX サンプルソース
\documentclass[uplatex]{jsarticle}
\usepackage[uplatex,deluxe]{otf}
\usepackage{hiraprop}
\usepackage{lipsum}
\def\test{あいうえおThe quick brown fox jumps over the lazy dog.です。\par}
%%% ヒラギノ角ゴW6の従属欧文用TFMに,あえてヒラギノ角ゴW3を割り当てる
\AtBeginDvi{\special{pdf:mapline hirakaku-w6-h Identity-H :0:HiraginoSans-W3.ttc}} %%% El Capitan 付属の ヒラギノ角ゴシック W3.ttc へのシンボリックリンク
\begin{document}
\test %%% 和文:ヒラギノ明朝W3,欧文:Computer Modern
{\hmrfamily\test}%%% 和文:ヒラギノ明朝W3,欧文:ヒラギノ明朝W3の従属欧文
{\gtfamily\hsffamily\test}%%% 和文:ヒラギノ角ゴW3,欧文:ヒラギノ角ゴW3の従属欧文
{\gtfamily\hsffamily\bfseries\test}%%% 和文:ヒラギノ角ゴW6,欧文:ヒラギノ角ゴW6用のTFMで組んでdvipdfmxでヒラギノ角ゴW3の従属欧文を埋め込む
{\gtfamily\hsffamily\lipsum[1]}%%% ヒラギノ角ゴW3の従属欧文のみで段落を組む
{\gtfamily\hsffamily\bfseries\lipsum[1]}%%% ヒラギノ角ゴW6用のTFMを用いて段落を組み,dvipdfmxでヒラギノ角ゴW3の従属欧文を埋め込む
\end{document}
よりシンプルに,「等幅用JFMにプロポーショナルフォントを割り当てた場合」のサンプルを作ってみました。dvipdfmx が左詰めに和文文字を埋め込む結果,ひどい結果になりますね。
upLaTeX + dvipdfmx + 怨霊フォントの例です。
%%% upLaTeX サンプル
\documentclass[uplatex]{jsarticle}
\AtBeginDvi{\special{pdf:mapline upgbm-h UniJIS-UTF16-H onryou.ttf}} %%% ゴシックを怨霊フォントに割り当て
\begin{document}
明朝体明朝体明朝体明朝体\textgt{ほげほげ,ちょっとチェックしちゃった!}明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体\textgt{ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!}明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体
\end{document}
upLaTeX + dvipdfmx + 怨霊フォントの例です。
%%% upLaTeX サンプル
\documentclass[uplatex]{jsarticle}
\AtBeginDvi{\special{pdf:mapline upgbm-h UniJIS-UTF16-H onryou.ttf}} %%% ゴシックを怨霊フォントに割り当て
\begin{document}
明朝体明朝体明朝体明朝体\textgt{ほげほげ,ちょっとチェックしちゃった!}明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体\textgt{ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!ほげほげ,ちょっとチェックしちゃった!}明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体明朝体
\end{document}
あ,ソースファイルを貼るのを忘れてました.私が提示した例は
\documentclass[10pt,a4paper]{jsarticle}
\setlength{\parindent}{0pt}
\begin{document}
ああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああ
あああああ“いわゆる”あああああああああああああああああああああ
ああああああああああああああああああああああああああああああああ
\end{document}
のソースで作りました.(つまり,jis でした.)
\documentclass[10pt,a4paper]{jsarticle}
\setlength{\parindent}{0pt}
\begin{document}
ああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああ
あああああ“いわゆる”あああああああああああああああああああああ
ああああああああああああああああああああああああああああああああ
\end{document}
のソースで作りました.(つまり,jis でした.)