harftex上でNoto Color EmojiをsetmainjfontのAltFontとして使えない
書き忘れましたがNoto Color Emojiを使ってもfontspec.styのsetmainfontとharflatexだと以下のファイルから普通にPDFができます。
\RequirePackage{harfload}
\documentclass{minimal}
\usepackage{fontspec}
\setmainfont[RawFeature={mode=harf}]{Noto Color Emoji}
\begin{document}
\noindent
⛄👪⛄💑⛄\\
⛄👨👩👧👦⛄👩❤️💋👨⛄\\
\end{document}
harftex や絵文字についてはノータッチでした.
調べたところ該当ノードは「フォント番号が 0 の文字」という不思議なものになっています(本来のフォント番号は非ゼロのはすです).harftex が何をやっているかまだ追えていないので,とりあえずは絵文字関連は欧文扱い (ALchar) で組む,というのが早いかと思います.
h7k への返信
harftex や絵文字についてはノータッチでした. 調べたところ該当ノードは「フォント番号が 0 の文字」という不思議なものになっています(本来のフォント番号は非ゼロのはすです).harftex が何をやっているかまだ追えていないので,とりあえずは絵文字関連は欧文扱い (ALchar) で組む,というのが早いかと思います.
コメントいただきありがとうございます。Noto Color Emoji + harflatex + luatexja の組み合わせだと仮に絵文字はALchar扱いでもなぜかうまく行きません。例えば下記のファイル(emoji5.pdfと添付)は1行目の⛄がなぜか豆腐になります。
\RequirePackage{harfload}
\documentclass{minimal}
\usepackage{luatexja}
\usepackage{luatexja-fontspec}
\begin{document}
\noindent
\fontspec[RawFeature={mode=harf}]{Noto Color Emoji}
⛄👪⛄💑⛄日本語\\
⛄👨👩👧👦⛄👩❤️💋👨⛄日本語\\
\end{document}
luatexjaを取り除いてNoto Color Emoji + harftexの以下のような組み合わせにすると問題なく組めます。emoji6.pdfとして添付(日本語はフォントに無いから出ないですが)
\RequirePackage{harfload}
\documentclass{minimal}
\usepackage{fontspec}
\begin{document}
\noindent
\fontspec[RawFeature={mode=harf}]{Noto Color Emoji}
⛄👪⛄💑⛄日本語\\
⛄👨👩👧👦⛄👩❤️💋👨⛄日本語\\
\end{document}
追記:⛄が豆腐になるのは⛄がJAcharだからですが、⛄はJAcharのままで他の絵文字はALcharにするということでしょうか?また⛄をALcharにするとZ氏のお気に召さないようなきもします…
以下のファイルをlualatexで処理すると1つ目の雪だるまはJAcharだから豆腐になり2つ目はALcharなのでちゃんと表示されますけどこれはちょっとあんまりな仕様だと個人的には思います…
\documentclass{minimal}
\usepackage{luatexja}
\usepackage{luatexja-fontspec}
\begin{document}
\noindent
\fontspec[RawFeature={+disp}]{Segoe UI Emoji}
⛄☃
\end{document}
⛄が豆腐になるのは⛄がJAcharだからですが、
いわゆる「ゆきだるま3兄弟」の中では,U+2603 SNOWMAN だけ収録されているフォントが多いようです(doraTeX さんのブログ記事). これだけが JIS X 0213 に収録されているから,という理由だと思います.
⛄はJAcharのままで他の絵文字はALcharにするということでしょうか?
どれを JAchar でどれを ALchar に,というのは利用者で決めて構いません. 例えば⛄の属する Unicode ブロック (U+2600--U+26FF) は,標準だと Adobe-Japan1-6 と共通範囲があるので 3 番の文字範囲 (→JAchar) にしているというだけです.プリアンブルに
\ltjdefcharrange{4}{"2600-"26FF}
と書けば 4 番の文字範囲 (→ALchar) になります.h7k への返信
どれを JAchar でどれを ALchar に,というのは利用者で決めて構いません.
ご教示ありがとうございます。了解しました。そういう方針で関係するものを全部以下のようにALcharにして問題なくharflatex+Noto Color Emojiで使えました
\RequirePackage{harfload}
\documentclass{minimal}
\usepackage{luatexja}
\usepackage{luatexja-fontspec}
\ltjdefcharrange{4}{"200D,"2600-"26FF,"2764,"FE0F}
\begin{document}
\noindent
\fontspec[RawFeature={mode=harf}]{Noto Color Emoji}
⛄👪⛄💑⛄日本語\\
⛄👨👩👧👦⛄👩❤️💋👨⛄\\
\end{document}
このチケットなんですが、最新のluatexja, luahblatex, luaotfload 3.1 + https://github.com/latex3/luaotfload/commit/0431ba41e195728dc7ac726891cbd7217705c2c0 の組み合わせで以下のファイルを問題なく処理してPDFできたので、クローズしても問題ないかもしれません。できたファイルをjatest8.pdfとして添付します。
\documentclass{minimal}
\usepackage{luatexja}
\usepackage{luatexja-fontspec}
\ltjsetparameter{jacharrange={+4,+8}}
\setmainjfont[
AltFont={
{Range={"200D,"2600-"27FF,"FE0F,"1F300-"1FAFF},
Font={Noto Color Emoji},RawFeature={mode=harf},YokoFeatures={JFM=prop}}}
]{IPAexMincho}
\begin{document}
\noindent
\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{"200D}}\\
\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{"FE0F}}\\
⛄👪⛄💑⛄\\
⛄👨👩👧👦⛄👩❤️💋👨⛄\\
\end{document}
\RequirePackage{harfload} \documentclass{minimal} \usepackage{luatexja} \usepackage{luatexja-fontspec} \ltjsetparameter{jacharrange={+4,+8}} \setmainjfont[ AltFont={ {Range={"200D,"2600-"27FF,"FE0F,"1F300-"1FAFF}, Font={Noto Color Emoji},RawFeature={mode=harf},YokoFeatures={JFM=prop}}} ]{IPAexMincho} \begin{document} \noindent \ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{"200D}}\\ \ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{"FE0F}}\\ ⛄👪⛄💑⛄\\ ⛄👨👩👧👦⛄👩❤️💋👨⛄\\ \end{document}上記のファイルをharflatex 0.4.1で処理すると
warning (node filter): error: ...live/2019/texmf-dist/tex/luatex/luatexja/ltj- jfmglue.lua:583: attempt to index a nil value (local 'm') . \newpage ...k \@nobreakfalse \everypar {}\fi \par \ifdim \prevdepth >\z@ \vs...というエラーが出てコンパイルが止まる現象です。Noto Color EmojiのところをWindows 10付属のSegoe UI Emojiにすると完璧に期待通りのPDFができます。