Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

- tanaka tanaka の投稿
返信数: 10
texlive2020の9月ごろアップデート版で
kanji-config-updmap-sys yu-win10
で游明朝を使用する設定にして
以下をcidtest.texとして
\documentclass[a4paper,uplatex]{jsarticle}
\usepackage{otf}
\begin{document}
\CID{9901} \CID{9902} \CID{9903} \CID{9904} \CID{9905} \CID{9906} \CID{9907} \CID{9908} \CID{9909} \CID{9910}
\CID{9911} \CID{9912} \CID{9913} \CID{9914} \CID{9915} \CID{9916} \CID{9917} \CID{9918} \CID{9919} \CID{9920}
\CID{9921} \CID{9922} \CID{9923} \CID{9924} \CID{9925} \CID{9926} \CID{9927} \CID{9928} \CID{9929} \CID{9930}
\CID{9931} \CID{9932} \CID{9933} \CID{9934} \CID{9935} \CID{9936} \CID{9937} \CID{9938} \CID{9939} \CID{9940}
\CID{9941} \CID{9942} \CID{9943} \CID{9944} \CID{9945} \CID{9946} \CID{9947} \CID{9948} \CID{9949} \CID{9950}
\CID{9951} \CID{9952} \CID{9953} \CID{9954} \CID{9955} \CID{9956} \CID{9957} \CID{9958} \CID{9959} \CID{9960}
\CID{9961} \CID{9962} \CID{9963} \CID{9964} \CID{9965} \CID{9966} \CID{9967} \CID{9968} \CID{9969} \CID{9970}
\CID{9971} \CID{9972} \CID{9973} \CID{9974} \CID{9975} \CID{9976} \CID{9977} \CID{9978} \CID{9979} \CID{9980}
\CID{9981} \CID{9982} \CID{9983} \CID{9984} \CID{9985} \CID{9986} \CID{9987} \CID{9988} \CID{9989} \CID{9990}
\CID{9991} \CID{9992} \CID{9993} \CID{9994} \CID{9995} \CID{9996} \CID{9997} \CID{9998} \CID{9999} \CID{10000}
\end{document}
uplatex+dvipdfmxで処理すると
ptex2pdf.exe -u -l cidtest.tex
pdfファイルがができたりできなかったりします。

