글꼴 찾기의 시작

처음은 Firefox Preview에서 내가 지금 사용하고 있는 글꼴을 사용할 수 있는가?에서 시작되었습니다. LG G8 ThinQ를 사용하고 있어서, 삼성 기기와 마찬가지로 전용 앱스토어 등에서 내려받은 글꼴을 시스템 전역에서 사용할 수 있는데 왜 시스템 글꼴이 웹 페이지에는 적용되지 않는가, 하는 의문이 있었던 겁니다.

처음에는 about:config 페이지에 접속하여 이리저리 바꿔보기도 했지만, 어떻게 바꿔도 적용되지 않았습니다. Android 개발자 문서를 보니, /system/etc/fonts.xml에 적힌 내용이 아니면 앱도 인식을 하질 못한다고 합니다. 그리고 그 파일은 기본적으로 /system/fonts 폴더를 기반으로 정보를 생성한 것이라 하니, 각각에 최소한 커스텀할 글꼴이라도 존재해야 합니다.

시스템 글꼴을 찾아서

그런데 이런, 비루팅 상태에서도 시스템 폴더 확인이 가능한 Total Commander의 루트 폴더 항목을 눌러 /system/fonts에 들어가보니, LG가 기본 선택지로 제시하고 있는 LG 스마트체와 같은 글꼴도 보이질 않습니다. /system/etc/fonts.xml에 관련 정보가 없기는 마찬가지였습니다.

과거 LG G3 모델을 쓸 무렵에는 적어도 WPS Office 등지에서 LG Smart 글꼴을 사용했던 기억이 있어 WPS Office도 설치해 확인했습니다. 그러나 보이지 않았습니다. 인터넷 검색을 해봐도 LG G7 ThinQ 모델까지는 /system/fonts/에 기본 탑재 글꼴이 모두 들어있었는데, G8 ThinQ 모델에서 어떻게 바뀌었다거나 어디에 있다는 말도 보이질 않습니다.

Total Commander로 조금 더 찾아보니, LG G8 ThinQ 모델에서는 /product/fonts/에 글꼴을 탑재하는 것으로 바뀐 모양입니다. 다행히 읽기 권한은 적용되어 있어서 추출이 가능했지만, 이래선 기본 탑재 글꼴도 어떻게 적용해볼 방법이 없습니다. 비록 /product/etc/fonts-lge.xml에 관련 정보가 기록되어 있긴 하지만, 이걸 인식하는 앱은 LG 설정 앱을 제외하고 단 하나도 없었습니다. 같은 위치에 있는 fonts-system.xml도 Roboto 글꼴을 시스템 전반에 적용하기 위한 값으로 보이는 내용만 적혀있었습니다.

그렇다면 과연, LG SmartWorld에서 받은 글꼴은 어디에 있는 것일까요.

간단요약: LG 스마트폰 기본 탑재 글꼴은 ~G7 ThinQ까지는 적어도 /system/fonts에 있고, G8 ThinQ에는 /product/fonts/에 있다. 관련 정보는 /product/etc/의 fonts-lge.xml과 fonts-system.xml이 관리한다.

네이버 앱은 도대체 어떻게 글꼴을 인식했을까?

생각해보니, '스타곤 브라우저', '네이버', '네이버 웨일' 앱은 사용자가 설치한 글꼴을 인식할 줄 알았습니다. 처음에 네이버 계열 앱이 커스텀 글꼴을 지원하는 것을 보고, 당연히 LG전자나 삼성전자로부터 관련 API나 SDK를 제공받아서 글꼴을 읽어들이는 줄 알았습니다. 그런데 '스타곤 브라우저'는, 개인의 결과물입니다. 개발자분도 업데이트 게시물을 통해서글꼴 추가를 위해 다각도로 노력해오셨다는 언급을 하셨습니다. 즉, 내려받은 글꼴을 관리하는 기능을 개발한 LG전자, 삼성전자 혹은 외주업체로부터 글꼴 인식을 위한 SDK를 제공받지 않았다는 얘기나 다름없었습니다.

그러나 제가 내려받은 글꼴은 어디에도 보이지 않았습니다. 그렇다면 어딘가에 숨겨져 있다는 뜻이겠지요. 단순히 클릭하여 들어가는 파일 관리자 형태(Android Studio의 Device File Manager, Total Commander, 지퍼7 2.0 등)로는 접근할 수 없을 것으로 추측되었습니다. 처음에는 /data/data의 Font Server 패키지 속 데이터베이스에 포함되어 있을 것으로 추측하였습니다. 그러나 생각해보면, 그렇게 해서는 다른 앱이 접근할 방법이 없어보였습니다.

그래서 네이버 앱이 뱉는(?) 로그캣을 뜯어보기로 했습니다. 글꼴 변경 메뉴가 있으니, 글꼴을 읽어들이는 과정에서 혹시라도 로그를 보낸다면, 그리고 거기에 폴더 정보가 있다면 분명 읽어낼 수 있을 것이라 생각했기 때문입니다.

그리고 그 결과는...

 

 

뭔가 읽는 모습이 보였습니다. 익숙한 패키지명이 보입니다. 하지만 이건 이러나 저러나 접근하기 어려운 부분이었습니다. apk를 분해해서 그 안의 ttf만 쓰는 걸까요. 그럴 수도 있을 거란 생각이 들었습니다.

 

 

혹시나 하는 마음에 로그를 검색해보니, 조금 다른 부분이 나왔습니다. 이번엔 Total Commander에서는 보지 못한 /data/font라는 폴더가 등장합니다. 앱이 읽는 걸 보니 다른 앱도 읽을 수 있을 것 같습니다. adb는 당연히 읽을 수 있을 거란 생각이 들기도 합니다. 그래서 adb를 켜고 해당 폴더로 이동해보기로 했습니다.

 

* 참고사항: alphaplus는 LG G8 ThinQ의 코드네임입니다.

 

역시나 그 폴더를 읽을 수 있었습니다. 안에는 기대했던 바와 같이 글꼴 파일이 있었습니다. 여기서 글꼴 정보를 읽는 라이브러리를 이용해 글꼴 이름을 읽고 앱에 사용했을 것으로 유추됩니다.

해당 폴더에 담겨있는 내용은 LG SmartWorld에서 받은 글꼴 앱을 압축 풀기했을 때 /assets/에 있는 내용과도 정확히 일치합니다. 아마도 Font Server든, LG 설정 앱이든, 아니면 타사의 앱이 apk를 가져다가 그 부분의 파일만 풀어서 사용하는 것 같습니다.

간단 요약: LG SmartWorld에서 받은 글꼴은 /data/font/글꼴 패키지 폴더/font.ttf에 있다.

결론

이번 탐구 활동(?)을 통해, LG 스마트폰의 글꼴이 어디에 있는지, 왜 제 3자 앱이 LG 스마트와 같은 LG 스마트폰 기본 탑재 글꼴을 발견하지 못했는지, LG 설정은 기본 탑재 글꼴을 어디서 읽는지에 대한 정보를 알 수 있었습니다. 최소한 해당 폴더와 글꼴에는 읽기 권한이 있기 때문에 앱을 개발하시는 분들도 글꼴 변경 기능의 추가를 원할 때 도움이 되셨으리라 생각합니다. 다만 LG와 삼성이 다운로드 글꼴을 관리하는 방식이 다른 점, G8 ThinQ 이외의 기종은 다른 폴더를 사용하고 있을 수 있는 점 등을 고려해주시기를 부탁드립니다.

또한 이 글에서 글꼴의 위치를 찾아다닌 것은 앱에서 글꼴을 무단으로 복사하는 등의 과정을 거치지 않고 사용할 수 있는 방법을 찾기 위한 과정일 뿐, 해당 정보를 이용하여 글꼴을 복사 및 개인 저작물에 사용하는 등의 행위로 글꼴 저작권자와의 법정 분쟁이 일어날 가능성을 책임지지 않습니다. 이 점 주의하시기 바랍니다.

본 글과 관련하여 문의사항이 있는 경우 트위터(@paperbox_update) 혹은 댓글로 문의하시면 최대한 빠르게 답변/조치하겠습니다. 감사합니다.