En XeLaTeX, ambos \XeTeXcharglyph
y \iffontchar
se pueden usar para verificar si una fuente contiene un glifo en particular. En LuaLaTeX, \iffontchar
parece ser la única opción. Así se utilizan ambos:
\ifnum\XeTeXcharglyph`#1>0\found\else\notfound\fi
\iffontchar\font`#1\found\else\notfound\fi
¿Hay alguna razón para \XeTeXcharglyph
preferirlo \iffontchar
?
Respuesta1
Si nos fijamos en la definición de los dos comandos enxetex.web
, encontrarás que son casi iguales.
La principal diferencia es que \iffontchar
toma dos argumentos (fuente y glifo) y siempre devolverá un booleano, mientras que \XeTeXcharglyph
compara el glifo con la fuente actualmente activa y puede generar un error si la fuente actual no es AAT, OTF o Graphite. En realidad, esta es una razón poderosacontraporque \XeTeXcharglyph
no puede manejar fuentes de 8 bits.
Internamente ambos usan map_char_to_glyph
.
if_in_csname_code: b:=is_in_csname;
if_font_char_code:begin scan_font_ident; n:=cur_val; scan_usv_num;
if is_native_font(n) then
b:=(map_char_to_glyph(n, cur_val) > 0)
else begin
if (font_bc[n]<=cur_val)and(font_ec[n]>=cur_val) then
b:=char_exists(char_info(n)(qi(cur_val)))
else b:=false;
end;
end;
XeTeX_map_char_to_glyph_code:
begin
if is_native_font(cur_font) then begin
scan_int; n:=cur_val; cur_val:=map_char_to_glyph(cur_font, n)
end else begin
not_native_font_error(last_item, m, cur_font); cur_val:=0
end
end;
MWE por fallar \XeTeXcharglyph
en Plain TeX:
\the\XeTeXcharglyph`a
\bye
! Cannot use \XeTeXcharglyph with cmr10; not a native platform font.
l.1 \the\XeTeXcharglyph
`a