코드 목록에서 합자와 함께 Fira Code 글꼴 사용

코드 목록에서 합자와 함께 Fira Code 글꼴 사용

나는피라 코드아름다운 합자가 있는 코드 목록 및 축어적 블록을 위한 OTF 글꼴입니다. 다음 줄을 사용하면 글꼴이 올바르게 로드됩니다.

\setmonofont{FiraCode-Regular}

그러나 아무리 많은 조합을 시도하더라도 [Ligatures={X}]합자 가 작동하도록 할 수 없습니다.[RawFeatures={X}]

그들과 함께 작동하게 할 수 있는 방법이 있나요 xelatex?

답변1

먼저, Fira Code가 컴퓨터에 설치되어 있는지 확인해야 합니다(이미 설치되어 있을 것이라고 확신합니다).

Fira Code가 사용하는 글꼴 기능은 실제로 OTF 내에서 합자로 나열되지 않지만 아래에 속하는 것 같습니다.상황별. 이러한 글꼴 기능을 사용하려면 적절한 상황별 기능을 활성화하기만 하면 됩니다.

\documentclass{article}

\usepackage{fontspec}
\setmonofont[
  Contextuals={Alternate}
]{Fira Code}

\begin{document}
\begin{verbatim}
           .= .- := =:=
        == != === !== =/=

    <<- <-- <- <-> -> --> ->>
<=< <<= <==    <=> => ==> =>> >=>
    >>= >>- >-     -< -<< =<<
        <~~ <~ ~~~ ~> ~~>

     <<< << <= <>  >= >> >>>
            <| <|> |>

            <$ <$> $>
            <+ <+> +>
            <* <*> *>

       \\ \\\ {- -} // ///
          /* /** **/ */ 
      </ <!-- www  --> />
      0xF  9:45  m-x *ptr

       ;; ;;; :: ::: !! !!!
       ?? ??? %% %%% && &&& 
       || ||| .. ... ..< []
       -- --- ++ +++ ** ***

          ~= ~- -~ =~ ~@
        ^= ?= /= /== |= ||=
           ## ### ####
         #{ #[ #( #? #_ #_(


a*b a*A B*b A*B *a *A a* A*
a-b a-A B-b A-B -a -A a- A-
a+b a+A B+b A+B +a +A a+ A+
a:b a:A B:b A:B :a :A a: A:
\end{verbatim}
\end{document}

산출

.=특정 대체 항목(예: )은 작동하지만 다른 일부 대체 항목(예: )은 작동하지 않는 이유를 여전히 파악하려고 노력 중입니다 .-. 나는 그것이 -ASCII 대시에서 다른 대시로 변환되는 것일 수도 있다고 생각합니다 .

참고로 Fira Code의 합자는 다음과 같습니다.

참조

verbatim전통적인 TeX 글꼴에는 합자가 있기 때문에 특별한 방법으로 처리하려는 문자를 제거하여 "누락된" 합자를 얻을 수 있습니다 . 기본적으로 고정폭 글꼴에는 fontspec적용되지 않으므로 공백으로 Ligatures=TeX재정의해도 위험이 없습니다 \verbatim@noligs@list.

\documentclass{article}

\usepackage{fontspec}

\setmonofont[
  Contextuals={Alternate}
]{Fira Code}

\makeatletter
\def\verbatim@nolig@list{}
\makeatother


\begin{document}

\begin{verbatim}
           .= .- := =:=
        == != === !== =/=

    <<- <-- <- <-> -> --> ->>
<=< <<= <==    <=> => ==> =>> >=>
    >>= >>- >-     -< -<< =<<
        <~~ <~ ~~~ ~> ~~>

     <<< << <= <>  >= >> >>>
            <| <|> |>

            <$ <$> $>
            <+ <+> +>
            <* <*> *>

       \\ \\\ {- -} // ///
          /* /** **/ */ 
      </ <!-- www  --> />
      0xF  9:45  m-x *ptr

       ;; ;;; :: ::: !! !!!
       ?? ??? %% %%% && &&& 
       || ||| .. ... ..< []
       -- --- ++ +++ ** ***

          ~= ~- -~ =~ ~@
        ^= ?= /= /== |= ||=
           ## ### ####
         #{ #[ #( #? #_ #_(


a*b a*A B*b A*B *a *A a* A*
a-b a-A B-b A-B -a -A a- A-
a+b a+A B+b A+B +a +A a+ A+
a:b a:A B:b A:B :a :A a: A:
\end{verbatim}
\end{document}

여기에 이미지 설명을 입력하세요

답변2

ConTeXt에서 Fira 코드를 사용하는 것도 가능합니다. 그러나 모든 합자가 여기서 작동하는 것은 아닙니다. 불행히도 나는 그 이유를 모른다.

\definefontfeature
  [firacode-ligs]
  [mode=node,
   calt=yes]

\starttypescriptcollection[firacode]

  \starttypescript [mono] [firacode]
    \definefontsynonym [FiraCodeBold]    [file:FiraCode-Bold.otf]    [features=firacode-ligs] 
    \definefontsynonym [FiraCodeLight]   [file:FiraCode-Light.otf]   [features=firacode-ligs] 
    \definefontsynonym [FiraCodeMedium]  [file:FiraCode-Medium.otf]  [features=firacode-ligs] 
    \definefontsynonym [FiraCodeRegular] [file:FiraCode-Regular.otf] [features=firacode-ligs] 
    \definefontsynonym [FiraCodeRetina]  [file:FiraCode-Retina.otf]  [features=firacode-ligs] 
  \stoptypescript

  \starttypescript [mono] [firacode] [name]
    \setups[font:fallback:mono]
    \definefontsynonym [Mono]     [FiraCodeRegular]
    \definefontsynonym [MonoBold] [FiraCodeBold]
  \stoptypescript

  \starttypescript [firacode]
    \definetypeface [\typescriptone] [rm] [serif] [modern]   [default] [features=default]
    \definetypeface [\typescriptone] [ss] [sans]  [modern]   [default] [features=default]
    \definetypeface [\typescriptone] [tt] [mono]  [firacode] [default]
    \definetypeface [\typescriptone] [mm] [math]  [modern]   [default] [features=default]
  \stoptypescript

\stoptypescriptcollection

\setupbodyfont[firacode]

\starttext

\starttyping
           .= .- := =:=
        == != === !== =/=

    <<- <-- <- <-> -> --> ->>
<=< <<= <==    <=> => ==> =>> >=>
    >>= >>- >-     -< -<< =<<
        <~~ <~ ~~~ ~> ~~>

     <<< << <= <>  >= >> >>>
            <| <|> |>

            <$ <$> $>
            <+ <+> +>
            <* <*> *>

       \\ \\\ {- -} // ///
          /* /** **/ */ 
      </ <!-- www  --> />
      0xF  9:45  m-x *ptr

       ;; ;;; :: ::: !! !!!
       ?? ??? %% %%% && &&& 
       || ||| .. ... ..< []
       -- --- ++ +++ ** ***

          ~= ~- -~ =~ ~@
        ^= ?= /= /== |= ||=
           ## ### ####
         #{ #[ #( #? #_ #_(


a*b a*A B*b A*B *a *A a* A*
a-b a-A B-b A-B -a -A a- A-
a+b a+A B+b A+B +a +A a+ A+
a:b a:A B:b A:B :a :A a: A:
\stoptyping

\stoptext

여기에 이미지 설명을 입력하세요

관련 정보