전자책을 읽다 보면 문득 떠오른 생각을 그 자리에 적어두고 싶을 때가 있다. 한 개발자가 자신의 리더기에서 원한 것도 그만큼 소박했다. 구절 옆에 짧은 메모를 손으로 적고 다시 읽기를 이어가는 것, 그리고 손가락으로 문장을 선택해 하이라이트하거나 단어를 찾아보는 동작을 몇 초마다 모드를 바꾸지 않고도 하는 것이었다. 그렇게 나온 결과물이 오픈소스 전자책 앱 KOReader용 손글씨 플러그인 'PageScribe'와, 오프라인 발음을 담당하는 별도 플러그인 'Dictionary Audio'다. 두 플러그인은 함께 쓸 수 있지만 서로를 필요로 하지는 않는다.
펜은 쓰고, 손가락은 고른다
PageScribe에서 가장 유용했던 상호작용은 가장 단순한 쪽이었다. 기본 모드인 '펜은 쓰고, 손가락은 선택(Pen writes · Finger selects)'에서는 스타일러스 펜이 그림을 그리는 동안, 손가락 길게 누르기와 드래그는 KOReader 고유의 텍스트 선택 기능을 그대로 유지한다. 덕분에 일반적인 텍스트 하이라이트, 사전 검색, 텍스트 메모가 손글씨 기능과 공존한다.
여기서 하이라이트는 두 종류로 나뉜다. 마커(Marker)는 페이지 위에 자유로운 형태의 겹칠 획을 그리는 방식이고, 손가락으로 텍스트를 선택하면 KOReader의 일반 텍스트 주석이 만들어진다. 이 구분을 분명히 유지하는 것이 중요하다는 게 개발자의 설명이다. 어떤 생각 주위에 느슨한 표시를 남기고 싶을 때가 있고, 나중에 다시 정확히 찾아낼 문장을 지정하고 싶을 때가 있기 때문이다. 이 밖에도 지우개, 실행 취소, 페이지 메모, HTML 노트 내보내기, 그리고 지원되는 KOReader 버전에서의 PDF 잉크 내보내기를 제공한다. PageScribe는 SMUsamaShah의 Finger Ink 프로젝트를 토대로 삼았으며, 상속한 AGPL-3.0 라이선스와 이력을 그대로 보존한다.
인터페이스는 여러 번 갈아엎었다
조작 UI는 몇 차례 시행착오를 거쳤다. 원형 메뉴는 보기엔 매력적이었지만 실제로는 어떤 도구가 활성화됐는지, 다음 탭이 무엇을 할지 분명하지 않았다. 더 큰 트레이는 동작을 명확하게 했지만 이번엔 본문을 너무 많이 가렸다. 현재 방식은 화면 오른쪽 가장자리 중간쯤에 작은 원형 손글씨 실행 버튼을 두고, 이를 누르면 더 큰 인라인 툴바가 열리는 형태다. 펜 굵기, 입력 모드, 색상이 도구 옆으로 펼쳐져 페이지는 계속 보인다. 활성 도구는 채워진 버튼과 체크 표시로 구분되며, 실행 버튼과 트레이는 모두 드래그로 옮길 수 있고 ×로 트레이만 닫을 수 있다. 펜과 마커 색상은 각각 따로 기억되고, 컬러 기기에서는 팔레트가, 흑백 화면에서는 읽기 좋은 검은 잉크가 쓰인다.
발음 기능인 Dictionary Audio는 안드로이드에서 사전 검색에 'Hear English'와 'Hear Spanish' 동작을 추가한다. 스페인어는 번역된 단어 선택지와 조절 가능한 재생 속도를 제공하며, 영어와 스페인어는 서로 독립적으로 켤 수 있다. 특히 스페인어 음성은 멕시코식 합성 음성으로, 단어를 고를 때마다 온라인으로 음성을 요청하는 대신 미리 생성해 둔 파일을 기기에서 로컬 재생한다. 다만 사전 정의, 번역 데이터, 발음 팩은 각각 별도로 내려받아야 하며 플러그인만 설치해서는 함께 깔리지 않는다. 발음만 원하는 사람을 위해 오디오는 별도 저장소로 분리됐다.
폴더 이름이라는 함정, 그리고 설치
한 레딧 이용자는 PageScribe ZIP 안에 왜 pagescribe.koplugin이 아니라 fingerink.koplugin이 들어 있는지 물었다. 타당한 지적이었다. 제품 이름은 바뀌었지만 설정과 메모, 업그레이드를 보존하기 위해 설치 폴더 이름은 그대로 유지한 것이다. 정확한 설치 절차는 이렇다. pagescribe.koplugin.zip 릴리스 파일을 받아 압축을 풀고, fingerink.koplugin 폴더 전체를 KOReader의 plugins 디렉터리로 복사한다. 최종 경로는 반드시 koreader/plugins/fingerink.koplugin/main.lua여야 하며, 폴더 이름을 바꾸거나 두 번 중첩해서는 안 된다. 설치 후 KOReader를 완전히 재시작하고 필요하면 플러그인 관리자에서 활성화한 뒤 책을 열면, 실행 버튼은 라이브러리나 홈 화면이 아니라 책을 읽는 화면 안에 나타난다.
개발과 실사용은 KOReader v2026.07.2-206이 설치된 Viwoods AiPaper Mini를 중심으로 이뤄졌다. 네이티브 펜 입력에는 호환 기기와 스타일러스 콜백 API를 노출하는 KOReader 빌드가 필요하고, 손가락 그리기는 2026.03 이상, PDF 잉크 내보내기는 2026.07 이상을 요구한다. 테스트 중에는 경쟁 손글씨 캡처 플러그인을 꺼두는 편이 좋다. Boox Tab Ultra C 테스트는 진행 중인데, 실행 버튼이 뜨고 영어 음성은 재생되지만 스페인어는 소리가 나지 않았다. 교체용 PCM WAV 팩을 전송하고 체크섬까지 검증했으나 실제 소리 재생 확인은 아직 남아 있다. 개발자는 모든 안드로이드 기기가 검증된 것처럼 꾸미지 않고 이런 한계를 드러내 두고 있다.
실무자가 짚어둘 한계
주의할 점이 하나 더 있다. 리플로우 방식 전자책에서의 손글씨는 페이지 레이아웃에 묶여 있다. 글꼴 크기, 여백, 화면 방향을 바꾸면 기존 잉크의 위치가 어긋날 수 있으므로, 이미 그려둔 잉크가 있다면 레이아웃을 그대로 유지하는 편이 안전하다. 이 획들은 문장을 따라 자동으로 흐르는 손글씨가 아니라 페이지 위에 얹힌 오버레이이기 때문이다. 또한 소개 글에 함께 실린 이미지와 애니메이션은 렌더링된 UI 미리보기로 명시돼 있어, 실제 기기 촬영본이 아니며 입력 지연이나 손바닥 오터치 방지 성능을 보여주지 않는다. 개발자는 두 플러그인을 사용해 본 이들에게 기기명, KOReader 버전, 입력 모드, 성공하거나 실패한 정확한 단계를 공유해 달라고 요청한다. 펜과 손가락 동작, 툴바 위치, 발음 재생에 대한 보고가 개인용 빌드를 더 많은 사람이 쓸 수 있는 도구로 다듬는 재료가 되기 때문이다.