한자

크롬에서 네모로 나오는 유니코드 확장영역 한자들을 정상출력시켜본다.

K66Google 2021. 1. 5. 15:12

( 출처 : 한국어 위키백과 페이지 )


크롬에서 '네모'로 나오는 한자들이 있다. 이걸 보고 '한자가 깨져서 나온다' 라고 표현하는 사람들도 있다. 유니코드의 한중일 통합한자 확장D 구역까지는 한자들이 제대로 표시되는데, 확장E 구역은 극소수의 한자만 표시되고, 확장F · 확장G 구역 한자들은 전혀 표시되지 않는다.


아마 맑은 고딕이 확장E, F, G 구역의 한자들을 지원하지 않아서 벌어지는 문제일거다. 일단은 확장G 구역을 지원하는 한자 폰트를 찾아보기로 했다.



( 출처 : stackexchange 게시물 )


외국 웹사이트를 찾아보니 TH-Tshyn 이라는 폰트가 확장G 구역의 한자를 지원한다고 해서 설치해보기로 했다.

(Hanazono라는 유명한 확장한자 지원 폰트가 있지만, 2017년 이후로 업데이트가 되지 않아서 확장F 구역 한자까지만 지원되고 확장G 구역은 지원되지 않는다. 그래서 TH-Tshyn 폰트를 설치하기로 한 거다.)



( 출처 : 천형의 간이역 다운로드 페이지 )


해당 폰트를 배포하고 있는 '천형의 간이역(天珩的小站)' 사이트에 가서 천형전자고(天珩全字库) 7z 압축파일을 다운로드 받았다.



다운로드 받고 압축을 풀면 폰트 파일과 레지스트리 파일이 나오는데 폰트 4개는 다 설치했다.

레지스트리는 등록해봤지만 헛수고다. 왜냐하면...


다운받고 레지스트리 등록 다 해도 크롬에서 안 뜨기 때문이다.



파이어폭스에서는 폰트만 설치하면 알아서 출력해주는데, 크롬에서는 안 해주는 걸까?

어쩌면 크롬에서 폰트를 불러오지 못하는 걸지도 모른다. 그래서 나는 F12 기능을 통해 이것저것 조사해보기로 하였다.



CSSfont-family 값이 의심스러워서 거기에 TH-Tshyn의 폰트들을 넣어주니까 한자가 네모로 나오지 않고 정상적으로 출력되었다.

그러나 이런 작업을 매번 페이지를 열때마다 하면 번거롭다. 무언가 자동화된 스크립트로 처리할 필요가 있다.



이때 필요한 것이 바로 Tampermonkey다. 스크립트를 만들고 처리해주는 확장기능이다. (크롬 웹스토어 페이지)

크롬 웹스토어에 가서 설치한다.


설치 후 확장 기능 아이콘을 클릭하고 '새 스크립트 만들기...' 를 클릭한다.


그럼 이런 창이 열리는데, 여기에 스크립트 코드를 입력하면 된다. 내가 미리 작성해놓은 스크립트를 복사해서 붙여넣으면 된다. 

(에디터에 적힌 구문을 모두 삭제하고 나서 붙여넣어야 하며, 붙여넣은 후 맨 밑에 '출처: ~' 는 삭제할 것)


// ==UserScript==
// @name         TH-Tshyn Font
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://*/*
// @match        https://*/*
// @grant        none
// ==/UserScript==

function addGlobalStyle(css) {
    var head, style;
    head = document.getElementsByTagName('head')[0];
    if (!head) { return; }
    style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
}

addGlobalStyle('* { font-family: Malgun Gothic,Dotum,TH-Tshyn-P16,TH-Tshyn-P2,TH-Tshyn-P1,TH-Tshyn-P0,sans-serif !important; }');


붙여넣었으면 파일 - '저장' 버튼을 클릭한다.


그러면 대시보드 화면이 나오는데 (아이콘 클릭 - '대시보드'로 들어올 수 있음) 저장한 스크립트가 목록에 뜬 걸 확인한다. 스크립트를 삭제하거나 편집하려면 대시보드에서 하면 된다. 확인했으면 대시보드는 닫는다.


이제 한자가 네모로 뜨는 웹페이지에 가서 Tampermonkey 아이콘을 클릭하고 방금 작성한 스크립트(TH-Tshyn Font)의 스위치를 ON해 준 다음에 새로고침한다. (이때 활성화됨에는 스샷처럼 체크 표시가 되어있어야 한다.)

과연 어떤 결과가 나올까?


스크립트가 잘 적용이 되어서 네모로 나오던 한자들이 제대로 출력되는 모습을 확인할 수 있다.


다만, 이 스크립트를 적용하면 확장 한자를 제외하고 인터넷 상의 모든 글자가 '맑은 고딕' 폰트로 보이게 된다. 그러니 확장한자 구역을 볼 때만 스크립트를 켜고, 아닐때는 꺼야한다.


스크립트 적용을 중지하려면 켤 때와는 반대로 스위치를 OFF 하고 새로고침해주면 된다.


이로써 크롬에서도 유니코드 확장구역 한자들을 정상적으로 볼 수 있게 되었다.

그럼 이만...


* p.s

탬퍼몽키 스크립트 관련 참고 게시물 : #1 , #2