変体仮名を使いたいのですが・・・

変体仮名を使いたいのですが・・・

- mr2h の投稿
返信数: 17
いつもお世話になっております。
日本の古典ではたまに使われる「変体仮名」を縦書upLaTeX(jlreq)で活用したいと思いますが、方法がわかりません。

texworksのeditor上ではutf-8上でDataBaseからコピペするとtext上は入力できますが、upLaTeXで、いざpdfに変換しようとしてもerorとなってしまいます。

mr2h への返信

Re: 変体仮名を使いたいのですが・・・

- 林 かぐら の投稿
返信がないのも寂しいので。

(1) 変体仮名のグリフを搭載しているフォントを用意します。
ここでは「三番明朝H」(samminh.otf)を使うことにします。
http://www.akenotsuki.com/eyeben/fonts/sammin.html
このフォントは IPAex明朝をベースに,IPAmj明朝にある変体仮名を
unicode の該当位置に配置したものです。
他の選択肢として「Unicode変体仮名フォント」
(UniHentaiKana-Regular.otf)
http://wakufactory.jp/densho/font/hentai/
があります。

(2) texmf-dist/fonts/tfm/public/jlreq/ にある ujlreq.tfm をコピーして,
uniA.tfm を作ります。
名前は適当に。uni は unicode のつもり。
もっと使いたくなったら uniB.tfm を作ります。
ここでは vf を使わないので,コピーしても大丈夫です(使えます)。

(3) さらに同じところにある ujlreq-v.tfm をコピーして,uniA-v.tfm を作ります。

