[XeTeX] Numerals in Right-to-Left
Jonathan Kew
jonathan_kew at sil.org
Wed Nov 17 15:32:20 CET 2004
On 17 Nov 2004, at 6:33 am, Bruno Voisin wrote:
> I think the answer comes to what Jonathan has mentioned in his
> preceding message:
>
>> Le 15 nov. 04, à 15:07, Jonathan Kew a écrit :
>>
>>> Note that "auto-generated" numbers from TeX macros (like \pageno,
>>> for example) will be the Latin digits 0030..0039, and this may be a
>>> problem when working with non-Latin fonts. It's possible to wrap
>>> such things in additional macro code to replace the Latin digits
>>> with the appropriate codes for a different script, but this requires
>>> extra TeX macro programming.
>
> This is exactly the situation you are faced with: \folio is defined in
> plain.tex based on the counter \pageno, and the primitive \number
> which return the value (a decimal number) of this counter:
>
> \def\folio{\ifnum\pageno<\z@ \romannumeral-\pageno \else\number\pageno
> \fi}
>
> So I think you can't avoid that bit of extra programming.
I suppose people might like an example of how this could be done.
Here's a possible approach:
% - - - - - convert numbers to different digit sets - - - - -
\font\x="Geeza Pro" at 12pt \x
\def\translitnumber#1#2{%
% #1 -> the number to transliterate
% #2 -> unicode value of "zero" in the desired digit set
\begingroup
\count255=#2
\uccode`\0=\count255 \advance\count255 by 1
\uccode`\1=\count255 \advance\count255 by 1
\uccode`\2=\count255 \advance\count255 by 1
\uccode`\3=\count255 \advance\count255 by 1
\uccode`\4=\count255 \advance\count255 by 1
\uccode`\5=\count255 \advance\count255 by 1
\uccode`\6=\count255 \advance\count255 by 1
\uccode`\7=\count255 \advance\count255 by 1
\uccode`\8=\count255 \advance\count255 by 1
\uccode`\9=\count255
\edef\thenumber{#1}%
\expandafter\uppercase\expandafter{\thenumber}%
\endgroup}
\def\arabicnumber#1{\translitnumber{#1}{"0660}}
\def\persiannumber#1{\translitnumber{#1}{"06F0}}
\pageno=12345
% with Geeza Pro, the number doesn't appear here (no support for Latin
numerals)
{\rm Default:} \folio
% now try the page number in Arabic and Persian digit sets
{\rm Arabic:} \arabicnumber{\folio}
{\rm Persian:} \persiannumber{\folio}
\end
% - - - - - end of example - - - - -
HTH,
Jonathan
More information about the XeTeX
mailing list