나는피라 코드아름다운 합자가 있는 코드 목록 및 축어적 블록을 위한 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