XeLaTeX에서는 글꼴에 특정 문자가 포함되어 있는지 확인하는 데 \XeTeXcharglyph
및 를 모두 사용할 수 있습니다. \iffontchar
LuaLaTeX에서는 \iffontchar
이것이 유일한 옵션인 것 같습니다. 둘 다 사용되는 방법은 다음과 같습니다.
\ifnum\XeTeXcharglyph`#1>0\found\else\notfound\fi
\iffontchar\font`#1\found\else\notfound\fi
\XeTeXcharglyph
over 를 선호할 이유가 있나요 \iffontchar
?
답변1
두 명령의 정의를 살펴보면xetex.web
, 거의 동일하다는 것을 알 수 있습니다.
주요 차이점은 \iffontchar
두 개의 인수(글꼴 및 문자 모양)를 사용하고 항상 부울 값을 반환하는 반면, \XeTeXcharglyph
현재 활성 글꼴에 대해 문자 모양을 확인하고 현재 글꼴이 AAT, OTF 또는 Graphite가 아닌 경우 오류가 발생할 수 있다는 것입니다. 이것은 실제로 강력한 이유입니다.~에 맞서\XeTeXcharglyph
8비트 글꼴을 처리할 수 없기 때문에 사용합니다 .
내부적으로 둘 다 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;
\XeTeXcharglyph
Plain TeX에서 실패한 MWE :
\the\XeTeXcharglyph`a
\bye
! Cannot use \XeTeXcharglyph with cmr10; not a native platform font.
l.1 \the\XeTeXcharglyph
`a