xelatex 및 Minion Pro를 사용한 프랑스어 간격

xelatex 및 Minion Pro를 사용한 프랑스어 간격

방금 OSX 10.8.5를 실행하는 MacBookpro에 MacTex 2014 정식 버전을 설치했는데, xelatex로 컴파일된 이 최소한의 문서의 출력에 놀랐습니다.

\documentclass[]{article}
\usepackage[frenchb]{babel}
\usepackage{fontspec}
\usepackage{xltxtra,xunicode}
\setmainfont{Minion Pro}
\setromanfont[Mapping=tex-text]{Minion Pro}
\setsansfont{Myriad Pro}
\setmonofont{Source Code Pro}
\frenchspacing
\begin{document}
l'étranger, l'équipe
\end{document}

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

간격이 잘못된 것 같습니다("l"과 다음 단어가 너무 가깝습니다). 아니면 Minion Pro에서 어떻게 보일까요? 제가 간과한 옵션이 있나요?

답변1

이 문제는 대부분의 Adobe 글꼴(Adobe, 듣고 있나요?)에 영향을 미칩니다. xetex에서 이에 대해 수행할 수 있는 작업을 충분히 알지 못하지만 글꼴 자체를 편집하지 않고도 커닝을 조정하는 기능 파일을 작성할 수 있습니다 xetex. luatex생각보다 훨씬 쉽습니다. 예:

\documentclass[12pt]{article}
\usepackage[french]{babel}
\usepackage{filecontents,fontspec,microtype}
\begin{filecontents*}{minion.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;

feature kern {
  pos \quoteright \a 10;
  pos \quoteright \eacute 10;
  pos \quoteright \o 10;
} kern;
\end{filecontents*}
\setmainfont{Minion Pro}[
  FeatureFile={minion.fea}]
\frenchspacing
\begin{document}
l’étranger

d’accord

d’ores et déjà
\end{document}

샘플 코드 출력

pos \quoteright \e 10;아포스트로피 뒤에 올 수 있는 항목을 나열할 때까지 다음 과 같은 줄을 계속 추가하면 됩니다 . 원하는 대로 빡빡하거나 느슨해질 때까지 값을 가지고 놀 수 있습니다(1, 10, 20...).

이중 언어 문서를 작성 중이고 다른 언어에 더 엄격한 커닝이 필요한 경우(다른 언어에 대해서는 잘 모르겠습니다) 정의한 기능을 어떤 언어에 적용할지 지정할 수 있습니다. 더 많은 작업이 필요하지만 기술은 다음 페이지에 설명되어 있습니다.tex.stackexchange.com/a/142664/7883.

업데이트: 버전 2.7부터 luaotfload기능 파일은 더 이상 지원되지 않습니다. 보다tex.stackexchange.com/a/312160/7883이 문제를 해결하는 새로운 방법을 찾으세요.

답변2

현재 XeTeX의 interchartoken 메커니즘을 사용하여 아포스트로피와 후속 문자 사이의 커닝을 비활성화하고 있습니다.

\XeTeXinterchartokenstate=1
\newXeTeXintercharclass\ApostropheClass
\XeTeXcharclass`'\ApostropheClass
\newXeTeXintercharclass\AfterApostropheClass
\XeTeXcharclass`a\AfterApostropheClass
\XeTeXcharclass`A\AfterApostropheClass
\XeTeXcharclass`à\AfterApostropheClass
\XeTeXcharclass`â\AfterApostropheClass
\XeTeXcharclass`e\AfterApostropheClass
\XeTeXcharclass`E\AfterApostropheClass
\XeTeXcharclass`é\AfterApostropheClass
\XeTeXcharclass`è\AfterApostropheClass
\XeTeXcharclass`ê\AfterApostropheClass
\XeTeXcharclass`i\AfterApostropheClass
\XeTeXcharclass`o\AfterApostropheClass
\XeTeXcharclass`ò\AfterApostropheClass
\XeTeXcharclass`U\AfterApostropheClass
\XeTeXcharclass`u\AfterApostropheClass
\XeTeXcharclass`ù\AfterApostropheClass
\XeTeXcharclass`y\AfterApostropheClass
\XeTeXinterchartoks\ApostropheClass\AfterApostropheClass={\penalty\@M\hskip\z@}

하이픈 연결이 비활성화되는 것을 방지하기 위해 컨 대신 접착제를 삽입하고 있습니다. 글루 위치에서 줄 바꿈을 방지하기 위해 패널티가 있습니다.

관련 정보