This is ptex2pdf[.lua] version 20200520.0.
Processing cidtest.tex
This is e-upTeX, Version 3.14159265-p3.8.3-u1.26-191112-2.6 (utf8.uptex) (TeX Live 2020/W32TeX) (preloaded format=uplatex)
restricted \write18 enabled.
entering extended mode
(./cidtest.tex
pLaTeX2e <2020-04-12u03> (based on LaTeX2e <2020-02-02> patch level 5)
L3 programming layer <2020-09-06>
(c:/texlive/2020/texmf-dist/tex/platex/jsclasses/jsarticle.cls(guessed encoding: UTF-8 = utf8)
Document Class: jsarticle 2020/02/02 jsclasses (okumura, texjporg)
(c:/texlive/2020/texmf-dist/tex/platex/jsclasses/jslogo.sty))
(c:/texlive/2020/texmf-dist/tex/platex/japanese-otf-uptex/otf.sty
(c:/texlive/2020/texmf-dist/tex/latex/graphics/keyval.sty)
(c:/texlive/2020/texmf-dist/tex/platex/japanese-otf/ajmacros.sty(guessed encoding: ISO-2022-JP = jis)))
(c:/texlive/2020/texmf-dist/tex/latex/l3backend/l3backend-dvips.def)
(./cidtest.aux) [1] (./cidtest.aux) )
Output written on cidtest.dvi (1 page, 720 bytes).
Transcript written on cidtest.log.
cidtest.dvi -> cidtest.pdf
[1]
dvipdfmx:warning: Unicode char U+320038 replaced with U+0038.
dvipdfmx:warning: Unicode char U+320039 replaced with U+0039.
dvipdfmx:warning: Unicode char U+330030 replaced with U+0030.
dvipdfmx:warning: Unicode char U+330031 replaced with U+0031.
dvipdfmx:warning: Unicode char U+330032 replaced with U+0032.
dvipdfmx:warning: Unicode char U+330033 replaced with U+0033.
dvipdfmx:warning: Unicode char U+330034 replaced with U+0034.
dvipdfmx:warning: Unicode char U+330035 replaced with U+0035.
dvipdfmx:warning: Unicode char U+330036 replaced with U+0036.
dvipdfmx:warning: Unicode char U+330037 replaced with U+0037.
dvipdfmx:warning: Unicode char U+330038 replaced with U+0038.
dvipdfmx:warning: Unicode char U+330039 replaced with U+0039.
dvipdfmx:warning: Unicode char U+340030 replaced with U+0030.
dvipdfmx:warning: Unicode char U+340031 replaced with U+0031.
dvipdfmx:warning: Unicode char U+340032 replaced with U+0032.
dvipdfmx:warning: Unicode char U+340033 replaced with U+0033.
dvipdfmx:warning: Unicode char U+340034 replaced with U+0034.
dvipdfmx:warning: Unicode char U+340035 replaced with U+0035.
dvipdfmx:warning: Unicode char U+340036 replaced with U+0036.
dvipdfmx:warning: Unicode char U+340037 replaced with U+0037.
dvipdfmx:warning: Unicode char U+340038 replaced with U+0038.
dvipdfmx:warning: Unicode char U+340039 replaced with U+0039.
dvipdfmx:warning: Unicode char U+350030 replaced with U+0030.
dvipdfmx:warning: Unicode char U+350031 replaced with U+0031.
dvipdfmx:warning: Unicode char U+350032 replaced with U+0032.
dvipdfmx:warning: Unicode char U+350033 replaced with U+0033.
dvipdfmx:warning: Unicode char U+350034 replaced with U+0034.
dvipdfmx:warning: Unicode char U+350035 replaced with U+0035.
dvipdfmx:warning: Unicode char U+350036 replaced with U+0036.
dvipdfmx:warning: Unicode char U+350037 replaced with U+0037.
dvipdfmx:warning: Unicode char U+350038 replaced with U+0038.
dvipdfmx:warning: Unicode char U+350039 replaced with U+0039.
dvipdfmx:warning: Unicode char U+360030 replaced with U+0030.
dvipdfmx:warning: Unicode char U+360031 replaced with U+0031.
dvipdfmx:warning: Unicode char U+360032 replaced with U+0032.
dvipdfmx:warning: Unicode char U+360033 replaced with U+0033.
dvipdfmx:warning: Unicode char U+360034 replaced with U+0034.
dvipdfmx:warning: Unicode char U+360035 replaced with U+0035.
dvipdfmx:warning: Unicode char U+360036 replaced with U+0036.
dvipdfmx:warning: Unicode char U+360037 replaced with U+0037.
dvipdfmx:warning: Unicode char U+360038 replaced with U+0038.
dvipdfmx:warning: Unicode char U+360039 replaced with U+0039.
dvipdfmx:warning: Unicode char U+370030 replaced with U+0030.
dvipdfmx:warning: Unicode char U+370031 replaced with U+0031.
dvipdfmx:warning: Unicode char U+370032 replaced with U+0032.
dvipdfmx:warning: Unicode char U+370033 replaced with U+0033.
dvipdfmx:warning: Unicode char U+370034 replaced with U+0034.
dvipdfmx:warning: Unicode char U+370035 replaced with U+0035.
dvipdfmx:warning: Unicode char U+370036 replaced with U+0036.
dvipdfmx:warning: Unicode char U+370037 replaced with U+0037.
dvipdfmx:warning: Unicode char U+370038 replaced with U+0038.
dvipdfmx:warning: Unicode char U+370039 replaced with U+0039.
dvipdfmx:warning: Unicode char U+380030 replaced with U+0030.
dvipdfmx:warning: Unicode char U+380031 replaced with U+0031.
dvipdfmx:warning: Unicode char U+380032 replaced with U+0032.
dvipdfmx:warning: Unicode char U+380033 replaced with U+0033.
dvipdfmx:warning: Unicode char U+380034 replaced with U+0034.
dvipdfmx:warning: Unicode char U+380035 replaced with U+0035.
dvipdfmx:warning: Unicode char U+380036 replaced with U+0036.
dvipdfmx:warning: Unicode char U+380037 replaced with U+0037.
dvipdfmx:warning: Unicode char U+380038 replaced with U+0038.
dvipdfmx:warning: Unicode char U+380039 replaced with U+0039.
dvipdfmx:warning: Unicode char U+390030 replaced with U+0030.
dvipdfmx:warning: Unicode char U+390031 replaced with U+0031.
dvipdfmx:warning: Unicode char U+390032 replaced with U+0032.
dvipdfmx:warning: Unicode char U+390033 replaced with U+0033.
dvipdfmx:warning: Unicode char U+390034 replaced with U+0034.
dvipdfmx:warning: Unicode char U+390035 replaced with U+0035.
dvipdfmx:warning: Unicode char U+390036 replaced with U+0036.
dvipdfmx:warning: Unicode char U+390037 replaced with U+0037.
dvipdfmx:warning: Unicode char U+390038 replaced with U+0038.
dvipdfmx:warning: Unicode char U+390039 replaced with U+0039.
dvipdfmx:warning: Unicode char U+780076 replaced with U+0076.

