HF&J의 Mercury Text OpenType 글꼴로 합자를 활성화하는 데 문제가 있습니다.

HF&J의 Mercury Text OpenType 글꼴로 합자를 활성화하는 데 문제가 있습니다.

확실해이 글꼴합자를 지원하지만 표시할 수는 없습니다.

비교를 위한 Roboto의 예:

\documentclass[
  11pt,
  a4paper
]{scrartcl}

\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}

\begin{document}

\setmainfont[
  ExternalLocation,
  Extension=.ttf,
  UprightFont=*-Regular,
  ItalicFont=*-Italic,
  BoldFont=*-Bold,
  BoldItalicFont=*-BoldItalic,
  Ligatures=Common
]{Roboto}

roboto fight flight has ligatures

\setmainfont[
  ExternalLocation,
  Extension=.otf,
  Ligatures=Common
]{Mercury-TextG4Roman}

mercury fight flight no ligatures

\end{document}

음

HF&J 사이트 목록의 합자 목록은 다음과 같습니다 fi.

합자 목록

그리고 Windows의 charmap은 해당 글꼴로 해당 문자를 표시합니다.

캐릭터 맵

업데이트:

출력 otfinfo:

정보

업데이트 2:

LuaLatex로 변경되고 기능 파일이 추가되었습니다.

\documentclass[
  11pt,
  a4paper
]{scrartcl}

\usepackage{filecontents}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={Common,Rare,Historic}}

\begin{filecontents*}{mercury.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;
# Ligatures
feature liga {
    sub \f \i by \fi;
    sub \f \l by \fl;
} liga;
\end{filecontents*}

\begin{document}

\setmainfont[
  ExternalLocation,
  Extension=.ttf,
  UprightFont=*-Regular,
  ItalicFont=*-Italic,
  BoldFont=*-Bold,
  BoldItalicFont=*-BoldItalic,
  Ligatures=Common
]{Roboto}

roboto fight flight has ligatures

\setmainfont[
  FeatureFile=mercury.fea,
  ExternalLocation,
  Extension=.otf,
  Ligatures=Common
]{Mercury-TextG4Roman}

mercury fight flight no ligatures

\end{document}

그리고 합자는 다음을 보여줍니다:

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

답변1

@cfr의 친절한 도움으로 다음을 확립했습니다.

  • 글꼴에는 합자 문자가 포함되어 있습니다.

  • fontspecAAT 합자 정보가 있더라도 이를 활용할 수 없습니다.

  • 글꼴에는 자동 합자 지원에 필요한 OpenType 기능 데이터가 생략되어 있습니다.

그럼 당신은 무엇을 할 수 있나요? 누락된 매핑 데이터를 글꼴에 추가하거나 외부 OpenType 기능 파일(LuaTeX에서만 지원)을 만들고 이를 사용하도록 Fontspec에 지시할 수 있습니다. 둘 다 어렵지 않습니다.

FontForge를 사용하여 Opentype liga테이블 추가

메모:먼저 글꼴에 대한 라이센스 조건 등을 참조하십시오.

  1. Fontforge에서 글꼴 파일을 엽니다.
  2. Element->Font Info메뉴에서 대화 상자를 엽니다 .글꼴 정보 대화 상자 나열된 항목은 다양한 OpenType "기능"에 해당합니다. 원하는 항목은 목록에서 "표준 합자"로 명명되고 liga 사양 및 출력의 기능 으로 지정 otfinfo되며 이미 글꼴에서 누락되었음을 알고 있으므로 다음을 만들어야 합니다. 먼저 테이블을 만든 다음 누락된 데이터로 테이블을 채웁니다.
  3. "조회 추가" 버튼을 누르고 유형을 "표준 합자"로 선택하세요.
  4. 실제 매핑 테이블을 생성하려면 "하위 테이블 추가" 버튼을 누르세요. 새 하위 표 항목을 두 번 클릭하여 편집기 보기를 엽니다.
  5. 이제 문자 시퀀스와 합자 문자 사이의 매핑을 설정하는 편집 대화상자가 표시됩니다. 합자 하위 표 편집기 FontForge가 글꼴에서 지원하는 합자를 추론하고 자동으로 항목을 생성하도록 하려면 "채우기" 버튼을 사용하세요. 글꼴에 따라 항목을 수동으로 편집/추가해야 할 수도 있습니다. 왼쪽 열에는 합자의 문자 모양 이름이 포함되고 오른쪽 열에는 공백으로 구분된 개별 문자가 포함됩니다.
  6. 완료되면 Ok두 번 눌러 기본 창으로 다시 돌아갑니다.
  7. 업데이트된 글꼴 파일을 로 저장하고 File->Generate Fonts, dropbox 유형이 로 설정되어 있는지 확인하세요 OpenType(CFF). 생성된 글꼴은 원본과 동일한 내부 글꼴 이름을 가지고 있으므로(변경하기 쉬움) 이전 버전을 로드하지 않으려면 원본을 덮어쓰거나(백업을 기억하세요) 글꼴 파일의 경로를 지정해야 합니다. 로 로드할 때 명시적으로 fontspec.
  8. 이제 끝났습니다.

ligaOpenType 기능 파일을 사용하여 OpenType 테이블 추가 (LuaTeX에만 해당)

설명서 fontspec에는부분기능 파일에 대한 링크 포함사양) 여기에는 합자 매핑을 정의하는 방법 등 원하는 내용을 정확하게 보여주는 예제가 포함되어 있습니다. 따라서 기능 파일을 생성한 다음 해당 파일을 로드하도록 FeatureFile지시하는 옵션을 사용하기만 하면 됩니다.fontspec

파일:another_league.tex

\documentclass{article}
\usepackage{filecontents}
\usepackage{fontspec}

% Alternatively, place this in a `mercury.fea` file in the same directory
\begin{filecontents*}{mercury.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;
# Ligatures
feature liga {
    sub \f \i by \fi;
    sub \f \l by \fl;
} liga;
\end{filecontents*}
    
\setmainfont[
FeatureFile=mercury.fea,
%Ligatures={Common} % on by default
]{Mercury-TextG4Roman}

\begin{document}
    fi \symbol{"FB01} 
    
    fl \symbol{"FB02} 
\end{document}

이 예에서는 합자 문자 모양이 유니코드 표준 위치에 존재하고 비교를 위해 문자 모양 번호별로 직접 포함한다고 가정합니다. YMMV.

편집하다:fontspec옵션 에 문제가 있으면 오류로 끝나지 않으니 주의하세요 FeatureFile. 경로를 잘못 입력하거나 파일에 구문 오류가 있거나 다른 엔진을 사용하면 LuaTeX조용히 기능 파일이 무시됩니다.

관련 정보