(4) 以下の LaTeX ファイルを用意します。
--- ↓ ここから(文字コード:UTF-8)---
\documentclass[jafontsize=10.5bp,tate]{jlreq}
\special{pdf: mapline uniA unicode samminh.otf}
\special{pdf: mapline uniA-v unicode samminh.otf -w 1}
\jfont\ysammin=uniA at 10.5bp
\tfont\tsammin=uniA-v at 10.5bp
\def\sammin{\ysammin\tsammin}
\begin{document}
生{\sammin\char"1B05B\char"1B0A6\llap{\char"3099}} {\sammin\char"1B048}る{\sammin\char"1B038}
\end{document}
--- ↑ ここまで ---
注 これは縦組みの例です。ノンブルの位置がおかしいのは直してください。
なお tate オプションを省けば横組みになります。

(5) upLaTeX でタイプセットします。
これで「きそば」と「しるこ」が表示されます。

◇ 私は LaTeX を知らないので,フォント設定が LaTeX の流儀に従っていません。
実際に使うときは LaTeX の流儀に合うようにフォントの設定をおこなってください。

◇ 実フォントと tfm は適切に配置してください。試すだけならカレントに置いても可。

◇ 三番明朝H は IPAex明朝ベースなので,本文フォントを IPAex明朝にすると
落ち着くかもしれません。

◇ 文字コードで指定していますが,直接変体仮名を書いても大丈夫です。
ただし変体仮名(U+1B000~のブロック)に対しては \kcatcode"1B000=17 となって
いて大丈夫のはずですが,なぜだか入力エラーになります。
\kcatcode"1B000=17 を明示的に書き込んでおけばうまくいきます。
理由がわかりません。私がなにか勘違いをしているのかもしれません。

◇ 齋藤修三郎さんの IPAmjm パッケージを使って IPAmj明朝フォントにアクセスする
という方法でも変体仮名は出せます。

◇ Adobe-Japan1-7 にはない unicode 文字も,たとえばグリフを多く含む
花園明朝などを使えば,この方法で表示できます。
たとえば上記と同じ方法で「花園明朝A」を \Hana で定義しておけば
{\Hana 㯿□□□} あるいは {\Hana\char"3BFF\char"1F642\char"1F610\char"1F641}
が使えます。□は実際の顔文字です。
(なぜか顔文字を書くとこのフォーラムで削除されてしまいます)
ただし前者の場合は \kcatcode"1F642=18 となっているはずですが,入力エラーに
なります。変体仮名同様理由がわかりません。
\kcatcode"1F642=18 を明示的に書き込んでおけばうまくいきます。

◇ 私用領域にある文字も(グリフがあれば)表示できます。

◆ 上記で「理由がわかりません」と書いたことについて,コメントを頂ければ
うれしいです。和文欧文を振り分けて,欧文なら inputenc に処理を渡す,
と思っているのですが,和文として認識されなくて inputenc に処理が渡っている
ような気が。
林 かぐら への返信

Re: 変体仮名を使いたいのですが・・・

- Z. R. の投稿
◆ 上記で「理由がわかりません」と書いたことについて,コメントを頂ければ うれしいです。

この理由は「jlreqクラスが和文カテゴリコードの設定を変更しているから」です。

\documentclass{jlreq}
\message{\the\kcatcode"1B000}%→15
\message{\the\kcatcode"1F642}%→15
\stop

ただ、絵文字はともかく変体仮名をわざわざ“欧文扱い”に変更するのは奇妙なのは確かです。そうなっている理由は、jlreq.clsの中のコメントに書かれています。

  % LuaTeX-jaのデフォルトのままに近い設定をする

ただし、現在の版のLuaTeX-jaでは変体仮名のブロックは“和文扱い”になっています。(一月ほど前に変体仮名を含むBeamerスライドを実際にLuaLaTeXで作りました。)

従って結論としては
「jlreqクラスの和文カテゴリコードの設定が、LuaTeX-ja の昔の版に合わせているから」
ということになります。

Z. R. への返信

Re: 変体仮名を使いたいのですが・・・

- 阿部 紀行 の投稿
あら,後で見直しておきます.

ところでこれは余談ですが,今のupLaTeXのカテゴリーコードとLuaTeX-jaのブロックの扱いってどの程度差があるんでしょうか?

林 かぐら への返信

Re: 変体仮名を使いたいのですが・・・

- mr2h の投稿
ご親切な、ご教示まことにありがたく感謝いたしております。
じつは、質問させていただいた後、私の古いPC(7'th generationの Intel i7700k搭載)が不調となり、ここ数日間復旧に大わらわで、その間メールも閲覧できず、勿論この問題に取り組むことができませんでした。

もともとbackup の積りで、主SSDと同じ容量のsub SSDにArk社の「革命シリーズ」のDisk drive丸ごとバックアップなるアプリで、安全を狙っていたのですが、今回はそれが裏目になりました。何らかの操作ミスにより、OSの起動ができなくなり焦った結果、ミスの上塗りとなりbackupの積りのsub driveも起動しなくなりました。原因はドライブのGPTが意図せずしてMBRに切り替わってしまったことによります。その結果UEFI上で起動できなくなったということでした。こんな経験ははじめて!

結局OSの clean install, TeXLive2021の再インストール、その他の常用各アプリの設定など、この3日ほど手を奪われ、やっと本日復旧の目途が立ちました。

ご教示の、例文を今実行し、upLaTeX+jlreqの縦組み環境でキチンと変体仮名が表示されることを確かめました。

誠にありがとうございます。

ただ変体仮名のutf-8文字コードはどう調べればよいのかこれから調べてみたいと思います。(現代かなー変体仮名ー文字コード)表


私は島崎藤村の詩集「若菜集」を私的に製本いたしたく、青空文庫のtextを基にこの環境のもとで既に完成しておりましたが、この度「初版本」の内容を知り、詩の順序も、一部詩の題名も異なり、それから旧漢字への変更もGXglyphwikiを活用し再作成しましたが、変体仮名だけは方法がわからず苦慮しておりました。人名なら、年配の方で、変体仮名を使用している方がいますよね。
IPAex明朝は、戸籍の収録に使うために開発された?そうですから、納得です。
mr2h への返信

Re: 変体仮名を使いたいのですが・・・

- 和田 勇 の投稿
 > 変体仮名のutf-8文字コードはどう調べればよいのか

グリフと unicode 対応だと想定してですが

html のスクレイピングができるなら http://codh.rois.ac.jp/char-shape/hentaigana/ はどうでしょうか?このページをファイル保存して、notepad などテキスト表示できるエディタで見ても良いのですが。

あるいは、以下でも良いかもしれません。

https://www.benricho.org/kana/UniHentaiKana/pdf/Unihentaikana.pdf
和田 勇 への返信

Re: 変体仮名を使いたいのですが・・・

- mr2h の投稿
和田様
ご教示の、あとのほうの対応表が役に立ちそうです。
ありがとうございます。
林 かぐら への返信

Re: 変体仮名を使いたいのですが・・・

- Z. R. の投稿
(なぜか顔文字を書くとこのフォーラムで削除されてしまいます)

このフォーラムの既定の入力方式(Moodleオートフォーマット)ではBMP外のUnicode文字は入力できないようです。自分は「HTML入力に切り替えて文字実体参照(🙃)で入力する」ことで回避しています🙃

𛁈る𛀸😋

林 かぐら への返信

Re: 変体仮名を使いたいのですが・・・

- 林 かぐら の投稿
Z. R. さん,何から何まで丁寧な解説ありがとうございます。納得しました。
私は eupTeX ユーザーで,フォントは jlreq の JFM を使っています。
jlreq クラスは使っていないので,今まで何の問題も起こっていませんでした。
今回投稿するに当たって LaTeX のコードに書き換えていろいろ試したら
気になる現象に遭遇したというわけです。

eupTeX で多書体を実現するために Z. R. さんの PXcopyfont パッケージを
便利に使わせていただいています。おかげで原の味フォントの日中韓のそれぞれ
7 ウェイトがすべて使えています。ありがとうございます。

ところで花園明朝にも変体仮名が搭載されていますが,汚くて実際には使えないです。
林 かぐら への返信

Re: 変体仮名を使いたいのですが・・・

- 林 かぐら の投稿
よく確かめないで書いてしまいました。
花園明朝の作者(たち)にお詫び申し上げます。
以下のように訂正します。

「ところで花園明朝にも変体仮名が搭載されています。」
mr2h への返信

Re: 変体仮名を使いたいのですが・・・

- Z. R. の投稿

既定の状態で変体仮名を含む文書の処理がうまくいかないのは、「既定の状態の和文フォント(の設定)が変体仮名を含まないから」です。つまり変体仮名を使おうとすると、「和文フォントの設定」が必要になります。で、例によって、(u)pLaTeXにおける「和文フォントの設定」は非常に厄介(で初級者への説明も困難)だったりします。

色々な設定の方法がありますが、一番簡単なのは単純に「標準のフォントを変体仮名が使えるものに置き換えてしまう」ことです。かぐらさんが紹介している「三番明朝H」を使うことにすると、要するに「標準の明朝体を『三番明朝H』に変更する」という設定をすればよいわけです。

% upLaTeX文書; UTF-8
\documentclass[paper=b5,tate]{jlreq}
% 変体仮名のUnicode文字を直接入力可能にする
\usepackage[ccv3,prefercjk]{pxcjkcat}
% IPAexフォントを指定
\usepackage[unicode,ipaex]{pxchfon}
\setminchofont{samminh.otf}% 明朝を"三番明朝H"にする
% つまり現在の和文フォント設定は:
% 明朝→三番明朝H; ゴシック→IPAexゴシック
\begin{document}
しるこ

𛁈る𛀸%直接入力

\symbol{"1B048}る\symbol{"1B038}%コード値入力
\end{document}
添付 image-shiruko-1.png
Z. R. への返信

Re: 変体仮名を使いたいのですが・・・

- mr2h の投稿
zrさんの、ご教示の方法で、変体仮名の利用ができました。
今やっと「若菜集」の全てのページをチェックし終わり該当箇所は正しく表示できました。
プリアンブルと冒頭のみ書きますと、以下の通りです。

\RequirePackage{plautopatch}
% upLaTeX文書
\documentclass[dvipdfmx,uplatex,,tate,book,paper=a5,jafontsize=14pt,
number_of_lines=14,line_length=30zh,baseline_skip=2zw,
open_bracket_pos=nibu_tentsuki,hanging_punctuation]{jlreq}
\ModifyPageStyle{plain}{nombre_position=bottom-left}
\pagestyle{plain}
\usepackage{bxpapersize}
\usepackage{pxrubrica}
\usepackage{sfkanbun}
\usepackage[deluxe,multi,jis2004]{otf}
%\usepackage[directunicode*, noalphabet]{pxchfon}[2017/04/08] %変体仮名を使わないときはこちらを使う。
\usepackage{plext}
\usepackage{graphicx,xcolor}
\usepackage{bxglyphwiki}
\usepackage{multicol}% 目次を二段書きするために
\usepackage{shiika}
\usepackage{indent}
%===============================================
% 変体仮名のUnicode文字を直接入力可能にする
\usepackage[ccv3,prefercjk]{pxcjkcat}
% IPAexフォントを指定
\usepackage[unicode,ipaex]{pxchfon}
\setminchofont{samminh.otf}% 明朝を"三番明朝H"にする
% つまり現在の和文フォント設定は: 明朝→三番明朝H; ゴシック→IPAexゴシック
%===============================================

%こゝから6段は、目次を二段書きするため
\makeatletter
\renewcommand{\tableofcontents}{%
\@mkboth{\contentsname}{\contentsname}%
\@starttoc{toc}%
}%
\makeatother
%================================================
\rubysetup{||Hj}
%\rubysizeratio{0.45}
\title{\Huge 若 \GWI{u83dc-k} 集}
\date{\hspace{6zw}明治三〇年}
\author{\hspace{5zw}島 崎 藤 村}
\begin{document}
\pagenumbering{roman}
\maketitle
\newpage
\mbox{}
\newpage
\begin{indentation}{4zw}{1zw}
\begin{shiika}
\noindent \textcolor{red}{こゝろなきうたのしらべは\\
ひとふさのぶだうのごとし\\
なさけあるてにもつまれて\\
あたゝかきさけとなるらむ}\\

\noindent \textcolor{red}{ぶだうだなふかくかゝれる\\
むらさきのそれにあらねど\\
こゝろあるひとのなさけに\\
かげにおくふさのみつよつ}\\

\noindent \textcolor{red}{そはうたのわかきゆゑなり\\
あぢはひもいろもあさくて\\
おほかたはかみてすつべき\\
うたゝねのゆめのそらごと}
\end{shiika}
\vspace*{5zw}
\textcolor{red}{明治二十九年の秋より三十年の春へかけてこゝろみし根無草の色も香もなきをとりあつめて}若\GWI{u83dc-k}集\textcolor{red}{とはいふなり、このふみの世にいづべき日は靑葉のかげ深きころになりぬとも、そは自然のうへにこそあれ、吾歌は}まだ{\GWI{u8420-j}}出しまゝの若\GWI{u83dc-k}\textcolor{red}{なるをや。}\\

\newpage
\noindent{\hfil\Large 目  次\hspace{8zw}\vspace{1zw}}% 二段書きした目次の字の大きさと配置を調整
\setlength{\columnsep}{0mm}
\begin{multicols}{2}% 目次を二段書きするために
\tableofcontents
\end{multicols}% 目次を二段書きするために
\newpage
\mbox{}
\newpage
\pagenumbering{arabic}
\section*{\huge 若 \GWI{u83dc-k} 集}
\vspace{1zw}
\hspace{11zw}{\large 島 崎 藤 村 著}
\vspace{2zw}
\subsection*{\hspace*{2zw}お え ふ}
\addcontentsline{toc}{subsection}{\numberline{}{お え ふ}}
\begin{shiika}
\noindent \ruby{{\GWI{u8655-t}}女}{をと|め}ぞ\ruby{{\GWI{u7d93-j}}}{へ}ぬるおほかたの\\
われは\ruby{夢路}{ゆめ|ぢ}を越えてけり\\
わが世の坂にふりかへり\\
いく\ruby{山河}{やま|かは}をながむれば\\

\noindent \ruby{水{\GWI{u975c-ue0109}}}{みづ|しづ}かなる江{\GWI{u6236-t}}川の\\
ながれの岸にうまれいで\\
岸の櫻の\ruby{花影}{はな|かげ}に\\
われは\ruby[g]{{\GWI{u8655-t}}女}{をとめ}となりにけり
\vspace*{1zw}

\noindent \ruby{都鳥}{みやこ|どり}\ruby{{\GWI{u6d6e-k}}}{う}く\ruby{大川}{おほ|かわ}に\\
流れてそゝぐ\ruby{川添}{かは|ぞひ}の\\
\ruby[||->]{白菫}{しろ|すみれ}さく\ruby{若草}{わか|ぐさ}に\\
夢多かりし吾身かな
\vspace*{1zw}

\noindent 雲むらさきの\ruby{九重}{こゝ|のへ}の\\
大宮内につかへして\\
\ruby{{\GWI{u6df8-jv}}{\GWI{u51c9-j}}殿}{せい|りょう|でん}の春の\ruby{夜}{よ}の\\
月の光に照らされつ
\vspace*{1zw}

\noindent 雲を\ruby{彫}{ちりば}め\ruby{濤}{なみ}を\ruby{刻}{ほ}り\\
\ruby{霞}{かすみ}をうかべ日をまねく\\
玉の\ruby{{\GWI{u81fa-j}}}{うてな}の欄干に\\
かゝるゆふべの春の雨
\vspace*{1zw}

\noindent さばかり高き人の世の\\
\ruby{耀}{かがや}くさまを目にも{\GWI{inaz_u898b-var-001}}て\\
ときめきたまふさま〴〵の\\
ひとりのころもの\ruby{香}{か}をかげり
\vspace*{1zw}

\noindent きらめき\ruby{初}{そ}むる\ruby{{\GWI{u66c9-g}}星}{あか|ぼし}の\\
あしたの空に動くごと\\
あたりの光きゆるまで\\
さかえの人のさまも{\GWI{inaz_u898b-var-001}}き
\vspace*{1zw}

\noindent \ruby{天}{あま}つみそらを渡る日の\\
影かたぶけるごとくにて\\
\ruby{名}{な}の夕暮に{\GWI{u6d88-k}}えて行く\\
\ruby{秀}{ひい}でし人の\ruby{末路}{は|て}も{\GWI{inaz_u898b-var-001}}き
\vspace*{1zw}

\noindent 春\symbol{"1B048}づかなる\ruby{御園生}{み|その|ふ}の\\
花に{\GWI{u96b1-j}}れて人を\ruby{哭}{な}き\\
秋のひかりの{\GWI{u7abb-j}}に\ruby{倚}{よ}り\\
\ruby{夕雲}{ゆふ|ぐも}とほき友を戀ふ
\vspace*{1zw}

\noindent ひとりの姉をうしなひて\\
大宮内の\ruby{門}{かど}を\ruby{出}{い}で\\
けふ江{\GWI{u6236-t}}川に{\GWI{u4f86-j}}て{\GWI{inaz_u898b-var-001}}れば\\
秋はさみしきながめかな
\vspace*{1zw}

\noindent 櫻の\ruby{霜葉}{しも|は}黄に落ちて\\
ゆきてかへらぬ江{\GWI{u6236-t}}川や\\
流れゆく水\ruby{{\GWI{u975c-ue0109}}}{しづか}にて\\
あゆみは{\GWI{u9045-var-001}}きわがおもひ
\vspace*{1zw}

\noindent おのれも知らず世を\ruby{{\GWI{u7d93-j}}}{ふ}れば\\
若き\ruby{命}{いのち}に{\GWI{u7d55}}へかねて\\
岸のほとりの草を\ruby{藉}{し}き\\
\ruby{{\GWI{u5fae-k}}笑}{ほほ|ゑ}みて泣く吾身かな
\end{shiika}

%あとは省略

\end{document}


以上素人の老人が、皆様に教えられてやっと形になりましたが、ダブリや稚拙な書き方があると思います。なおこれをコンパイルしようとしても、書き忘れでエラーがたつかもしれません。あしからず。疲れましたので検証は省略しましたので。

本当にお世話になりました。ありがとうございます。
mr2h への返信

Re: 変体仮名を使いたいのですが・・・

- mr2h の投稿
補足です。
無検証というのも無責任なので、検証しました。

やはりエラーがありました。

末尾の
\end{document} の直前の%あとは省略を消して、
代わりに次の2行を加えてください。コンパイルできるようになります。


%あとは省略
\end{indentation}


以上です。大変失礼しました。
mr2h への返信

Re: 変体仮名を使いたいのですが・・・

- t tk の投稿
2020年4月頃に試した例がこちらにあります。
uplatex + 開発したばかりの dvipdfmx (TeX Live 2020以降ならOK) + IPAmj明朝 です。
濁点・半濁点付きのグリフは IPAmj明朝に含まれているのにもかかわらず上手く出ない問題があります。
濁点・半濁点のないものは正しく出ていると思います。

Z.R.さんがすでに提示されている例とどれほど違うのか分かっていません。
添付 hentai000.png
t tk への返信

Re: 変体仮名を使いたいのですが・・・

- t tk の投稿
uplatex + dvipdfmx (TeX Live 2020以降) + IPAmj明朝 の組み合わせで 縦組みのテストもしてみました。


添付 hentai001.png
t tk への返信

Re: 変体仮名を使いたいのですが・・・

- mr2h の投稿
tkさん、ありがとうございます。参考になります。もう少し時間をかけて、勉強したいと思います。