13954 bytes written
cidtest.pdf generated by dvipdfmx.

pdfが出力されない場合はdvipdfmxが
最後のところで
dvipdfmx:warning: Unicode char U+780076 replaced with U+0076.
dvipdfmx:fatal: Invalid glyph index (gid 26621)

No output PDF file written.
ptex2pdf processing of cidtest.tex failed.

となって終了します。gid 26621の数字は毎回異なるようです。

処理のたびに結果が異なるのも解せないのですが
http://www.jiyu-kobo.co.jp/wp@test/wp-content/uploads/2020/09/compatibility_2009.pdf
ではAdobe-Japan1-7のグリフを持っているように記載があるので
置換が起こる理由もよくわからず
warningが出ているのも気になります。
何らかの追加設定が必要なのでしょうか。

windows10が世に出て結構経ちますが、
web検索してもそれらしい情報に行き当たりません。
同じ現象発生して解決した方がいらっしゃればお教え頂ければ幸いです。
tanaka tanaka への返信

Re: Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

- Akira Kakuto の投稿
gs-9.53.3 と PSTricks for XeTeX の関係で、
dvipdfmx を開発中の版にしています。それによる不具合
かもしれませんから、著者に連絡致します。
Akira Kakuto への返信

Re: Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

- Z. R. の投稿
Invalid glyph index (gid xxxxx)

については、dvipdfmxのバージョンを20150315まで戻しても同じ現象が起こりますね。

tanaka tanaka への返信

Re: Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

- はやて (h20y6m) の投稿

Windows 10 の游明朝は Adobe-Japan1 な OpenType フォントではないので \CID コマンドで正しいグリフを出力することはできません。 フォントが Adobe-Japan1-7 と同じグリフを持っていることと Adobe-Japan1-7 な OpenType フォントであることは異なります。

CID を一旦 Unicode に変換した後グリフを検索するので CID が Unicode と紐づかない場合や、複数の CID が同一の Unicode に紐づく場合、複数の Unicode ポイントで構成されるグリフは正しく引き当てが出来ません。

dvipdfmx:warning: Unicode char U+320038 replaced with U+0038.

これは CID+9901 が U+0032 U+0038 のような二つの Unicode ポイントに引き当てられているのを dvipdfmx が正しく扱えず、U+320038 のようなあり得ない Unicode ポイントとして扱ってしまっているのだと思います。

dvipdfmx:fatal: Invalid glyph index (gid 26621)

dvipdfmx のバグでしょうか? STATUS_ACCESS_VIOLATION でクラッシュする場合もあるようです。

はやて (h20y6m) への返信

Re: Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

- tanaka tanaka の投稿
> フォントが Adobe-Japan1-7 と同じグリフを持っていることと Adobe-Japan1-7 な OpenType フォントであることは異なります。
Adobe-Japan1-7はOpenTypeフォントが前提のところ、Windows10ではそうなっておらず、完全に対応はもともと無理でUnicodeを経由して処理するのでUnicode外のグリフはdvipdfmxでは扱えない、ということになると理解しました。

Windows10の游シリーズフォントでUnicode外のグリフにアクセスする方法はTeX(dvipdfmx)以外でも他に知られた方法はあるのでしょうか。Adobe-Japan1-7 にせっかく対応していても世間一般に目にすることができない不憫なグリフがあるのももったいない気がします。


