Ticket #39514

harftex上でNoto Color EmojiをsetmainjfontのAltFontとして使えない

Date d'ouverture: 2019-08-27 15:19 Dernière mise à jour: 2019-11-14 03:27

Rapporteur:
Propriétaire:
(Aucun)
Type:
État:
Atteints
Composant:
Jalon:
(Aucun)
Priorité:
1 - le plus bas
Sévérité:
1 - le plus bas
Résolution:
Fixed
Fichier:
3

Détails

\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ができます。

Ticket History (3/13 Histories)

2019-08-27 15:19 Updated by: emojifreak
  • New Ticket "harftex上でNoto Color EmojiをsetmainjfontのAltFontとして使えない" created
2019-08-27 15:52 Updated by: emojifreak
Commentaire

書き忘れましたが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}
(Edited, 2019-08-27 16:02 Updated by: emojifreak)
2019-08-27 18:08 Updated by: h7k
Commentaire

harftex や絵文字についてはノータッチでした.

調べたところ該当ノードは「フォント番号が 0 の文字」という不思議なものになっています(本来のフォント番号は非ゼロのはすです).harftex が何をやっているかまだ追えていないので,とりあえずは絵文字関連は欧文扱い (ALchar) で組む,というのが早いかと思います.

2019-08-27 20:04 Updated by: emojifreak
Commentaire

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氏のお気に召さないようなきもします…

(Edited, 2019-08-27 20:10 Updated by: emojifreak)
2019-08-27 20:18 Updated by: emojifreak
Commentaire

以下のファイルをlualatexで処理すると1つ目の雪だるまはJAcharだから豆腐になり2つ目はALcharなのでちゃんと表示されますけどこれはちょっとあんまりな仕様だと個人的には思います…

\documentclass{minimal}
\usepackage{luatexja}
\usepackage{luatexja-fontspec}
\begin{document}
\noindent
\fontspec[RawFeature={+disp}]{Segoe UI Emoji}
⛄☃
\end{document}
2019-08-27 20:33 Updated by: h7k
Commentaire

⛄が豆腐になるのは⛄が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) になります.
% \ltjjachar`☃ とすれば常に JAchar で出力されますし.

2019-08-27 21:00 Updated by: emojifreak
Commentaire

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}
2019-11-10 19:09 Updated by: h7k
  • Composant Update from (Aucun) to luahbtex 対応
2019-11-11 07:51 Updated by: emojifreak
Commentaire

このチケットなんですが、最新の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}
2019-11-14 03:27 Updated by: h7k
  • État Update from Ouvert to Atteints
  • Résolution Update from Aucun to Fixed

Attachment File List

Modifier

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Connexion