-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
和文vf の fallback を dviware で #99
Comments
ブランチ https://github.com/texjporg/tex-jp-build/tree/vf_fallback で試しています。 |
makejvf は 6470129 のようにしようかと考えています。 これは TeX Live 2020 には入れず、来年を目指します。 |
私の認識では
ともに、入力の dvicopy は従来の pTeX の vf も現時点では扱えないようなので、今回の拡張も対処無しにしたいと思います。もし将来 pTeX の vf も対処することがあるならば今回の拡張も含めることを期待することにします。 |
試していますが,非漢字部を別の TFM に割り当てる -K オプションで全角幅の文字が仮名にならないので対策しようと思います。少し時間をください。 % cp -p jis.tfm myjis.tfm
% makejvf -K myjis-kana myjis myjis-kanji
% cp -p jis.tfm myjiso.tfm
% makejvf -O -K myjiso-kana myjiso myjiso-kanji
\documentclass[a4paper]{jsarticle}
% for myjis
\DeclareKanjiFamily{JY1}{myjis}{}
\DeclareFontShape{JY1}{myjis}{m}{n}{<-> s * [0.961] myjis}{}
\DeclareFontShape{JY1}{myjis}{m}{it}{ssub * myjis/m/n}{}
\DeclareFontShape{JY1}{myjis}{m}{sc}{ssub * myjis/m/n}{}
\DeclareFontShape{JY1}{myjis}{m}{sl}{ssub * myjis/m/n}{}
\newcommand{\myjisdefault}{myjis}
\DeclareRobustCommand\myjisfamily{\kanjifamily\myjisdefault\selectfont}
\DeclareTextFontCommand{\textmyjis}{\myjisfamily}
% for myjiso
\DeclareKanjiFamily{JY1}{myjiso}{}
\DeclareFontShape{JY1}{myjiso}{m}{n}{<-> s * [0.961] myjiso}{}
\DeclareFontShape{JY1}{myjiso}{m}{it}{ssub * myjiso/m/n}{}
\DeclareFontShape{JY1}{myjiso}{m}{sc}{ssub * myjiso/m/n}{}
\DeclareFontShape{JY1}{myjiso}{m}{sl}{ssub * myjiso/m/n}{}
\newcommand{\myjisodefault}{myjiso}
\DeclareRobustCommand\myjisofamily{\kanjifamily\myjisodefault\selectfont}
\DeclareTextFontCommand{\textmyjiso}{\myjisofamily}
% map file
\AtBeginDvi{\special{pdf:mapline rml H ipaexm.ttf}}
\AtBeginDvi{\special{pdf:mapline gbm H ipaexg.ttf}}
\AtBeginDvi{\special{pdf:mapline myjis-kana H ipaexm.ttf}}
\AtBeginDvi{\special{pdf:mapline myjis-kanji H ipaexg.ttf}}
\AtBeginDvi{\special{pdf:mapline myjiso-kana H ipaexm.ttf}}
\AtBeginDvi{\special{pdf:mapline myjiso-kanji H ipaexg.ttf}}
\pagestyle{empty}
\begin{document}
\myjisfamily
[漢字・あいうえお。漢字も、大丈夫(かなだけ別)だよ]
\myjisofamily
[漢字・あいうえお。漢字も、大丈夫(かなだけ別)だよ]
\mcfamily
[漢字・あいうえお。漢字も、大丈夫(かなも同じ)だよ]
\gtfamily
[漢字・あいうえお。漢字も、大丈夫(かなも同じ)だよ]
\end{document} |
391c95c でどうでしょう? |
ご検討有難うございます。 |
if (!kanatfm || code > 0x2576) の 0x2576 は,その下の方にあった if (kanatfm) {
if (code <= 0x2576) に依拠しています(妥当かどうかはさておき)。個人的には,
が漢字側なのは違和感がありますが,アスキー版の挙動が今に至るまで維持されているため今回もそれに従いました。 UCS mode については #16 のときの議論のとおりです。 |
kanatfm の文字集合は了解しました。391c95c に同意します。 |
japanese-otf-uptex は、私の所「和文vf の fallback を使った vf の軽量化」で検討します。 |
IPAmj明朝フォントの変体仮名で遊んでみました。 \documentclass{ujarticle}
\AtBeginDvi{\special{pdf:mapline uprml-h unicode ipamjm.ttf}}
\begin{document}
\section{変体仮名}
𛀂𛀃𛀄𛀅𛀆𛀇𛀈𛀉𛀊𛀋𛀌𛀍𛀎𛀏
𛀐𛀑𛀒𛀓𛀔𛀕𛀖𛀗𛀘𛀙𛀚𛀛𛀜𛀝𛀞𛀟
𛀠𛀡𛀢𛀣𛀤𛀥𛀦𛀧𛀨𛀩𛀪𛀫𛀬𛀭𛀮𛀯
𛀰𛀱𛀲𛀳𛀴𛀵𛀶𛀷𛀸𛀹𛀺𛀻𛀼𛀽𛀾𛀿
𛁀𛁁𛁂𛁃𛁄𛁅𛁆𛁇𛁈𛁉𛁊𛁋𛁌𛁍𛁎𛁏
𛁐𛁑𛁒𛁓𛁔𛁕𛁖𛁗𛁘𛁙𛁚𛁛𛁜𛁝𛁞𛁟
𛁠𛁡𛁢𛁣𛁤𛁥𛁦𛁧𛁨𛁩𛁪𛁫𛁬𛁭𛁮𛁯
𛁰𛁱𛁲𛁳𛁴𛁵𛁶𛁷𛁸𛁹𛁺𛁻𛁼𛁽𛁾𛁿
𛂀𛂁𛂂𛂃𛂄𛂅𛂆𛂇𛂈𛂉𛂊𛂋𛂌𛂍𛂎𛂏
𛂐𛂑𛂒𛂓𛂔𛂕𛂖𛂗𛂘𛂙𛂚𛂛𛂜𛂝𛂞𛂟
𛂠𛂡𛂢𛂣𛂤𛂥𛂦𛂧𛂨𛂩𛂪𛂫𛂬𛂭𛂮𛂯
𛂰𛂱𛂲𛂳𛂴𛂵𛂶𛂷𛂸𛂹𛂺𛂻𛂼𛂽𛂾𛂿
𛃀𛃁𛃂𛃃𛃄𛃅𛃆𛃇𛃈𛃉𛃊𛃋𛃌𛃍𛃎𛃏
𛃐𛃑𛃒𛃓𛃔𛃕𛃖𛃗𛃘𛃙𛃚𛃛𛃜𛃝𛃞𛃟
𛃠𛃡𛃢𛃣𛃤𛃥𛃦𛃧𛃨𛃩𛃪𛃫𛃬𛃭𛃮𛃯
𛃰𛃱𛃲𛃳𛃴𛃵𛃶𛃷𛃸𛃹𛃺𛃻𛃼𛃽𛃾𛃿
𛄀𛄁𛄂𛄃𛄄𛄅𛄆𛄇𛄈𛄉𛄊𛄋𛄌𛄍𛄎𛄏
𛄐𛄑𛄒𛄓𛄔𛄕𛄖𛄗𛄘𛄙𛄚𛄛𛄜𛄝𛄞
「生𛁛𛂦゙」「生そば」
「天𛂱゚𛃭」「天ぷら」
「𛁈る𛀸」「しるこ」
\end{document}
|
makejvf v20200412, |
dvips の対応は少々苦労しましたが eca7562 で出来ているように思います。 pprescan.c の |
dvips は私のテストでは上手く動いているようで副作用も無いはずなので TeX Live svn にコミット (r54794) しました。 |
TeX Live svn r57024 コミットしました。 |
dvisvgm は原作者の方が対応してくださりv2.11としてリリースされた模様です。 |
japanese-otf の軽量化は、今回の調査で効果の大きさが確認できましたが、今の時点では不採用として閉じることにします。 |
TeXフォーラムの投稿 dvips が otf の expert に対応していないようです。 でdvips + 軽量vfでの不具合のご指摘がありました。 \documentclass[dvips,uplatex]{jsarticle}
\usepackage[expert]{otf}
\begin{document}
% あ安 % OK
安あ % NG
\end{document} dvips(k) 2021.1 |
dvips + 軽量vf の問題、0db0c2f で直ったと思います。 |
TeX Live svn r58812 コミットしました。 |
変体仮名のテストの縦組み版です。
|
和文vf の fallback について、若干の機能拡張をしたいと思います。 「MAPFONTで指示されているfont IDの一番若いものがJFMであるとき、要求されたコードポイントが明言されていな場合は,それが最小の font ID に属し,かつそのコードポイントそのものを出力する」『文字コードを維持したまま、最初のJFM のフォント名を、かつJFMのchar_type 0番にメトリックスを割り当てる』
の二つです。 (1)は、JFMよりも優先でOFMが読み込まれる場合があり、その時にもfallback機構を使いたいから、 Ref. dvipdfmx, dvips は期待通り動いているようなので、TeX Live svnにコミットする方向で考えています。 |
dvipdfmx: TeX Live svn コミット済み r66965 dvisvgm: submitted a request to the dvisvgm repo at github. |
Support by dvisvgm have done: my tests: ここは閉じます。 |
(English summary follows Japanese.)
uptex-font の方で以前話題にしたことのある件を調べ始めました。今後主に dviware の改良の話に向かいたいのでこちらの tex-jp-build に Issueを立てます。
まずは、一部繰り返しになりますが、振り返りながらまとめます。
動機は次の通りです。
japanese-otf(-uptex)などで和文vfを利用する際、漢字など大量のエントリーが『文字コードを維持したまま最初のJFM のchar_type 0番にフォント名、メトリックスを割り当てる』だけのものになっている。そこが単純な割に容量を食っていて、書体数や文字数を増やそうとするとバカにならないくらい巨大になる。そこで、「和文vf の中でエントリーが見つからない場合は『文字コードを維持したまま、最初のJFM のフォント名を、かつJFMのchar_type 0番にメトリックスを割り当てる』のような動作を仕様化して dviware 側で対処しよう」、という提案です。
uptex-fontの方 で長い議論がありましたが、一部以下に再掲します。
「MAPFONTで指示されているfont IDの一番若いものがJFMであるとき、要求されたコードポイントが明言されていな場合は,それが最小の font ID に属し,かつそのコードポイントそのものを出力する」
というルールの追加でよいように思います。つまり、VFの仕様拡張としては、idを追加して新しい命令を用意して…という方向でなく、解釈を拡張するというイメージです。
例えば、現状、upphiraminw3-h.ovp は、冒頭が
で、おしまいの方に次のようなエントリーが延々と続きます。
その代わり、CHARACTERのエントリーがない文字コード 0xXXXXX の要求が来た場合、従来エラーでしたがその代わりに
であると解釈する、という新ルールです。
otf パッケージでは、現在 {,u}mkjvf によりovp を生成しています。該当部分を削除すれば済むだけですので、改造は容易でしょう。
逆に出力不能な文字がソースに来た場合、従来は{,u}platexのコンパイル時にエラーが出ましたが、新ルールの元ではdviwareの処理までエラーが出ないことになります。逆に出力不能な文字がソースに来た場合、従来はdviwareがvfのエントリー不足を発見した時にエラーが出ましたが、新ルールの元ではdviwareが実フォントにアクセスを試みるまでエラーが出ないことになります。
(English summary)
I propose a new rule:
If a virtual font has no entry of a codepoint and the first MAPFONT designates (u)pTeX JFM,
we designate the glyph of the same codepoint in the TFM(JFM) with the smallest font ID.
The new rule helps to shrink size of Japanese virtual fonts.
For example, conventionally
upphiraminw3-h.ovp
starts withand a huge volume of entries for fullwidth characters continue such as:
Conventionally, if the virtuanfont lacks an entry of a CHARACTER 0xXXXXX, dviware rejected.
My proposal is to introduce the new rule to interpret as the fullwidth CHARACTER 0xXXXXX of
uphminr-h
:(Extended feature, 2023-04-29)
The rule for virtual fonts (VF) fallback is extended:
If a VF has no entry of a codepoint and the first
MAPFONT designates an OFM for (u)pTeX, then we designate the
glyph (usually with a fullwidth metric) of the same codepoint
with the same metrics of the codepoint in the OFM.
The text was updated successfully, but these errors were encountered: