본 글은 제 개인 블로그에서 내용을 옮겨왔으나 문체를 제외한 전문이 동일한 관계로 블로그 글을 읽으실 필요는 전혀 없습니다.
문체 관련해서는 기본적인 예의를 갖추기 위해서 클리앙에 맞게 수정하였습니다.
글의 내용으로 곤란하신 부분이 있거나 법률상의 문제가 된다면 먼저 댓글이나 쪽지를 통해 알려주세요. 글을 삭제하도록 하겠습니다.
글꼴 찾기의 시작
처음은 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를 켜고 해당 폴더로 이동해보기로 했습니다.

역시나 그 폴더를 읽을 수 있었습니다. 안에는 기대했던 바와 같이 글꼴 파일이 있었습니다. 여기서 글꼴 정보를 읽는 라이브러리를 이용해 글꼴 이름을 읽고 앱에 사용했을 것으로 유추됩니다.
해당 폴더에 담겨있는 내용은 LG SmartWorld에서 받은 글꼴 앱을 압축 풀기했을 때 /assets/에 있는 내용과도 정확히 일치합니다. 아마도 Font Server든, LG 설정 앱이든, 아니면 타사의 앱이 apk를 가져다가 그 부분의 파일만 풀어서 사용하는 것 같습니다.
간단 요약: LG SmartWorld에서 받은 글꼴은 /data/font/글꼴 패키지명 및 알 수 없는 문자의 조합.apk/font.ttf에 있습니다.
결론
이번 탐구 활동(?)을 통해, LG 스마트폰의 글꼴이 어디에 있는지, 왜 제 3자 앱이 LG 스마트와 같은 LG 스마트폰 기본 탑재 글꼴을 발견하지 못했는지, LG 설정은 기본 탑재 글꼴을 어디서 읽는지에 대한 정보를 알 수 있었습니다. 최소한 해당 폴더와 글꼴에는 읽기 권한이 있기 때문에 앱을 개발하시는 분들도 글꼴 변경 기능의 추가를 원할 때 도움이 되셨으리라 생각합니다. 다만 LG와 삼성이 다운로드 글꼴을 관리하는 방식이 다른 점, G8 ThinQ 이외의 기종은 다른 폴더를 사용하고 있을 수 있는 점 등을 고려해주시기를 부탁드립니다.
또한 이 글에서 글꼴의 위치를 찾아다닌 것은 앱에서 글꼴을 무단으로 복사하는 등의 과정을 거치지 않고 사용할 수 있는 방법을 찾기 위한 과정일 뿐, 해당 정보를 이용하여 글꼴을 복사 및 개인 저작물에 사용하는 등의 행위로 글꼴 저작권자와의 법정 분쟁이 일어날 가능성을 책임지지 않기 때문에 주의하여 주셨으면 합니다.
더 많은 앱이 내려받은 앱이나 LG 자체 탑재 글꼴을 불러와 앱 내 콘텐츠를 표현하는 데 사용해주었으면 좋겠습니다.
시스템 펌웨어를 뜯어서 얻을수 있습니다.
펌웨어를 뜯는 방법은 xda에 많이 있으니 그걸 참고하시면 될겁니다.
LG 스마트월드에서 다운받는 폰트도 ttf파일은 apk 파일 내부에 있기 때문에 (apk/assets/font/*.ttf)
루트권한 없이도 설치된 앱의 apk를 추출해주는 서드파티앱을 통해서 얻을수는 있을겁니다.
파이어폭스에 적용되는 폰트를 바꾸려면 파이어폭스 apk를 직접 수정하거나
말씀하신대로 fonts.xml에서 기본으로 인식하는 폰트를 바꾸어야 합니다 (루트권한 필요)
예전에 작성한 fonts.xml를 바꾸는 스크립트 예시
(안드로이드10에서는 fonts.xml이 위치하는 경로가 바뀌어 적용되지 않음)
https://cafe.naver.com/refurbishfactory/162221
그냥 겍코뷰 써서 제가 브라우저를 만드는 게 낫겠다(ㅡㅡ;;)싶기도 하고요.
이 글은 글꼴 추출 방법이라기 보단, 읽기 권한이 있는 글꼴을 외부 앱이 문서작성이나 웹 브라우저 컨텐츠 표시에 사용할 수 있도록 경로를 찾아서 보여드린 것 뿐입니다. 다만 직접 시도해보니 읽기 권한은 있어서 루팅 없어도 폰 내외부에서 글꼴의 추출은 가능했기 때문에 글 말미에 면책조항(?)을 넣었습니다.
사용자 글꼴은 몰라도 최소한 기본 탑재 글꼴은 과거 LG의 위상 때문인지 반영을 하려고 했던 듯 하고요.
사용자 글꼴의 경우 애초에 삼성 기기의 커스텀 글꼴 사용도 불가능한 경우가 많아 반드시 주류의 문제는 아닌 것도 같습니다.
Product Sans 혹은 Google Sans는 기본 글꼴로 탑재된 픽셀 계열의 기기를 갖고 계신다면 Firefox의 about:config에서 수정하여 바꾸실 수 있는 것 같습니다.
말씀하신대로 Noto Sans CJK가 조금 아쉬울 때가 있어서 다른 글꼴로 설정할 수 있었으면 좋겠습니다.