マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

XeTeX ではフォントの属性として色が扱える

qa:56483 は XeTeX ではどうなるのかという話。

XeTeX ではフォントの属性(特性値)として「色」が指定できる。例えば、次のようにして「赤いフォント」を定義できる。

\font\redipaexmin="IPAex明朝:color=FF0000"

XeLaTeX(fontspec パッケージ)では、特性値 Color を指定する。

\newfontfamily\redipaexmin[Color=FF0000]{IPAex明朝}

フォントが色をもつということが意味するのは、内部の組版結果*1の中でも各「文字」が色を持っているのであり、色付きの文字群の前後に「色変更」の命令(special 等)がある形式でないということである。だから、この仕組みを使えば、「一連のテキストが分割されたときに色設定が破綻する」問題はそもそも起きない。以下では、qa:56483 のサンプルをフォントの色属性を用いて実現した例を挙げる。

% 文字コードは当然 UTF-8
\documentclass[twocolumn]{article}
% 日本語のナントカは本質でないので適当に済ませる
\XeTeXlinebreaklocale "ja"
\XeTeXlinebreakskip=0pt plus 1pt
\XeTeXlinebreakpenalty=0
\usepackage{fontspec}
\setmainfont{IPAex明朝}
% 原理的には color パッケージも不要
% (実際は fontspec が内部で読み込む)
%\usepackage{color}
\textheight2cm
\begin{document}
  % \addfontfeature で特性値を追加している
A\footnote{{\addfontfeature{Color=FF0000}%
あああああああああああああ%
あああああああああああああ%
あああああああああああああ%
あああああああああああああ% 長くしないと次段に
あああああああああああああ% 回らないのは article
あああああああああああああ% だからかな?
あああああああああああああ%
あああああああああああああ%
あああああああああああああ%
あああああああああああああ}}
\end{document}

注意すべき点として、この方式は、color パッケージの色指定とは完全に別系統として存在するということである。((color での指定は \rule にも効くという違いもある。))xecolor というパッケージを用いれば、color パッケージと類似の文法で「フォントの色」が扱えるようだが、やはり別系統であることは変わらない。

*1:ここでは「水平リスト」を指す。