tanaka tanaka への返信

Re: Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

- Z. R. の投稿
Windows10の游シリーズフォントでUnicode外のグリフにアクセスする方法

「グリフID(GID)を直接指定する」という手段があります。

どのGIDがどのような文字に対応するかはフォントが好き勝手に決めていて、また普通はフォントの仕様の一部でもない(だからバージョンごとに変わりうる)ので非常に使いにくいのですが、取りあえずフォントに含まれる任意のグリフを出力できます。

※なお、Windows 10の游フォントについては、「AJ1のCIDを2だけずらしたのがGIDになる」ことが知られていて、例えば「丸82」はCIDが10294なので、游フォントでのGIDは10296となります。

XeTeXでは\XeTeXglyphという命令で「GID指定のグリフ出力」ができます。

% XeLaTeX文書; UTF-8
\documentclass[a4paper]{article}
\usepackage{fontspec}
\setmainfont{Yu Mincho}%游明朝
\begin{document}
㉘\XeTeXglyph10296\relax
\end{document}

upLaTeXの場合、pxchfonパッケージをunicodeglyphidのオプションを付けて読み込むと、\gidという命令で「GID指定のグリフ出力」ができます。

※pLaTeXでは非対応。
※全角幅のグリフのみサポートされる。

% upLaTeX文書; UTF-8
\documentclass[uplatex,dvipdfmx,a4paper]{jsarticle}
\usepackage{otf}
\usepackage[unicode,yu-win10,glyphid]{pxchfon}
\begin{document}
㉘\gid{10296}
\end{document}
添付 image-yuwinglyphid-12.png
Z. R. への返信

Re: Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

- tanaka tanaka の投稿
無知は承知でよくわからないまま、いろいろファイル検索してmapファイルに
otf-cjmr-h Identity-H yumin.ttf/AJ16 %!PS YuMincho-Regular
の行があるのを見つけました。
/AJ16というのが、Unicode経由で実グリフに対応させているのだとすると
この機能の代わりにCID→GIDの変換(2を足す)する機能を追加すれば、
すべてCIDで表示できるようになるのでしょうか。
Windows10の游シリーズフォント限定で細かなバージョン依存も出そうで
世界的に言うと需要が多くないと思われるので
簡単に機能追加というわけにはいかないのではという気はしますが、
dvipdfmx側で可能であれば製造元に提案もありでしょうか。
フォント関連は複雑でそんなに単純な話ではないので見送られている?
tanaka tanaka への返信

Re: Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

- Akira Kakuto の投稿
Z.R. さんの情報に基づいて、

%test.tex
\documentclass[a4paper,uplatex]{jsarticle}
\usepackage{otf}
\newcount\cind
\def\YCID#1{\cind#1\advance\cind by 2\CID\cind}
\begin{document}
\YCID{9901} \YCID{9902} \YCID{9903} \YCID{9904} \YCID{9905} \YCID{9906} \YCID{9907} \YCID{9908} \YCID{9909} \YCID{9910}
\YCID{9911} \YCID{9912} \YCID{9913} \YCID{9914} \YCID{9915} \YCID{9916} \YCID{9917} \YCID{9918} \YCID{9919} \YCID{9920}
\YCID{9921} \YCID{9922} \YCID{9923} \YCID{9924} \YCID{9925} \YCID{9926} \YCID{9927} \YCID{9928} \YCID{9929} \YCID{9930}
\YCID{9931} \YCID{9932} \YCID{9933} \YCID{9934} \YCID{9935} \YCID{9936} \YCID{9937} \YCID{9938} \YCID{9939} \YCID{9940}
\YCID{9941} \YCID{9942} \YCID{9943} \YCID{9944} \YCID{9945} \YCID{9946} \YCID{9947} \YCID{9948} \YCID{9949} \YCID{9950}
\YCID{9951} \YCID{9952} \YCID{9953} \YCID{9954} \YCID{9955} \YCID{9956} \YCID{9957} \YCID{9958} \YCID{9959} \YCID{9960}
\YCID{9961} \YCID{9962} \YCID{9963} \YCID{9964} \YCID{9965} \YCID{9966} \YCID{9967} \YCID{9968} \YCID{9969} \YCID{9970}
\YCID{9971} \YCID{9972} \YCID{9973} \YCID{9974} \YCID{9975} \YCID{9976} \YCID{9977} \YCID{9978} \YCID{9979} \YCID{9980}
\YCID{9981} \YCID{9982} \YCID{9983} \YCID{9984} \YCID{9985} \YCID{9986} \YCID{9987} \YCID{9988} \YCID{9989} \YCID{9990}
\YCID{9991} \YCID{9992} \YCID{9993} \YCID{9994} \YCID{9995} \YCID{9996} \YCID{9997} \YCID{9998} \YCID{9999} \YCID{10000}
\end{document}

