Rainbuilt Pages · Troubleshooting log

Fedora 44 Chromium에서 ‘가’ 뒤 한글이 자소분리되어 보이는 문제 해결

Fedora 44 KDE Plasma에서 Chromium을 사용하던 중, 한글 문자열의 일부가 화면에서만 낱자처럼 표시되는 문제를 조사하고 해결한 기록이다.


증상

예를 들어 가속도가 다음처럼 표시된다.

가ㅅㅗㄱㄷㅗ

특이한 점은 문자열의 첫 음절인 는 정상인데, 그 뒤에 오는 한글부터 자소가 풀려 보인다는 것이다.

문자열 자체는 손상되지 않았다

원인

원인은 Droid Sans Fallback 폰트였다. 문제를 일으킨 파일은 다음과 같다.

/usr/share/fonts/google-droid-sans-fonts/DroidSansFallbackFull.ttf

관련 Fedora Bugzilla 기록

Red Hat Bugzilla의 Bug 1833858 — Droid Hangul Jamo is separated and printed respectively 에 거의 같은 문제가 등록되어 있었다.

버그의 재현 문자열도 가속도이며, 보고된 결과와 정상 결과는 다음과 같다.

구분 표시
문제 발생 가ㅅㅗㄱㄷㅗ
정상 가속도

최초 보고는 Fedora 32에서 이루어졌고, 논의 과정에서 Noto Sans CJK를 사용하면 정상적으로 렌더링되지만 Droid Sans Fallback을 사용하면 깨진다는 점이 확인됐다. HarfBuzz upstream에서는 이 폰트에 분리된 Hangul glyph를 다시 조립하는 데 필요한 정보가 빠져 있다고 설명했다.

이번 증상과 일치하는 fallback 동작

Bugzilla 댓글에는 Chrome에서 Droid Sans Fallback이 sans fallback으로 자주 선택되며, 한 문장 안에서도 로 시작하는 단어만 Droid Sans Fallback으로 잡히고 다른 단어는 Noto Sans CJK로 잡히는 현상이 관찰됐다는 내용이 있다.

댓글에서 제시된 설명은 가설이지만, 가 한글 자모 순서에서 처음 등장하는 음절이라 Droid Sans Fallback 쪽에 포함되어 있고 Chrome의 fallback 결정이 텍스트 구간의 첫 코드포인트를 기준으로 이루어지는 것 아니냐는 내용이다. 이 동작은 이번에 관찰한 는 정상이고 그 뒤가 ㅅㅗㄱㄷㅗ처럼 풀리는 현상과 일치한다.

Google Fonts에도 같은 문제가 별도로 보고되어 있다. Fedora 35와 Chrome 110 환경에서 Arial 또는 sans-serif의 fallback으로 Droid Sans Fallback이 자동 선택되면서 대부분의 한글이 개별 자모로 분리된다는 내용이다.

해결 방법

google-droid-sans-fonts 패키지를 통째로 제거하는 대신, fontconfig에서 Droid Sans Fallback만 선택되지 않도록 설정한다. 패키지를 보존하므로 CUPS, Okular, plasma-print-manager 같은 의존 패키지에 영향이 없다.

1. fontconfig 설정 디렉터리 만들기

mkdir -p ~/.config/fontconfig/conf.d

2. Droid Sans Fallback 거부 설정 추가하기

cat > ~/.config/fontconfig/conf.d/99-reject-droid-sans-fallback.conf <<'EOF'
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
  <selectfont>
    <rejectfont>
      <pattern>
        <patelt name="family">
          <string>Droid Sans Fallback</string>
        </patelt>
      </pattern>
    </rejectfont>
  </selectfont>
</fontconfig>
EOF

이 방법은 임의로 만든 우회법이 아니다. Fedora 39 재현 댓글에도 거의 동일한 rejectfont 설정으로 문제가 사라졌다는 결과가 올라와 있다.

3. fontconfig 캐시 갱신하기

fc-cache -f

4. Chromium 완전히 종료 후 다시 시작하기

실행 파일 이름이 chromium-browser인 Fedora 환경이라면 다음 명령으로 Chromium을 완전히 종료한다.

pkill -f chromium-browser

이제 Chromium을 다시 실행하고 가속도 같은 문자열을 확인한다.

결과

Fedora 44에서 위 설정을 적용한 뒤, 가속도에서 뒤 한글이 자소분리되어 보이던 문제가 바로 사라졌다.

해결의 핵심은 폰트 패키지를 삭제하는 것이 아니라, 문제가 있는 fallback 폰트 하나만 fontconfig의 선택 대상에서 제외하는 것이다.

원복

추가한 설정 파일만 지우고 fontconfig 캐시를 다시 만든다.

rm ~/.config/fontconfig/conf.d/99-reject-droid-sans-fallback.conf
fc-cache -f

그 뒤 Chromium을 완전히 종료했다가 다시 켜면 원래 설정으로 돌아간다.