otfパッケージのexpertオプションを有効にすると異体字が出力されません

otfパッケージのexpertオプションを有効にすると異体字が出力されません

- ya ra の投稿
返信数: 14

upLaTeX+divpdfmx下でexpertオプション付きのotfパッケージを利用すると、異体字セレクタを与えた文字が出力されません。

\documentclass[uplatex, dvipdfmx]{jsarticle}
\usepackage[expert, jis2004]{otf}
\begin{document}

あ葛\symbol{"E0100}い葛う、
あ塚\symbol{"FE00}い塚う。

あ曙い曙\symbol{"E0101}う、
あ社い社\symbol{"FE00}う。

\end{document}
添付 スクリーンショット 2025-11-04 173103.png
ya ra への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- t tk の投稿
uplatex + IVS の使用例がまだまだ多くない中、導入をご検討いただきありがとうございます。
まず、(1)異体字セレクタ(IVS)の機能はかなり最近導入したものなので、関連ソフトウェアの最近の更新が出そろっていないと出力できません。
それと、(2)「葛\symbol{"E0100}」のような書き方では、もともと出力できるような仕様になっていなかったと思います。(私の記憶ベースであり、未検証)
もう一つ、(3) 「葛 + U+E0100」は Adobe-Japan1 の文字だと思いますが、実フォントはそのグリフを持っているでしょうか?

(1) に関しては、e-upTeX, dvipdfmx, otfパッケージ, 実フォント のバージョンは最新でしょうか? 版数はいくらでしょうか?
どれか一つでも新しくない場合には、IVS付漢字は出力できないはずです。

(2) に関しては、「葛\symbol{"E0100}」の代わりに「葛\kchar"E0100{}」ではいかがでしょうか?
t tk への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- はやて (h20y6m) の投稿
現在IVS, SVSに対応しているのは以下のフォントのみで、otfパッケージのexpertオプション用の upexp*.vf は未対応のようです。

> * uptex-base の配布に含まれる up{jpn,sch,tch,kor}{rm,gt}-{h,v}.vf,upjis{r,g}-{h,v}.vf にSVSのエントリー
> * japanese-otf の配布に含まれる upnml{minr,gothr,minb,gothb,mgothr,gotheb,minl}{,n}-{h,v}.vf にSVSとIVSとJIS第3水準の半濁点付き仮名のエントリー

ref. https://okumuralab.org/tex/mod/forum/discuss.php?d=3905#p24413
はやて (h20y6m) への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- t tk の投稿
ありがとうございます。
私が意図的に制限を設けていたようです。すっかり忘れていました。
そうすると、
https://okumuralab.org/tex/mod/forum/discuss.php?d=4011#p25065 に書いた
「./umakejvf のオプションに '-ccmb' を追加して、vf を再生成」が正攻法と思います。
いつかのタイミングで公式の配布物にも追加したいと思います。
はやて (h20y6m) への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- ya ra の投稿

はやてさま、ご回答ありがとうございます。

現在IVS, SVSに対応しているのは以下のフォントのみで、otfパッケージのexpertオプション用の upexp*.vf は未対応のようです。

当該ページを見ていて、異体字セレクタに対応していることを把握していたのですが、expert のための vf は未対応だったのですね。ありがとうございます。

ya ra への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- t tk の投稿
upLaTeX+divpdfmx下でexpertオプションなしのotfパッケージを利用すると、異体字セレクタを与えた文字が出力されますか?

\documentclass[uplatex, dvipdfmx]{jsarticle}
\usepackage{otf}
\begin{document}

あ葛\kchar"E0100い葛う、
あ塚\kchar"FE00い塚う。

あ曙い曙\kchar"E0101う、
あ社い社\kchar"FE00う。

\end{document}

もしそうだとすると、
japanese-otf-uptex パッケージ内の umakeotf のスクリプトに下記の記述がありますが、 ./umakejvf のオプションに '-ccmb' を追加して、vf を再生成して、それをdvipdfmx使用時に読ませるようにすると、expert オプション付きでも出るかもしれません。

echo "making alt. kana ..."
for face in minr gothr minb gothb mgothr
do
./umkjvf -ucs -sp 1 -omitfw -cq -expert upexp${face}-h uph${face}-h cidj${face}
./umkjvf -ucs -sp 1 -omitfw -cm -cp -expert upexp${face}-v uph${face}-v cidj${face}
./umkjvf -ucs -sp 1 -omitfw -cq -ruby upruby${face}-h uph${face}-h cidj${face}
./umkjvf -ucs -sp 1 -omitfw -cm -cp -ruby upruby${face}-v uph${face}-v cidj${face}
done
#extra fonts
for face in gotheb minl
do
./umkjvf -ucs -sp 1 -omitfw -cq -expert upexp${face}-h uph${face}-h cidj${face}
./umkjvf -ucs -sp 1 -omitfw -cm -cp -expert upexp${face}-v uph${face}-v cidj${face}
./umkjvf -ucs -sp 1 -omitfw -cq -ruby upruby${face}-h uph${face}-h cidj${face}
./umkjvf -ucs -sp 1 -omitfw -cm -cp -ruby upruby${face}-v uph${face}-v cidj${face}
done
t tk への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- ya ra の投稿

ttkさま、ご回答ありがとうございます。

(1)異体字セレクタ(IVS)の機能はかなり最近導入したものなので、関連ソフトウェアの最近の更新が出そろっていないと出力できません。

当方の環境を明示しておらず申し訳ありません。

  • Windows11
  • TeX Live 2025
  • upLaTeX:
e-upTeX 3.141592653-p4.1.2-u2.00-250202-2.6 (utf8.uptex) (TeX Live 2025)
kpathsea version 6.4.1
ptexenc version 1.5.1
Copyright 2025 D.E. Knuth.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the e-upTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the e-upTeX source.
Primary author of e-upTeX: Japanese TeX Development Community.
  • dvipdfmx:
This is dvipdfmx Version 20250410 by the DVIPDFMx project team,
modified for TeX Live,
an extended version of dvipdfm-0.13.2c developed by Mark A. Wicks.

Copyright (C) 2002-2025 the DVIPDFMx project team
Copyright (C) 2006-2025 SIL International.

This is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
  • japanese-otf: 2025/07/24 TeX JP org, v1.7b8 psitau, u0.32 ttk
  • Harano Aji Fonts: ver. 20250811

(2)「葛\symbol{"E0100}」のような書き方では、もともと出力できるような仕様になっていなかったと思います。

upLaTeX+dvipdfmx+otf パッケージ(expert 無し)下で 葛\symbol{"E0100} とすると、葛の異体字が出力されます。

LuaLaTeX ではこれで出力されるので、upLaTeX でも同様のサポートがなされるようになったのだと思っていました。

upLaTeX+divpdfmx下でexpertオプションなしのotfパッケージを利用すると、異体字セレクタを与えた文字が出力されますか?

\documentclass[uplatex, dvipdfmx]{jsarticle}
\usepackage{otf}
\begin{document}

あ葛\kchar"E0100い葛う、
あ塚\kchar"FE00い塚う。

あ曙い曙\kchar"E0101う、
あ社い社\kchar"FE00う。

\end{document}

この例でも異体字セレクタを与えた文字が出力されます。また、jis2004 オプション付きであっても出力されます。

(3) 「葛 + U+E0100」は Adobe-Japan1 の文字だと思いますが、実フォントはそのグリフを持っているでしょうか?

原ノ味フォントを使用しているため、「葛」および「葛+U+E0100」を持っています。

japanese-otf-uptex パッケージ内の umakeotf のスクリプトに下記の記述がありますが、 ./umakejvf のオプションに '-ccmb' を追加して、vf を再生成して、それをdvipdfmx使用時に読ませるようにすると、expert オプション付きでも出るかもしれません。

提示いただいたスクリプトを実行・生成し TeX ツリーに配置、mktexlsr を実行しました。

すると、以下の最小再現例を upLaTeX+dvipdfmx によって PDF を生成すると、IVS に対しては出力されましたが SVS に対しては出力されませんでした。 画像はその結果です。

\documentclass[uplatex, dvipdfmx]{jsarticle}
\usepackage[expert]{otf}
\begin{document}

\begin{itemize}
  \item \verb|\kchar|\\
  あ葛\kchar"E0100い葛う、
  あ塚\kchar"FE00い塚う。

  あ曙い曙\kchar"E0101う、
  あ社い社\kchar"FE00う。

  \item \verb|\symbol|\\
  あ葛\symbol{"E0100}い葛う、
  あ塚\symbol{"FE00}い塚う。

  あ曙い曙\symbol{"E0101}う、
  あ社い社\symbol{"FE00}う。

  \item リテラル\\
  あ葛い葛󠄀う、
  あ塚︀い塚う

  あ曙い曙󠄁う、
  あ社い社︀う。
\end{itemize}

\end{document}

添付 スクリーンショット 2025-11-06 001718.png
ya ra への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- t tk の投稿
検証ありがとうございます。
記載いただいた関連ソフトの版数は全てIVS, SVSが機能するはずのものと思います。

SVSがまだ出ない点については、
japanese-otf-uptex パッケージ内の umakeotf のスクリプト内の ./umkjvf のオプションに '-ccmb' と '-svs' を追加して、vf を再生成して、それをdvipdfmx使用時に読ませるようにすると、IVSとSVS付きの文字が expert オプション付きでも出るはずです。

葛\symbol{"E0100} でもIVSが有効になるとは知りませんでした。
t tk への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- ya ra の投稿

t tk さま、重ね重ねありがとうございます。

SVSがまだ出ない点については、…

ありがとうございます。以下のような形で再生成し、TeX ツリーに配置すると SVS であっても出力されるようになりました。

#!/bin/sh

echo "making alt. kana ..."
for face in minr gothr minb gothb mgothr
    do
    ./umkjvf -ucs -sp 1 -omitfw -cq     -expert -ccmb -svs "./script/svs_list_j.txt" upexp${face}-h uph${face}-h cidj${face}
    ./umkjvf -ucs -sp 1 -omitfw -cm -cp -expert -ccmb -svs "./script/svs_list_j.txt" upexp${face}-v uph${face}-v cidj${face}
    ./umkjvf -ucs -sp 1 -omitfw -cq     -ruby   -ccmb -svs "./script/svs_list_j.txt" upruby${face}-h uph${face}-h cidj${face}
    ./umkjvf -ucs -sp 1 -omitfw -cm -cp -ruby   -ccmb -svs "./script/svs_list_j.txt" upruby${face}-v uph${face}-v cidj${face}
done
#extra fonts
for face in gotheb minl
    do
    ./umkjvf -ucs -sp 1 -omitfw -cq     -expert -ccmb -svs "./script/svs_list_j.txt" upexp${face}-h uph${face}-h cidj${face}
    ./umkjvf -ucs -sp 1 -omitfw -cm -cp -expert -ccmb -svs "./script/svs_list_j.txt" upexp${face}-v uph${face}-v cidj${face}
    ./umkjvf -ucs -sp 1 -omitfw -cq     -ruby   -ccmb -svs "./script/svs_list_j.txt" upruby${face}-h uph${face}-h cidj${face}
    ./umkjvf -ucs -sp 1 -omitfw -cm -cp -ruby   -ccmb -svs "./script/svs_list_j.txt" upruby${face}-v uph${face}-v cidj${face}
done

umkjvf等、最近になってこれらのスクリプトを触るようになりましたが、使い方を完全に理解できておらず申し訳ありません。

葛\symbol{"E0100} でもIVSが有効になるとは知りませんでした。

葛\symbol{"E0100} というような書き方は意図せずうまくいっているということなのでしょうか?

現状、3つの書き方があると理解しています。

  • 葛+E+0100
  • 葛\kchar"E0100
  • 葛\symbol{"E0100}

これらに関して今後、いずれかの版で非推奨な書き方になる可能性があるのか気になっています。

ya ra への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- t tk の投稿
upTeX (u1.35以降) の SVS, IVSの仕様については、ptex-manual (CTAN配布はこちら , 開発元はgitHubのこちら )に記載しました。しかし、分かりやすい書き方にはなっていないですね。

3つの書き方について

  1. 葛+E+0100
  2. 葛\kchar"E0100
  3. 葛\symbol{"E0100}
1と2は upTeX(u1.35)開発時に開発者の私が意図した書き方です。今後とも動作を維持していきます。
3の \symbol は、LaTeXのコマンドでしょうか? (u)pLaTeX では和文向けの仕様が追加されているのでしょうか? そちらの仕様が変わらない前提が期待できるのであれば、動作は維持されると思います。それ以上のことは、私からは何とも言えません。推奨とも非推奨とも言えません。
t tk への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- ya ra の投稿

t tkさま、ありがとうございます。

1と2は upTeX(u1.35)開発時に開発者の私が意図した書き方です。今後とも動作を維持していきます。

ありがとうございます。よろしくお願いいたします。

\symbol は、LaTeXのコマンドでしょうか? (u)pLaTeX では和文向けの仕様が追加されているのでしょうか? そちらの仕様が変わらない前提が期待できるのであれば、動作は維持されると思います。

私の調べによると、latex.ltx から提供されているコマンドでした。ただ、このコマンドが (u)pLaTeX で和文向けの仕様を持っているのかは分かりませんでした。

この辺り、分かる方がいれば教えていただけると幸いです。

ya ra への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- はやて (h20y6m) の投稿

\symbol は以下のように定義されています。 (latex2e/base/ltfssini.dtx

\ifdefined\XeTeXversion
  \DeclareRobustCommand\symbol[1]{\Ucharcat#1 12\relax}
\else
  \DeclareRobustCommand\symbol[1]{\char#1\relax}
\fi

つまりupLaTeXでは 葛\char"E0100\relax になります。和文向けの特別な実装はありません。 現在の e-upTeXでは \char"E0100\kchar"E0100 と同じになるはずです。

ya ra への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- 本田 知亮 の投稿
\symbol{#1} は \char#1\relax に展開されます.
実際のところは \symbol はrobustなので \protect\symbol(space) を経由しますが
これは今回は関係ないと思います.
・・・て投稿したら,はやてさんとかぶってました.


ところで,tlmgr update -all を 2025/11/16 現在で実行した後で 

\documentclass[uplatex, dvipdfmx]{jsarticle}
%\usepackage{otf}
\begin{document}

あ葛\kchar"E0100い葛う、
あ塚\kchar"FE00い塚う。

あ曙い曙\kchar"E0101う、
あ社い社\kchar"FE00う。

\end{document}

と otf を外したり,otf で noreplace オプションをつけると異体字セレクタのところが
欠落しますね.
upjisr-h.vf のときにうまくいってないのでしょうか?

dvipdfmxが

[1
char=0x80845b(8422491)
Tried to set a nonexistent character in a virtual font
char=0x40585a(4216922)
Tried to set a nonexistent character in a virtual font
char=0x8466d9(8677081)
Tried to set a nonexistent character in a virtual font
char=0x40793e(4225342)
Tried to set a nonexistent character in a virtual font]

と四つほど対応しているであろう警告を出します.
本田 知亮 への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- t tk の投稿
 結論を先に言うと upjisr-h.vf のときにうまくいってないのは、意図した動作になります。

uptex-fonts での SVS, IVS の開発の狙いはGitHubのこちらに記載してあります。
uptex-fonts の更新は README_uptex_font.md に記載しており、20250218 のリリースで SVS に対応とありますが、
現状をまとめると、
up{jpn,kor,sch,tch}{rm,gt}-{h,v}.vf に SVS を入れているが IVS は入れていない
upjis{rm,gt}-{h,v}.vs には SVSもIVSも入れていない
になります。
IVSは Adobe-Japanなどを実装した実フォントとの組み合わせでないと上手く動かないという事情があります。
なのでもともと Adobe-Japanを想定している japanese-otf-uptex では作りやすいものの、特定の実フォントを想定しない建前の uptex-fonts では適切でないように思えたので IVS を入れていません。

upjis{rm,gt}-{h,v}.vf に SVS を入れなかったのは、SVSはまだ思わぬ不調がでるかもしれないという心配をして安全側にしておいたためです。
懸念がないようでしたら、適当なタイミングで追加しようと思っています。
本田 知亮 への返信

Re: otfパッケージのexpertオプションを有効にすると異体字が出力されません

- ya ra の投稿

まとめての返信となってしまい申し訳ありません。

はやてさま、本田さま、ご回答ありがとうございます。


以下 2 点から \symbol でも問題はないと理解しました。

  • \kchar による書き方は変わらず動作を維持される
  • \char\kchar\symbol のいずれであっても同じ結果を得る

元のディスカッションから少し外れた質問でしたが対応いただきありがとうございました。