\iffontchar 대신 \XeTeXcharglyph를 사용하는 경우는 언제입니까?

\iffontchar 대신 \XeTeXcharglyph를 사용하는 경우는 언제입니까?

XeLaTeX에서는 글꼴에 특정 문자가 포함되어 있는지 확인하는 데 \XeTeXcharglyph및 를 모두 사용할 수 있습니다. \iffontcharLuaLaTeX에서는 \iffontchar이것이 유일한 옵션인 것 같습니다. 둘 다 사용되는 방법은 다음과 같습니다.

  • \ifnum\XeTeXcharglyph`#1>0\found\else\notfound\fi
  • \iffontchar\font`#1\found\else\notfound\fi

\XeTeXcharglyphover 를 선호할 이유가 있나요 \iffontchar?

답변1

두 명령의 정의를 살펴보면xetex.web, 거의 동일하다는 것을 알 수 있습니다.

주요 차이점은 \iffontchar두 개의 인수(글꼴 및 문자 모양)를 사용하고 항상 부울 값을 반환하는 반면, \XeTeXcharglyph현재 활성 글꼴에 대해 문자 모양을 확인하고 현재 글꼴이 AAT, OTF 또는 Graphite가 아닌 경우 오류가 발생할 수 있다는 것입니다. 이것은 실제로 강력한 이유입니다.~에 맞서\XeTeXcharglyph8비트 글꼴을 처리할 수 없기 때문에 사용합니다 .

내부적으로 둘 다 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;

\XeTeXcharglyphPlain TeX에서 실패한 MWE :

\the\XeTeXcharglyph`a
\bye
! Cannot use \XeTeXcharglyph with cmr10; not a native platform font.
l.1 \the\XeTeXcharglyph
                       `a

관련 정보