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

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

- t tk の投稿
返信数: 7
検証ありがとうございます。
記載いただいた関連ソフトの版数は全て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 のいずれであっても同じ結果を得る

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