-
Notifications
You must be signed in to change notification settings - Fork 2
/
bxcoloremoji-ja.tex
671 lines (571 loc) · 27.7 KB
/
bxcoloremoji-ja.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
% 文字コードは UTF-8
% lualatex で組版する
\documentclass[a4paper]{ltjsarticle}
\renewcommand{\headfont}{\romanseries{sbc}\sffamily}
\usepackage{xcolor}
\definecolor{myblue}{rgb}{0,0,0.75}
\definecolor{mygreen}{rgb}{0,0.45,0}
\usepackage[colorlinks,
plainpages, % avoid problems on coloremojikeycap numbering
hyperfootnotes=false]{hyperref}
\hypersetup{linkcolor=myblue,urlcolor=mygreen,
pdftitle={bxcoloremojiパッケージ},
pdfauthor={八登崇之}}
\usepackage{bxtexlogo}
\bxtexlogoimport{*,TL-e}
\usepackage{shortvrb,alltt}
\MakeShortVerb{\|}
\usepackage[verb]{bxghost}
\usepackage[twemojis]{bxcoloremoji}
\newcommand{\CE}[1]{\coloremoji{#1}}
\newcommand{\CC}[1]{\coloremojicode{#1}}
\newcommand{\PkgVersion}{0.22}
\newcommand{\PkgDate}{2024/09/16}
\newcommand{\Pkg}[1]{\textsf{#1}}
\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
\newcommand{\RMeta}[1]{{\Meta{\rmfamily#1}}}
\newcommand{\Note}{\par\noindent ※}
\newcommand{\Means}{:\quad}
\newcommand{\wbr}{\linebreak[0]}
\newcommand{\nobr}{\nolinebreak[4]}
\newcommand{\/}{\mbox{}/\mbox{}}
\newcommand{\EG}{\eghostguarded}
\newcommand{\cs}[1]{\symbol{`\\}#1}
\providecommand{\Strong}[1]{{\headfont#1}}
\pagenumbering{coloremojikeycap}% ;-)
%-----------------------------------------------------------
\begin{document}
\title{\Pkg{bxcoloremoji} パッケージ}
\author{八登崇之\ (Takayuki YATO; aka.~“ZR”)}
\date{v\PkgVersion\quad[\PkgDate]}
\maketitle
\begin{abstract}
\Pkg{bxcoloremoji}パッケージは{\LaTeX}文書において
カラー絵文字を出力するためのものである。
他の類似の機能をもつパッケージと比較すると、
本パッケージは以下の特徴をもつ。
\begin{itemize}
\item 全ての主要な{\LaTeX}エンジンをサポートする。
\item 文字自体、Unicode符号値、短縮名での入力が可能。
\item \Pkg{hyperref}使用時にPDF文字列の中でも妥当に動作する。
\item 和文組版環境でも絵文字を適切に取り扱える。
\end{itemize}
\end{abstract}
\tableofcontents
%===========================================================
\section{前提環境}
\label{sec:Prerequisites}
\begin{itemize}
\item フォーマット\Means {\LaTeX}
\item エンジン\Means {\eTeX}拡張をサポートするもの
\item DVIウェア(DVI出力時)\Means
用いる画像形式に対応したもの
\item 依存パッケージ\Means
\begin{itemize}
\item \Pkg{etoolbox}
\item \Pkg{binhex}(expl3が有効でない場合)
\item \Pkg{bxghost}(条件により)
\item \Pkg{twemojis}(twemojisモードの場合)
\end{itemize}
\end{itemize}
%===========================================================
\section{パッケージ読込}
\label{sec:Loading}
DVI出力の場合、事前に\Pkg{graphicx}パッケージと
\Pkg{color}(または\Pkg{xcolor})パッケージ
\footnote{現状では\Pkg{(x)color}パッケージの機能はある種の
フォールバック出力の際にのみ用いられる。
\Pkg{(x)color}が未読込の場合は色を使わず黒色で出力する。
(実際に絵文字画像が出力される場合には影響しない。)}%
を読み込む必要がある。
\Note PDF出力の場合、
およびグローバルのドライバオプションが指定されている場合は、
自動的に\Pkg{graphicx}と\Pkg{color}%
\footnote{\Pkg{color}パッケージの自動読込は{\LaTeX}カーネルの版が
2021-06-01以降である場合にのみ行われる。}%
がオプション無しで読み込まれる。
\begin{quote}\small\begin{verbatim}
\usepackage[dvipdfmx]{graphicx,color} % dvipdfmx の場合
\end{verbatim}\end{quote}
また、昔の(2018-04-01以前の)(pdf){\LaTeX}および{\pLaTeX}の場合は、
|utf8|入力エンコーディングを有効化する必要がある。
\begin{quote}\small\begin{verbatim}
\usepackage[utf8]{inputenc}
\end{verbatim}\end{quote}
その後に\Pkg{bxcoloremoji}パッケージを読み込む。
\begin{quote}\small\begin{alltt}
\cs{usepackage}[\RMeta{オプション}]\{bxcoloremoji\}
\end{alltt}\end{quote}
利用可能なオプションは以下の通り。
\begin{itemize}
\item \Strong{設定パラメタ}\Means
\ref{sec:Parameters}節に挙げる設定パラメタ
(例えば|twemoji-png|や|scale|等)
はパッケージオプションとしても指定できる。
\item |jatype=|\Meta{値}\Means
絵文字を和文文字として扱うか。
\Note この値に関わらず、|*|付の命令
(|\coloremoji*|等)は常に和欧文中立な“画像”として扱われる。
\Note 和文扱いを行わない場合は|*|無と|*|付はどちらも
“画像扱い”になるが|size|/|size*|指定時は異なる出力になりうる。
\begin{itemize}
\item |auto|(既定)\Means
(u){\pLaTeX}であるかまたは{\LuaLaTeX}で
\Pkg{LuaTeX-ja}が用いられている場合に和文扱いを行う。
\item |true|\Means
可能な限り、和文扱いを行うことを試みる。
\Note 現状では{\pdfLaTeX}\/{}欧文{\LaTeX}では効果がない。
\item |false|\Means
和文扱いを行わない。
\end{itemize}
\end{itemize}
以下は上級者向けの設定。
\begin{itemize}
\item |nodvidriver|\Means
ドライバ依存の動作を抑止する。
具体的には、絵文字画像セット種別が|no-image|に固定される
(絵文字は表示されない)。
\item |resetdvidriver|\Means
|nodvidriver|の否定。
\item |names=|\Meta{真偽値}\Means
短縮名データベースを読み込むか。
既定値は|true|。
\Note |false|を指定した場合、独自短縮名
(\ref{sec:Short-Names}節参照)のみが使用可能になる。
\item |preload-names=|\Meta{値}\Means
短縮名データベースをパッケージ読込時に一括して読み込むか。
\Note |false|は昔の“メモリ容量が少ない{\TeX}エンジン”向けの設定。
\begin{itemize}
\item |auto|(既定)\Means
以下の条件の\Strong{何れか}を満たす場合は
(メモリが十分にあると判断して)
|true|、それ以外は|false|。
\begin{itemize}
\item エンジンが{\XeLaTeX}\/{\LuaLaTeX}\/{\upLaTeX}である。
\item expl3が有効である。
\item \Pkg{hyperref}が読み込まれている。
\end{itemize}
\item |true|\Means
パッケージ読込時に全てのデータを読み込む。
\item |false|\Means
必要に応じて読み込む。
\end{itemize}
\item |bbparam=|\Meta{値}\Means
絵文字出力の|\includegraphics|に|bb|パラメタを指定するか。
\begin{itemize}
\item |auto|(既定)\Means
\Pkg{graphicx}のドライバがdvipdfmxである場合にのみ指定する。
\Note dvipdfmxの場合、|bb|を指定した方が動作が速い。
\item |true|\/|false|\Means
常に指定する/しない。
\Note |bb|設定が禁止されているドライバもあるので注意。
\end{itemize}
\item |bxghost=|\Meta{値}\Means
和文ゴースト処理のために\Pkg{bxghost}パッケージ
\footnote{\Pkg{bxghost}パッケージ\Means
\url{https://ctan.org/pkg/bxghost}}%
を利用するか。
\Note |jatype|が偽の場合は和文ゴースト処理自体が行われないため無効
(利用しない)。
\begin{itemize}
\item |auto|(既定)\Means
次の条件を\Strong{全て}満たす場合に利用する。
\begin{itemize}
\item エンジンが\EG{(u)\pLaTeX}である、
または、{\LuaLaTeX}であってかつ
本パッケージ\Strong{読込時点}で\Pkg{LuaTeX-ja}が読み込まれている。
\item \Pkg{bxghost}の0.3.0版以降がインストールされている。
\end{itemize}
\item |true|\Means
利用する(常に\Pkg{bxghost}を読み込もうとする)。
\Note {\LuaLaTeX}上では\Pkg{bxghost}は\Pkg{LuaTeX-ja}を
必ず読み込むことに注意。
\item |false|\Means
利用しない。
\Note この場合、和文ゴースト処理が失敗する可能性がある。
\end{itemize}
\item |pua=|\Meta{真偽値}\Means
Unicode私用領域の文字を絵文字として扱うか。
既定値は|false|。
\end{itemize}
%===========================================================
\section{パラメタ設定}
\label{sec:Parameters}
パラメタ設定は以下の方法で利用できる。
\begin{itemize}
\item パッケージオプションに指定する。
\begin{quote}\small\begin{verbatim}
\usepackage[twemoji-png,scale=2]{bxcoloremoji}
\end{verbatim}\end{quote}
\item
|\coloremojisetup|命令の引数に指定する。
その場で設定が変更されて、以降の絵文字出力命令に適用される。
\begin{quote}\small\begin{verbatim}
\coloremojisetup{twemoji-png,scale=2}
\end{verbatim}\end{quote}
\item
絵文字出力命令の先頭のオプション引数に指定する。
その絵文字出力にのみ設定が適用される。
\begin{quote}\small\begin{alltt}
\cs{coloremoji}[twemoji-png,scale=2]\{\CE{☃}\}
\end{alltt}\end{quote}
\end{itemize}
利用可能なパラメタは以下の通り。
\begin{itemize}
\item \Strong{絵文字画像セット}の種別を指定するもの。
(既定値=|twemoji-pdf|)
\begin{itemize}
\item |twemoji-pdf|\Means
twemojiのSVG画像から変換したPDF画像。
\item |twemoji-png|\Means
twemojiの72ピクセルのPNG画像。
\item |twemojis|\Means
画像出力を\Pkg{twemojis}パッケージ
\footnote{\Pkg{twemojis}パッケージ\Means
\url{https://ctan.org/pkg/twemojis}}%
の絵文字出力命令に移譲する(twemojisモード)。
\Note 詳細は\ref{sec:Twemojis-Mode}節を参照。
\item |family=|\Meta{名前}\Means
カスタムファミリ指定(\ref{sec:Custom-Families}節参照)。
\item |no-image|\Means
絵文字画像を使わず全てフォールバック出力にする。
\end{itemize}
\item |size=|\Meta{長さ}\Means
|*|無命令での絵文字のサイズ。
\item |size*=|\Meta{長さ}\Means
|*|付命令での絵文字のサイズ。
\Note |size|および|size*|の既定値は\EG{(u)\pLaTeX}では1\,zw、
{\LuaLaTeX}+\Pkg{LuaTeX-ja}では 1\,|\zw|、それ以外は1\,em。
この既定値は|jatype|の設定には影響されない。
\item |scale=|\Meta{実数}\Means
絵文字のサイズを、|size|\/|size*|で指定した値からさらに
指定の倍率で変更する。
(既定値=1)
\end{itemize}
%===========================================================
\section{使い方}
\label{sec:Usage}
命令・環境名が\EG{[|*|]}付
(例えば|\coloremoji|[|*|])で示されている場合、
実際には「|*|無」(|\coloremoji|)と「|*|付」(|\coloremoji*|)の
変種が存在することを示す。
両者の違いは以下の通り。
\begin{itemize}
\item |jatype|オプションにより和文扱いが有効になっている場合は、
|*|無は和文扱いで、|*|付は和欧文中立な“画像扱い”になる。
ただし数式中は両者ともに“画像扱い”になる。
\item |size|オプションは|*|無にのみ、|size*|オプションは|*|付にのみ
適用される。
(|scale|は両方に適用される。)
\end{itemize}
\EG{[|*|]}以外の|[...]|表記はオプション引数で、
これは実際に|[ ]|で囲った形で指定する。
\Note 本パッケージの命令については、
必須引数を囲む|{}|は\Strong{省略できない}。
%--------
\subsection{基本的な絵文字出力命令}
\begin{itemize}
\item |\coloremojisetup{|\Meta{設定}|}|\Means
パラメタ設定(\ref{sec:Parameters}節参照)を変更する。
\Note \Meta{設定}は“\Meta{キー}|=|\Meta{値}|,…|”の形のリスト。
以降も同様。
\item |\coloremoji|[|*|]|[|\Meta{設定}|]{|\Meta{文字列}|}|\Means
引数の文字列を絵文字として出力する。
ただし、対象の画像がないなどの理由で絵文字として出力できない場合は、
通常のテキスト出力にフォールバックする。
\newcommand*{\ExAA}{\coloremoji{🍣3️⃣🙃☃}}
\begin{quote}\small\begin{alltt}
\cs{coloremoji}\{\ExAA\}%出力:\ExAA
\end{alltt}\end{quote}
\item |\coloremojicode|[|*|]|[|\Meta{設定}|]{|\Meta{符号値列}|}|\Means
文字を「Unicode符号値」または
「JoyPixelsのemoji-toolkitライブラリ
\footnote{emoji-toolkitライブラリ\Means
\url{https://github.com/joypixels/emoji-toolkit}}%
で規定された短縮名」
で入力してカラー絵文字を出力する。
引数は、符号値で指定する場合はその16進表記、
短縮名で指定する場合は“|:|\Meta{短縮名}|:|”の形式で入力し、
複数文字を入力する場合は各文字の指定をを空白区切りで並べる。
\newcommand*{\ExAB}{%
\coloremojicode{:sushi: 23 FE0F 20E3 1F643 :snowman:}}
\begin{quote}\small\begin{alltt}
\cs{coloremojicode}\{:sushi: 23 20E3 1F643 :snowman:\}%出力:\ExAB
\end{alltt}\end{quote}
\Note 以降、この入力方式を「\Strong{符号値列}」と呼称する。
\item |\coloremojiucs|[|*|]|[|\Meta{設定}|]{|\Meta{符号値列}|}|\Means
|\coloremojicode|の旧版における別名。
\Note 他の|coloremojicode~|の名前の命令・環境については、
0.4版以前から存在するものについては、同様に
|coloremojiucs~|という別名が用意されている。
\end{itemize}
%--------
\subsection{キーキャップ絵文字を出力するカウンタ出力命令}
0~10の整数値を、値に対応するキーキャップ絵文字
(\CE{0️⃣}~\CE{🔟})
で出力する。
\Note 入力値が範囲外の場合はフォールバック出力になる。
\begin{itemize}
\item |\coloremojikeycapof|[|*|]|[|\Meta{設定}|]{|\Meta{整数}|}|\Means
入力の整数値に対応するキーキャップ絵文字を出力する。
\newcommand*{\ExBA}{\coloremojikeycapof{8}}
\begin{quote}\small\begin{alltt}
\cs{coloremojikeycapof}\{8\}%出力:\ExBA
\end{alltt}\end{quote}
\item |\coloremojikeycap|[|*|]|[|\Meta{設定}|]{|\Meta{カウンタ名}|}|\Means
指定のカウンタの現在の値に対応するキーキャップ絵文字を出力する。
\item |\pagenumbering{coloremojikeycap}|\Means
ページ番号の形式をキーキャップ絵文字に変更する。
\Note 本文書で実際に|\pagenumbering{coloremojikeycap}|が
指定されている。
\end{itemize}
%--------
\subsection{pifontパッケージ類似の機能}
\Pkg{pifont}パッケージの機能
(|\dingfill|命令、|dingautolist|環境など)
の絵文字版に相当する、以下の命令が提供される。
\Note この小節で挙げる機能の絵文字出力は、
常に|*|付命令であるかのように動作する。
また、|*|やパラメタ設定オプションを付けることはできない。
\begin{coloremojiautolist}{1️⃣}
\item |\coloremojifill{|\Meta{文字列}|}|\Means
充填命令(|\dotfill|の類)の一種で、
|\coloremoji*{|\Meta{文字列}|}| の出力を複数並べて行を充填する。
\item |\coloremojiline{|\Meta{文字列}|}|\Means
絵文字による飾り罫を出力する。
すなわち|\coloremojifill{|\Meta{文字列}|}|の出力
(ただし両端に若干の空きを入れる)
のみを含む独立した行を出力する。
\item |\begin{coloremojilist}{|\Meta{文字列}|}|~%
|\end{coloremojilist}|\Means
|\coloremoji{|\Meta{文字列}|}|の出力を項目ラベルとする
箇条書きを出力する。
\item |\begin{coloremojiautolist}{|\Meta{文字列}|}|~%
|\end{coloremojiautolist}|\Means
これも絵文字を項目ラベルとする箇条書きを出力する環境であるが、
引数には何れかの「絵文字順序列」に含まれる絵文字の一つを
指定する必要がある。
その文字から始まる順序列に従ってラベルを指定する。
例えば
|\begin{coloremojiautolist}{|\CE{♠}|}|%
では、先頭のラベルが「\CE{♠️}」となり
以下「\CE{♥️}」「\CE{♦️}」「\CE{♣️}」と続く。
\Note 現状の実装では順序列の末尾に達した場合は先頭に戻る
(つまり「\CE{♣️}」の次は「\CE{♠️}」になる)
が、これは将来的に変更される可能性がある。
\Note この箇条書きは
|\begin{coloremojiautolist}{|\CE{1️⃣}|}|で生成されている。
\item 以上の命令・環境について、引数に符号値列を指定する版も存在する。
\begin{coloremojilist}{✏}
\item |\coloremojicodefill{|\Meta{符号値列}|}|
\item |\coloremojicodeline{|\Meta{符号値列}|}|
\item |\begin{coloremojicodelist}{|\Meta{符号値列}|}|
\item |\begin{coloremojicodeautolist}{|\Meta{符号値列}|}|
\end{coloremojilist}
\end{coloremojiautolist}
現状では、以下に挙げる「絵文字順序列」が定められている。
\begin{itemize}
\item
\CE{♈️}→\CE{♉️}→\CE{♊️}→\CE{♋️}→\CE{♌️}→\CE{♍️}→\CE{♎️}→\CE{♏️}→\CE{♐️}→\CE{♑️}→\CE{♒️}→\CE{♓️}
\item
\CE{♠️}→\CE{♥️}→\CE{♦️}→\CE{♣️}
\item
\CE{🕐️}→\CE{🕑️}→\CE{🕒️}→\CE{🕓️}→\CE{🕔️}→\CE{🕕️}→\CE{🕖️}→\CE{🕗️}→\CE{🕘️}→\CE{🕙️}→\CE{🕚️}→\CE{🕛️}
\item
\CE{0️⃣}→\CE{1️⃣}→\CE{2️⃣}→\CE{3️⃣}→\CE{4️⃣}→\CE{5️⃣}→\CE{6️⃣}→\CE{7️⃣}→\CE{8️⃣}→\CE{9️⃣}→\CE{🔟}
\end{itemize}
%===========================================================
\section{絵文字の“短縮名”}
\label{sec:Short-Names}
「符号値列」中で用いる絵文字の短縮名については
JoyPixels(旧称EmojiOne)のemoji-toolkitライブラリで
規定する名前が利用できる。
その他に表\ref{tbl:special-names}にある
\Strong{独自短縮名}が利用できる。
\Note これらはemoji sequenceの入力の便宜のためのものである。
\newcommand*{\cTC}{\multicolumn{2}{l}}
\begin{table}[!t]
\centering\small
\caption{独自短縮名の一覧}\label{tbl:special-names}
\begin{tabular}{@{\quad}llll@{\quad}}
\hline
|+| & U+200D & & (ZWJ)\\
|/1| & U+1F3FB &\CE{🏻}& (light skin tone修飾子)\\
|/2| & U+1F3FC &\CE{🏼}& (medium-light skin tone修飾子)\\
|/3| & U+1F3FD &\CE{🏽}& (medium skin tone修飾子)\\
|/4| & U+1F3FE &\CE{🏾}& (medium-dark skin tone修飾子)\\
|/5| & U+1F3FF &\CE{🏿}& (dark skin tone修飾子)\\
|!/red| & U+1F9B0 &\CE{🦰}&(“|+ !/red|”で赤髪のhair style)\\
|!/curly| & U+1F9B1 &\CE{🦱}&(“|+ !/curly|”で巻毛のhair style)\\
|!/bald| & U+1F9B2 &\CE{🦲}&(“|+ !/bald|”で禿頭のhair style)\\
|!/white| & U+1F9B3 &\CE{🦳}&(“|+ !/white|”で白髪のhair style)\\
|!black| & U+2B1B &\CE{⬛}&(“|+ !black|”で黒色のcolor indicator)\\
|!white| & U+2B1C &\CE{⬜}&(“|+ !white|”で白色のcolor indicator)\\
|!red| & U+1F7E5 &\CE{🟥}&(“|+ !red|”で赤色のcolor indicator)\\
|!blue| & U+1F7E6 &\CE{🟦}&(“|+ !blue|”で青色のcolor indicator)\\
|!orange| & U+1F7E7 &\CE{🟧}&(“|+ !orange|”で橙色のcolor indicator)\\
|!yellow| & U+1F7E8 &\CE{🟨}&(“|+ !yellow|”で黄色のcolor indicator)\\
|!green| & U+1F7E9 &\CE{🟩}&(“|+ !green|”で緑色のcolor indicator)\\
|!purple| & U+1F7EA &\CE{🟪}&(“|+ !purple|”で紫色のcolor indicator)\\
|!brown| & U+1F7EB &\CE{🟫}&(“|+ !brown|”で茶色のcolor indicator)\\
|!female| & U+2640 &\CE{♀}& (“|+ !female|”で女性のgender indicator)\\
|!male| & U+2642 &\CE{♂}& (“|+ !male|”で男性のgender indicator)\\
|!flag| & U+1F3F4 &\CE{🏴}& (旗を表すtag sequenceのbase文字)\\
|!<| & U+2B05 &\CE{⬅}& (“|+ !<|”で左のdirection indicator)\\
|!>| & U+27A1 &\CE{➡}& (“|+ !>|”で右のdirection indicator)\\
|!A|~|!Z| &\cTC{U+1F1E6~1F1FF}& (flag sequenceの構成要素)\\
|@| & U+E007F & & (tag sequenceの終端)\\
|@0|~|@9| &\cTC{U+E0030~E0039}& (tag sequenceの構成要素)\\
|@a|~|@z| &\cTC{U+E0061~E007A}& (tag sequenceの構成要素)\\
\hline
\end{tabular}
\end{table}
\Note 独自短縮名については名前を囲む|:|~|:|は省略可能である。
\Note 独自短縮名以外の短縮名については、現状では
「整数の16進表記と解釈できないものは|:|~|:|が省略可能」
という仕様であるが、これは将来変更される可能性がある。
使用例\Means
\newcommand*{\ExA}{\CC{:man: + :woman: + :girl: + :girl:}}
\newcommand*{\ExB}{\CC{!flag @g @b @w @l @s @}}
\newcommand*{\ExC}{\CC{1F647 + !male}}
\begin{quote}\small\begin{alltt}
\cs{coloremojicode}\{:man: + :woman: + :girl: + :girl:\}%出力:\ExA
\cs{coloremojicode}\{!flag @g @b @w @l @s @\}%出力:\ExB
\cs{coloremojicode}\{1F647 + !male\}%出力:\ExC
\end{alltt}\end{quote}
%===========================================================
\section{PDF文字列中での絵文字の利用}
\label{sec:PDF-Strings}
\Pkg{hyperref}パッケージ使用時の文書情報文字列
(以降では「\Strong{PDF文字列}」と呼ぶ)
の入力の中でも絵文字出力用の命令を使用できる。
例えば、|\section|の引数の中で|\coloremoji|を含めた場合、
版面の上では絵文字(の画像)として出力され、
PDFのしおりの中では文字として表示される。
ただし
「PDF文字列中のUnicode文字が正しく処理される」
状態が担保されていることが前提となる。
具体的には、次の何れかが満たされる必要がある。
\Note {\TeX}~Live 2022以降を前提とすると、要するに
「{(u)\pLaTeX}では\Pkg{pxjahyper}の併用が必要、それ以外は何も要らない」
ということである。
\begin{itemize}
\item \Pkg{hyperref}の“PDFエンコーディング”がUnicodeである。
最近(7.00g版以降)の\Pkg{hyperref}では既定でそうなっている。
それより古い版では\Pkg{hyperref}の読込時に
|unicode|オプションを付ける必要がある。
\EG{(u)\pLaTeX}では\Pkg{pxjahyper}パッケージを併用する必要がある。
\begin{quote}\small\begin{verbatim}
\usepackage[unicode]{hyperref}
\end{verbatim}\end{quote}
\item (\Pkg{hyperref}の“PDFエンコーディング”がUnicode ではないが)
エンジンが{\upLaTeX}であり、\Pkg{pxjahyper}パッケージを併用している。
\Note {\pLaTeX}ではそもそもPDF文字列中にJIS外の文字を含ませることが
できないため、この場合は対応ができない。
\end{itemize}
%===========================================================
\section{カスタムファミリ}
\label{sec:Custom-Families}
\Pkg{bxcoloremoji}では実際の絵文字の表示に
twemoji の画像を使っているが、
その代わりに、ユーザが用意した一連の画像ファイル群を
「\Strong{カスタムファミリ}」として登録して表示に使うことができる。
例として、noto-emojiレポジトリ
\footnote{noto-emojiレポジトリ\Means
\url{https://github.com/googlefonts/noto-emoji}}%
の中(|png/128/|以下)に含まれる一連のPNG画像を
|notoemoji|ファミリとして登録する手順を示す。
%--------
\subsection{手順①:設定ファイルを作成する}
カスタムファミリの登録には設定ファイルが必要であり、その名前は
|bxcoloremoji-|\Meta{ファミリ名}|.cfg|%
である。
今の例では|bxcoloremoji-notoemoji.cfg|を作成して
{\TeX}から見える位置に配置することになる。
設定ファイルの書式は以下の通りである。
\begin{quote}\small\begin{verbatim}
% prefix: 画像ファイルのパス名接頭辞
prefix = notoemoji/notoemoji-
% extension: 画像ファイルの拡張子
extension = png
% bbox = 画像の bounding box の値 (省略可)
bbox = 0 0 128 128
\end{verbatim}\end{quote}
|bbox|は dipdfmxでの画像の読込を高速化するための指定であり、
省略することもできる。
全ての画像ファイルのbounding boxが一致しているのではない場合は
省略するしかない。
\Note |bbox|が使われるかは実際には|bbparam|パッケージオプションの
指定により決められる。
|prefix|は画像ファイルの(Kpathsea上の)パス名を決定するのに使われる。
上の設定の場合、例えば、
「U+2603\CE{☃}|:snowman2:|」
の画像ファイルのパス名は
|notoemoji/notoemoji-2603.png|となる。
%--------
\subsection{手順②:画像ファイルを改名して配置する}
パス名の命名規則は以下の通りである。
\begin{itemize}
\item 絵文字を構成するUnicode文字の符号値の16進表記
(0埋め無し、大文字)を順に“|-|”でつないだものを「符号値列」とする。
\Note ただしEVS(U+FE0F)は除外される。
例えば、
\CE{2️⃣} 〈0032 FE0F 20E3〉%
に対する「符号値列」は|32-20E3|となる。
\item “\Meta{prefixの値}\Meta{符号値列}|.|\Meta{extensionの値}”
がパス名である。
\end{itemize}
noto-emojiの各々の画像ファイルをこの規則に従って配置する。
例えば、
「U+2603\CE{☃}」の画像ファイル
(元の名前は|emoji_u2603.png|)について、
|notoemoji/notoemoji-2603.png|のパス名で読める位置に配置する。
\Note 例えば、Kpathsea変数|$TEXINPUTS|に
ディレクトリ|~/texmf/tex/latex//|が含まれる場合、
画像ファイルを
|~/texmf/tex/latex/custom_images/notoemoji/notoemoji-2603.png|\
に置くことができる。
%===========================================================
\section{twemojisモード}
\label{sec:Twemojis-Mode}
0.17版から「twemojisモード」がサポートされた。
このモードでは絵文字出力の方法が
「用意した画像ファイルを読み込む」ものから
「\Pkg{twemojis}パッケージ
\footnote{\Pkg{twemojis}パッケージ(再掲)\Means
\url{https://ctan.org/pkg/twemojis}}%
の命令を実行する」ものに変更される。
これにより、大規模な画像ファイルセットのインストールが不要になるという
メリットが得られる。
もちろん、代わりに\Pkg{twemojis}パッケージのインストールが必要になるが、
\Pkg{twemojis}は{\TeX}~Liveに含まれているので、
全体の手間は減ることが期待できるだろう。
twemojisモードに切り替えるには設定パラメタとして|twemojis|を指定する。
例えば、パッケージオプションに指定すればよい。
\begin{quote}\small\begin{verbatim}
\usepackage[twemojis]{bxcoloremoji}
\end{verbatim}\end{quote}
補足事項\Means
\begin{itemize}
\item twemojisモードは
「絵文字画像セットの選択肢の一つ」
という位置づけである。
従って「サポートされる絵文字の範囲が異なる」ことを除いて、
他の絵文字画像セットを用いる場合と同じ機能が提供される。
和文周りの調整も従来通りに機能する。
\item 絵文字出力時の内部処理の最終段階の
「画像を|\includegraphics|で出力する」処理を
「\Pkg{twemojis}の|\texttwemoji|を実行する」処理
(これも究極的には|\includegraphics|である)
に置き換えている。
\item |twemojis|オプションを
\Strong{パッケージオプションとして指定}した場合は、
\Pkg{twemojis}パッケージが自動で読み込まれる。
(ただし\Pkg{graphicx}の自動読込の条件を満たす場合に限る。)
これ以外の
(例えば命令のオプションに指定する)
場合は\Pkg{twemojis}を別途読み込む必要がある。
\end{itemize}
%===========================================================
\end{document}
%% EOF