luatexja.styとmarvosym.styを共存させたい

luatexja.styとmarvosym.styを共存させたい

- S T の投稿
返信数: 6
お世話になります。LuaTeXjaがらみの質問です。
MWEは下記の通りです。

--- test.tex ---
%#!lualatex
\documentclass{article}
\usepackage{marvosym}
\usepackage{luatexja}
\begin{document}

\thispagestyle{empty}
{\LARGE\Smiley\FAX\Telefon}

\end{document}
---- ここまで ---

luatexja.styを読み込むとmarvosymのフォントが表示されない、またはuやTなど別の文字になります。
luatexja.styを読み込まなければ、marvosymのフォントは期待通りに表示されます。
パッケージを読み込む順番は試しましたが、変化はありませんでした。
luatexja.styとmarvosym.styを共存させる方法についてご助言を賜れば幸いです。

各バージョンは下記の通りです。
$ grep ProvidesPackage $(kpsewhich luatexja.sty)
\ProvidesPackage{luatexja}[2013/05/14 Japanese Typesetting with LuaTeX]
$ grep -A1 ProvidesPackage $(kpsewhich marvosym.sty)
\ProvidesPackage{marvosym}
[2011/07/20 v2.2 Martin Vogel's Symbols font definitions]

よろしくお願いします。
S T への返信

Re: luatexja.styとmarvosym.styを共存させたい

- 北川 弘典 の投稿
marvosym.sty では記号を出力するために
  \fontfamily{mvs}\fontencoding{U}
  \fontseries{m}\fontshape{n}\selectfont
という内容の内部命令 \mvs を定義していますが,
この「fontencoding より先に fontfamily を変える」という順序が
LuaTeX-ja と相性が悪いです.

現段階では,次のようにされてはいかがでしょうか?

\usepackage{marvosym}
\usepackage{luatexja}

% marvosym 読み込み後に,以下の 2 行を加える
\renewcommand{\mvs}{\fontencoding{U}\fontfamily{mvs}%
\fontseries{m}\fontshape{n}\selectfont}

\begin{document}

\thispagestyle{empty}
{\LARGE\Smiley\FAX\Telefon}

\end{document}
北川 弘典 への返信

Re: luatexja.styとmarvosym.styを共存させたい

- S T の投稿
解決のヒントをご教示いただき感謝申し上げます。
ご教示通り、\mvsの定義で\fontencoding{U}と\fontfamily{mvs}の順番を逆にしてみましたが、改善がみられませんでした。
LuaTeXjaのバージョンの問題でしょうか。

marvosymは諦めて小さなPDF画像をはめ込むことで対処しましたが、後学のために、 luatexja.styとmarvosym.styを共存させるためのヒントが他にありましたらよろしくお願いいたします。
S T への返信

Re: luatexja.styとmarvosym.styを共存させたい

- 北川 弘典 の投稿
\fontfamily のかわりに \romanfamily を使用して,
強制的に「欧文側のフォントファミリを変更」させるようにすると
どうでしょうか:
  \renewcommand{\mvs}{\romanfamily{mvs}\fontencoding{U}%
  \fontseries{m}\fontshape{n}\selectfont}
北川 弘典 への返信

Re: luatexja.styとmarvosym.styを共存させたい

- S T の投稿
\romanfamilyに変更することで、
luatexja.styとmarvosym.styを共存させることができました。
素晴らしいです。ありがとうございました。

北川 弘典 への返信

Re: luatexja.styとmarvosym.styを共存させたい

- Z. R. の投稿
\renewcommand{\mvs}{\romanfamily{mvs}\fontencoding{U}%
\fontseries{m}\fontshape{n}\selectfont}

これだと、umvs での符号位置が“文字範囲8”(※)に入る文字については和文扱いになってしまうようです。

※U+0080~00FF の範囲で JIS X 0208 にある文字。〈§〉や〈÷〉など。

\documentclass[a4paper]{article}
\usepackage{marvosym}
\usepackage{luatexja}
\renewcommand{\mvs}{\romanfamily{mvs}\fontencoding{U}%
\fontseries{m}\fontshape{n}\selectfont}
\begin{document}
\Smiley % OK, 符号位置169=<©>
\Frowny % NG, 符号位置167=<§>
\end{document}

とりあえず、以下のようにすれば回避できます。

\renewcommand{\mvs}{\romanfamily{mvs}\fontencoding{U}%
\fontseries{m}\fontshape{n}\selectfont%
\ltjsetparameter{jacharrange={-8}}}