폰트비 블로그
폰트/타이포그래피/디자인

합자(리가처)를 켜야 할 때와 꺼야 할 때, 상황별로 정리했다

글쓴이 · 폰트비
활판인쇄용 트레이에 정렬된 금속 필기체 활자 블록 클로즈업

합자(ligature) 설정에서 사람들이 놓치는 게 하나 있다. 합자가 두 종류라는 것, 그리고 그 두 종류가 근본적으로 다르게 작동한다는 것이다. 이걸 구분하지 않고 "켜야 예쁘다 / 끄면 안전하다"로만 생각하면, 판단이 틀릴 수밖에 없다.

합자는 f, i, l처럼 나란히 오면 충돌하거나 어색해 보이는 글자 쌍을 하나의 글리프로 합쳐서 보여주는 OpenType 기능이다. fi, fl, ff, ffi, ffl이 대표적이다. f의 오른쪽 끝이 i의 점과 겹치거나, f 상단 곡선이 l과 부딪히는 걸 해소하려는 데서 출발했다. OpenType 명세에서는 기능 코드로 나눠진다. liga가 표준 합자로, fi·fl처럼 조형상 충돌을 막는 기본 합자다. dlig는 재량적 합자(discretionary ligature)로 디자이너가 추가로 만든 장식적 합자이며 기본값은 꺼진 상태다. clig는 앞뒤 글자에 따라 자동으로 켜지는 문맥 합자다.

합자에는 두 종류가 있고, 작동 방식이 다르다

합자를 켜고 끄는 판단의 핵심은 이것이다. "이 합자가 실제 저장된 문자를 바꾸는가, 아니면 표시만 바꾸는가."

타이포그래피 합자와 코딩 폰트 합자는 이 지점에서 갈린다.

타이포 합자(InDesign·Illustrator·Figma·CSS에서 다루는 것)는 화면에 합쳐진 글리프로 보여주는 동시에, 저장값도 합자 전용 유니코드로 바꿀 수 있다. InDesign이나 Illustrator에서 합자를 켠 채로 PDF를 내보내면, fi 합자가 U+FB01, fl 합자가 U+FB02, ffi 합자가 U+FB03이라는 합자 전용 코드값으로 인코딩되는 경우가 있다. 이 PDF에서 텍스트를 복사하면 일반 알파벳 시퀀스가 아니라 합자 코드값이 그대로 딸려 나온다. Acrobat에서 "office"를 검색해도 fi 합자가 들어간 "office"는 히트하지 않는다. 코드값이 다르기 때문이다.

코딩 폰트 합자는 다르다. Fira Code, JetBrains Mono 같은 코딩 폰트는 ->, !=, >= 같은 연산자를 화살표나 부등호처럼 시각화한다. 이것도 OpenType 합자 기능을 쓰지만, 표시만 바뀔 뿐 실제 저장된 코드 문자는 그대로다. !=으로 저장하고 !=으로 복사된다. 화면에서 ≠처럼 보여도, 파일에는 !=이 들어 있다. 복사 오류나 검색 실패가 생기지 않는다는 뜻이다.

이 차이를 모르면 코딩 폰트 합자를 타이포 합자와 같은 논리로 다루게 된다. 코딩 폰트 합자는 끈다고 안전해지는 게 아니라 그냥 덜 편한 화면이 되는 것뿐이다.

한글 폰트에는 liga 피처가 거의 없다. 한글 자체가 초성·중성·종성의 결합 구조로 이루어져 있어서, 영문 방식의 합자가 불필요하다. 영문이 섞인 문서에서 영문 부분에만 합자가 적용되는 것도 이 이유다.

복사 안전성으로 판단한다

타이포 합자를 쓸 때 결정적인 질문은 하나다. "이 결과물에서 텍스트를 복사하거나 검색할 일이 있나?"

