MSゴシック半角数字で不可解な現象

MSゴシック半角数字で不可解な現象

- みなも の投稿
返信数: 4
ちょっと不可解な現象に出くわしまして,
原因がわからないまま力尽くで解決したのですが,
「これって周知の事実ですか」
「もっと美しい解決法はありますか」
をお尋ねしたく,投稿しました。
(Q&A 内検索は掛けたのですが,そのものずばりのものは
見つけられませんでした。)

・発端
複数の人間と冊子を作るが,自分以外は Word ユーザー。
「章番号の数字を『MSゴシック半角』にしてくれ」と強要される。
しかも期限ギリギリになって。

・解決法(汚 --- その1)
otf パッケージで \UTF{0031} などとすると,半角数字が和文文字などと
同じ扱いになることに気付き,これを \textgt でゴシックにすることにする。
tfm とか半角数字に対応してないような気がするけど,(時間がなかったので)
そこは力業で何とかする方針で(<== これがアカン気がする)。

・不可解な現象
半角ゴシック数字のあとに別の文字が来ると,数字と次の文字の間に
妙に空白があくことに気付く。
\fboxsep=0pt としたあと \fbox{} で囲むと,フォントサイズとしては
全角幅を確保されている様子。(グリフは確保サイズの左寄せ。)
半角ゴシック数字が連続するときは,数字間の空白はなくなるが(リガチャ?)
数字列が終われば一気に大きな空白が空く(多分文字数×0.5zw)。

・解決法(汚 --- その2)
とりあえず幅 0.5zw の \hbox に押し込めて,
数字が連続するときのために
幅 1 pt で背景色と同じ色の線を引いて \hskip で 1pt 戻る
or 背景色の \colorbox に押し込めることで解決。
(幅 0 の線とか \phantom とか \hbox で囲う等ではだめでした。
リガチャの類ならこれでリセットされると思うのですが。。。)

以下がその実験ソースです。

\documentclass{jarticle}
\usepackage[dvipdfmx]{color}
\usepackage{otf}

\begin{document}
\fboxsep=0pt %実験用に
% 素で使ってみる
\textgt{\UTF{0030}あ\UTF{0031}\UTF{0032}\UTF{0033}あいう}

% \fbox{} で囲ってみる
\textgt{\fbox{\UTF{0030}}あ\fbox{\UTF{0031}}%
  \fbox{\UTF{0032}}\fbox{\UTF{0033}}あいう}

% 半角幅の \hbox{} に押し込めてみる
\def\HtoH#1{\hbox to 0.5zw{\UTF{003#1}\hss}}
\textgt{\HtoH{0}あ\HtoH{1}\HtoH{2}\HtoH{3}あいう}

% さらに細工
\def\HtoH#1{\hbox to 0.5zw{\UTF{003#1}\hss}%
  \textcolor{white}{\vrule width1pt}\hskip-1pt}
\textgt{\HtoH{0}あ\HtoH{1}\HtoH{2}\HtoH{3}あいう}

% 別の細工
\def\HtoH#1{{\fboxsep=0pt
  \colorbox{white}{\hbox to 0.5zw{\UTF{003#1}\hss}}}}
\textgt{\HtoH{0}あ\HtoH{1}\HtoH{2}\HtoH{3}あいう}

\end{document}

マップファイル(必要最小限)はこんな感じ(これもアカン気がするけど)

otf-ujgr-h      UniJIS-UTF16-H        :0:msgothic.ttc
hgothr-h        H                    :0:msgothic.ttc

実験環境は Windows7 で今月に入ってから更新した w32tex を使用。

よろしくお願いします。
みなも への返信

Re: MSゴシック半角数字で不可解な現象

- aminophen の投稿
全然試していませんが…

> 半角ゴシック数字のあとに別の文字が来ると,数字と次の文字の間に
> 妙に空白があくことに気付く。
おそらく tfm が半角文字向けになっていないからだと思います。
ちなみに現象としては [forum:1768] と同じです。

dviout の Windows 用アーカイブの中に、MS フォントなど Windows 付属フォント向けの
tfm 群が付属していた気がします。pTeX + dvipdfmx でこれが流用できたりしないでしょうか。
こういうフォントを手っ取り早く使うなら、私だったら XeTeX か LuaTeX を使いますかね…
aminophen への返信

Re: MSゴシック半角数字で不可解な現象

- みなも の投稿
回答ありがとうございます。

>おそらく tfm が半角文字向けになっていないからだと思います。

やっぱりそうなんですね。

ただ,そのこと自体は想定のうちだったんですが,
半角数字が続くと空白が空かず数字列が終わってから一気に空白がくる仕様が謎でした。

> こういうフォントを手っ取り早く使うなら、私だったら XeTeX か LuaTeX を使いますかね…

仰る通りです。
予めこうなると予想できていたらいろいろ手を打てたのですが,
〆切間際に軽い気持ちで「フォント変えて」はないだろう
という気はします。
(見開きに気を遣って,ぎちぎちに詰め込んだページもあるので,
〆切直前にエンジンを切り替える勇気はなかったです。)
みなも への返信

Re: MSゴシック半角数字で不可解な現象

- Z. R. の投稿

「OTFパッケージのその設定ができる状態」であれば次のものが使えると思います。

% pLaTeX+dvipdfmx
\documentclass{jarticle}
\usepackage{otf}
\AtBeginDvi{%
\special{pdf:mapline otf-cjgr-h  Identity-H       :0:msgothic.ttc/AJ16}% \CIDも設定
\special{pdf:mapline otf-ujgr-h  UniJIS-UTF16-H   :0:msgothic.ttc}%
\special{pdf:mapline hgothr-h    H                :0:msgothic.ttc}%
}
\begin{document}
\textgt{\ajTsumesuji2{0}あ\ajTsumesuji2{123}あいう}
\end{document}

\ajTsumesuji2 のグリフは「仕様上半角」、だから TFM での字幅も半角です。これは CID アクセスのフォントなので、MS フォントでは Unicode アクセスにフォールバックされるわけですが、その際に半角の英数字は“いわゆる半角”の英数字にマップされます。TFM でも実際のフォントでも半角なので問題なく出力されるわけです。

CID のフォントの半角英数字は実際に半角なので、例えば英字が必要になった場合も次のようにすれば対処できます。

\textgt{\CID{247}あ\CID{247}\CID{319}\CID{269}あいう}
Z. R. への返信

Re: MSゴシック半角数字で不可解な現象

- みなも の投稿
回答ありがとうございます。

> \textgt{\ajTsumesuji2{0}あ\ajTsumesuji2{123}あいう}

おお,期待通りの出力です。

otf.sty の恩恵を受けるような文章を普段書かないので,
今回うろ覚えの知識で otf.sty を使ったんですが,
やっぱりちゃんと勉強しておくべきですね。

次回また「無茶振り」されるようなことがあれば,このテクニックを使わせていただきます。

(\UTF で半角数字を連続して出したときの空白の挙動は相変わらず謎ですが,
「正規の出力方法」があるなら深い追求は要らないかな。。。)