に対して、
% yu-win10.map
otf-cjml-h  Identity-H  yuminl.ttf/I
otf-cjml-v  Identity-V  yuminl.ttf/I
otf-cjmr-h  Identity-H  yumin.ttf/I
otf-cjmr-v  Identity-V  yumin.ttf/I
otf-cjmb-h  Identity-H  yumindb.ttf/I
otf-cjmb-v  Identity-V  yumindb.ttf/I
otf-cjgr-h  Identity-H  :0:YuGothR.ttc/I
otf-cjgr-v  Identity-V  :0:YuGothR.ttc/I
otf-cjgb-h  Identity-H  :0:YuGothB.ttc/I
otf-cjgb-v  Identity-V  :0:YuGothB.ttc/I
otf-cjge-h  Identity-H  :0:YuGothB.ttc/I
otf-cjge-v  Identity-V  :0:YuGothB.ttc/I
otf-cjmgr-h  Identity-H  :0:YuGothB.ttc/I
otf-cjmgr-v  Identity-V  :0:YuGothB.ttc/I

をつくり、
uplatex test
dvipdfmx -f yu-win10.map test
とすると、添付の test.pdf
となりました。
Akira Kakuto への返信

Re: Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

- tanaka tanaka の投稿
pdfファイルからのコピー&ペーストまで正しくないと意味がなく、かえって弊害である、とする考え方もあると思いますが、表示だけでもできたほうが良いというのも一理あると思います。
TeX Liveに何らかの形で取り込んでもらえると、喜ぶ人が何人かいるかもしれません(少なくても1名)。


tanaka tanaka への返信

Re: Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

- Akira Kakuto の投稿
著者により、ある名前規則に従う cmap を用意すれば、それに従って
自動変換する機能が追加されました(20201019)。
従っておそらく TL2021 では最初の例がそのままOKになるでしょう。
Akira Kakuto への返信

Re: Windows10の游明朝はどこまでAdobe-Japan1-7をサポートするか?

- tanaka tanaka の投稿
遅ればせながらDvipdfmxの以下のChangeLogをヒントに
2020-10-19 Shunsaku Hirata <shunsaku.hirata74@gmail.com>
* cidtype0.c, cidtype2.c, type0.c: User defined CID-to-GID
PostScript CMap with filename of the form
REGISTRY-ORDERING-PSFontName can be loaded (if exist) for
mapping CIDs to GIDs. This feature can be used for directory
mapping CIDs to GIDs instead of
CID -> to-code CMaps -> TrueType cmap -> GID route.
* data/Adobe-Japan1-YuMincho-Regular: An example of CID-to-GID
CMap file.
* configure.ac: Version 20201019.
TeXlive2021で試してみました。

最初から設定はされてないようで、試行錯誤の結果です。
kanji-config-updmap-sys yu-win10
で游フォント埋め込み設定しておきます。

Adobe-Japan1-YuMincho-Regularのファイルを
http://www.tug.org/svn/texlive/trunk/Build/source/texk/dvipdfm-x/data/Adobe-Japan1-YuMincho-Regular?view=co
からダウンロードして
C:\texlive\texmf-local\fonts\cmap\adobemapping\cmap-resources\Adobe-Japan1-7\CMap
に保存。

Adobe-Japan1-YuMincho-Regularは例ということのようなので
他ウェイト、游ゴシックについても適宜変更して
ファイルを作成すればよいのではと思います(未確認)。
ファイルの保存場所にもっと適しているところがあったら教えてください。

mktexlsrを(管理者で)実行

理屈が分かってないですが
Adobe-Japan1-YuMincho-Regularのファイルが見つかればOKのようです。
pdfファイルのテキストコピーもうまくいっているように見えます。