v1.2.0-ko.5
1.2.0-ko.52026년 4월 19일
요약
XTC / XTCH / TXT 책 관련 네 가지 회귀를 수정합니다.
- 잠자기 화면 커버: XTC/XTCH/TXT 를 읽던 중 슬립 진입 시 책 표지가 아니라 기본 슬립 화면이 뜨던 버그 (1.0.0-ko.1 부터 조용히 깨져 있었음).
- 홈 화면 썸네일 영구 유실: Heap 단편화로 malloc 실패하면
coverBmpPath가 빈 값으로 영구 저장되어 재부팅해도 돌아오지 않던 문제. - 홈 화면 흰색 카드: 썸네일 재시도 대기 중 Lyra / Lyra3Covers 테마가 fallback 아이콘을 안 그리고 빈 흰색 사각형만 표시.
- 대용량 XTC 책의 썸네일/페이지 로딩 실패 → 흰색 카드 재발: 2000+ 페이지 XTC 파일은
XtcParser::open()이 페이지 테이블 전체를 한 번에 메모리에 올려(2871페이지 → ~46KB 연속 블록) 이후 썸네일용 48KB 할당이 실패. upstream #1648 을 cherry-pick 해 페이지 테이블을 on-demand 읽기로 전환.
한국어 버전 변경 사항
수정
- 잠자기 커버 화면 복구 (XTC / XTCH / TXT) —
SleepActivity의 BMP 무결성 검증이 헤더 크기를 70바이트로 하드코딩. 1-bit BMP 실제 헤더는 62바이트라 XTC/TXT 커버가 매번 8바이트 부족으로 판정돼 삭제.Bitmap::getDataOffset()으로 파싱된 실제 헤더 오프셋 사용.- 480×800 1-bit XTC 커버 검증:
62 + 60 × 800= 48062 bytes → 기존60 × 800 + 70= 48070 bytes (FAIL) → 수정 후 48062 = PASS.
- 480×800 1-bit XTC 커버 검증:
- 홈 화면 XTC 썸네일 영구 유실 방지 —
generateThumbBmp실패 시coverBmpPath를 지우지 않도록 변경하고, 이미 빈 값이 저장된 기기 복구를 위해 홈 진입 시 확장자 기준으로 템플릿 경로 재구성. - Lyra / Lyra3Covers 테마: 썸네일 파일 없을 때 fallback 렌더 —
openFileForRead실패도hasCover = false로 떨어뜨려 빈 사각형 대신 책 아이콘 fallback 이 나오도록. - 대용량 XTC 페이지 테이블 lazy-loading (upstream #1648 cherry-pick,
fedcb2f) —XtcParser::open()이 페이지 테이블 전체를 메모리에 올리던 것을 on-demand 방식으로 변경.- Before: 페이지 수 × 16B 연속 블록 (2871 페이지 → 46KB, 4187 페이지 → 65KB)
- After: 0 bytes — 페이지 접근 시마다 SD 카드에서 16B 씩 읽기
- 페이지 전환 오버헤드는 SD seek+read (~0.1–0.5ms) 로 e-ink refresh (1–2초) 대비 무시 수준
- 모비 딕처럼 2000+ 페이지 XTC 도 이제 홈 썸네일 정상 생성
유지된 한국어 전용 기능
- UnifiedFontFamily / SdFontFamily 글꼴 시스템
- 합성 볼드(Synthetic Bold) 렌더링
- 자간 조절 / 첫 줄 들여쓰기 / 글자 단위 줄바꿈
- SD 카드 커스텀 글꼴 로딩 (KoPub Batang 기본)
- 1.2.0-ko.3: BW 버퍼 할당 실패 시 abort() 크래시 방지
- 1.2.0-ko.4: v1→v2 i18n 마이그레이션으로 업그레이드 후 키릴 표기 버그 수정
주의
[env:default]로컬 빌드는 LOG_DBG 문자열 용량으로 파티션 한계 (6,881,280 B) 를 약간 초과할 수 있습니다. 로컬 디버깅에는pio run -e gh_release -t upload권장 (LOG_ERR/LOG_INF 는 그대로 출력).