이력서 PDF를 만들고 있다면 답은 분명하다. 받는 쪽에서 복사해서 ATS(지원자 추적 시스템)에 붙여넣는 일이 생기니, 합자는 끄는 게 맞다. 논문·보고서도 마찬가지다. 텍스트 추출이 중요한 모든 PDF에서 합자를 켠 채 내보내는 건 처음부터 복사 오류를 심어두는 셈이다.

스크린리더가 이 문서를 읽어야 하는 상황도 끄는 쪽이다. JAWS 같은 스크린리더는 fi 합자(U+FB01)를 "fi ligature"라고 읽거나 아예 건너뛰기도 한다. "coffee"에 ff 합자가 들어가면 "coee"로 읽히는 오류 사례가 실제로 보고된 바 있다. 접근성이 중요한 문서라면 합자를 끄거나 PDF에 ActualText 메타데이터를 따로 넣어야 한다.

반대로, 텍스트를 복사할 일이 없고 글자 모양이 중요한 인쇄·디자인 작업이라면 켜두는 게 좋다. 브랜드 타이포그래피, 웹 헤드라인, 포스터가 여기 해당한다. CSS에서는 font-variant-ligatures: none을 쓰면 꺼지고, common-ligatures로 명시적으로 켤 수도 있다. 코드 블록처럼 글자 하나하나의 값이 중요한 자리에서는 none으로 두는 게 안전하다. 영문 합자가 한글 본문 사이에 뜬금없이 나타나는 경우도 끄는 게 낫다. 같은 문장 안에서 영문 부분에만 합자가 적용되면 글자 간격이 들쭉날쭉하게 보인다.

코딩 폰트를 쓰고 있다면 복사·검색 문제는 해당 없다. 팀 전체가 같은 설정을 쓰는지만 확인하면 된다.

소프트웨어별 설정 위치

복사 안전성을 이유로 합자를 끄거나 켜야 한다고 결정했을 때, 찾는 위치가 툴마다 다르다.

InDesign은 문자 패널(Character panel) 오른쪽 상단 메뉴에서 '합자(Ligatures)' 항목이 기본 경로다. liga(표준 합자)와 dlig(재량적 합자)를 구분해서 다루려면 Window → Type → OpenType 패널을 연다. 텍스트를 전체 선택한 뒤 설정해야 선택 범위 전체에 적용된다는 점은 놓치기 쉽다. Illustrator는 Window → Type → OpenType 패널, Figma는 텍스트 레이어 선택 후 오른쪽 패널 Type Settings(폰트 이름 옆 점 세 개) → Details 안에 Ligatures 토글이 있다. Word는 홈 탭 글꼴 영역 화살표 → 고급 탭 → OpenType 기능 → 합자 드롭다운 순이고, 기본값이 '없음'이라 별도로 켜야 한다.

합자를 켰는데 아무 변화가 없다면

설정을 바꿨는데도 글자가 달라지지 않는다면, 그 폰트에 liga 피처 자체가 없는 경우다. 합자는 폰트 안에 합자 글리프가 미리 만들어져 있어야 작동한다. 지원하지 않는 폰트에서는 설정을 바꿔봤자 변화가 없다.

어떤 폰트가 liga를 지원하는지 미리 확인하고 폰트를 고르고 싶다면, 폰트비에서 폰트 상세 페이지를 열어보는 것이 빠르다. 각 폰트의 사용 범위와 라이선스 안내 원문, 웹폰트 코드까지 한 페이지에서 볼 수 있으니, 폰트를 고르기 전에 OpenType 기능 지원 여부를 미리 파악하기 좋다. 🔍

합자를 "켜야 예쁘다 / 끄면 안전하다"로만 나누면 코딩 폰트에서 답이 틀린다. "이 합자가 저장값을 바꾸는가"를 먼저 묻는 게, 판단을 한 단계 정확하게 만든다.

이 글이 도움이 됐나요?

여러분의 반응이 다음 글의 방향이 돼요

이어서 읽기 좋은 글