[XeTeX] Diacritics in color
Ross Moore
ross.moore at mq.edu.au
Wed Nov 30 21:23:02 CET 2011
Hi Heiko, and others
On 30/11/2011, at 8:56 PM, Heiko Oberdiek wrote:
> The PDF stuff:
>
> % without color:
> 0 -99.63 Td[<0024>]TJ
> 54.19 15.57 Td[<0301>]TJ
>
> % with color:
> -54.19 -115.2 Td[<0024>]TJ
> ET 1 0 0 RG 1 0 0 rg BT /F1 99.626 Tf
> 59.3 -278.84 Td[<0301>]TJ
>
> % with color via \special{pdf:code ...}:
> 0 -378.46 Td[<0024>]TJ
> ET 1 0 0 rg 1 0 0 RG BT /F1 99.626 Tf
> 59.3 -378.46 Td[<0301>]TJ
>
> It seems that in XeTeX the color cannot be inserted without
> breaking the PDF text sections (BT...ET). \special{pdf:literal direct ...}
> (or short \special{pdf:code ...}) is not equivalent to
> \pdfliteral direct{...} but rather to \pdfliteral page{...}
> that ends a text section in the PDF output.
>
> If someone want's this issue fixed, make a feature request
> for XeTeX/xdvipdfmx to provide a real "\pdfliteral direct"/
> "direct mode for colors" without breaking text sections.
In the experimental version of pdfTeX with support for Tagged PDF,
we need a similar kind of variant to \pdfliteral .
It is called 'enclose'.
Here is how, in the coding of the corresponding pdftex.web
the various options are read, following an occurrence
of \pdfliteral :
@ @<Implement \.{\\pdfliteral}@>=
begin
check_pdfoutput("\pdfliteral", true);
new_whatsit(pdf_literal_node, write_node_size);
if scan_keyword("direct") then
pdf_literal_mode(tail) := direct_always
else if scan_keyword("page") then
pdf_literal_mode(tail) := direct_page
else if scan_keyword("enclose") then
pdf_literal_mode(tail) := enclose
else
pdf_literal_mode(tail) := set_origin;
scan_pdf_ext_toks;
pdf_literal_data(tail) := def_ref;
end
and here is the documentation on those options:
@# {data structure for \.{\\pdfliteral}; node size = 2}
@d pdf_literal_data(#) == link(#+1) {data}
@d pdf_literal_mode(#) == info(#+1) {mode of resetting the text matrix
while writing data to the page stream}
@# {modes of setting the current transformation matrix (CTM)}
@d set_origin == 0 {end text (ET) if needed, set CTM to current point}
@d direct_page == 1 {end text (ET) if needed, but don't change the CTM}
@d direct_always == 2 {don't end text, don't change the CTM}
@d scan_special == 3 {look into special text}
@d enclose == 4 {like |direct_always|, but end current string and sync pos}
The 'enclose' option is used to position the 'BDC' and 'EMC'
as closely around the text snippets as can be achieved,
without breaking the BT ... ET.
This seems to be the same kind of requirement here.
It would be nice if any extension to literal specials in xdvipdfmx
used the same keywords for similar functionality.
>
> Yours sincerely
> Heiko Oberdiek
Hope this helps,
Ross
------------------------------------------------------------------------
Ross Moore ross.moore at mq.edu.au
Mathematics Department office: E7A-419
Macquarie University tel: +61 (0)2 9850 8955
Sydney, Australia 2109 fax: +61 (0)2 9850 8114
------------------------------------------------------------------------
More information about the XeTeX
mailing list