Current Version v1.3.0-ko.1

Release Notes

Version-by-version changes for CrossPoint Reader Korean firmware

1.2.0-ko.20

1.2.0-ko.20June 11, 2026
GitHub

요약

SD 카드의 사용자 글꼴을 UI(시스템) 글꼴로 통째로 사용할 수 있는 "시스템 글꼴" 설정이 추가되었습니다. 선택한 글꼴이 메뉴·책 제목 등 UI 전체에 적용되며, 그 글꼴에 없는 글자(예: 한자·가나)는 기본 UI 글꼴(Pretendard)로 자동 보완됩니다.
기존 "글꼴 선택"(읽기 본문용)과는 별개의 설정으로, 시스템 글꼴 변경은 읽기 캐시를 건드리지 않아 즉시 적용됩니다.

한국어 버전 변경 사항

추가

  • 시스템 글꼴(UI) 설정 추가: 설정 → 시스템 글꼴에서 /fonts 또는 /.crosspoint/fonts.epdfont 글꼴을 골라 UI 전체 글꼴로 사용할 수 있습니다.
    • 선택한 SD 글꼴이 UI 주 글꼴이 되고, 그 글꼴이 없는 코드포인트는 Pretendard로 폴백됩니다(빈칸·대체 글리프 방지).
    • 목록 첫 항목 "Pretendard (기본)"을 고르면 기본 UI 글꼴로 되돌아갑니다.
    • 시스템 글꼴은 UI 전용이라 읽기 본문 레이아웃 캐시를 재생성하지 않습니다.

기술 세부

  • 글꼴 엔진에 글꼴 단위 리다이렉트(setFontRedirect)를 추가해 모든 UI 글꼴 요청이 한 곳에서 SD 글꼴로 전환됩니다(렌더링과 행간·어센더 메트릭 포함). 정수 2개만 사용해 추가 힙 할당이 없으며, 시스템 글꼴 미설정 시 읽기 경로에는 오버헤드가 없습니다.
  • 글리프 단위 폴백 해석(familyForGlyph)으로 글자마다 올바른 비트맵·메트릭을 사용합니다.

업데이트 방법

알려진 한계

  • 시스템 글꼴 파일은 SD 카드의 /fonts 또는 /.crosspoint/fonts에 있어야 하며, CrossPoint .epdfont 형식이어야 합니다.
  • SD 글꼴의 어센더·행간이 Pretendard와 다르면 UI 줄 간격이 달라질 수 있습니다.
  • 릴리스 펌웨어는 6.25MB 스톡 OTA 파티션 기준 여유가 약 2.4KB로 매우 적습니다. 이후 기능 추가로 펌웨어가 커지면 OTA 한 번에 설치되지 않을 수 있습니다.
  • 릴리스 펌웨어에서는 serial 진단 로그가 비활성화됩니다(개발/디버그가 필요하면 default 빌드 사용).

v1.2.0-ko.19

1.2.0-ko.19June 10, 2026
GitHub

요약

잠긴(Locked) X4에서 KO 펌웨어를 OTA 한 번으로 바로 설치할 수 있도록 릴리스 펌웨어 크기를 스톡 OTA 파티션(6.25MB) 아래로 줄였습니다.
그동안 KO 펌웨어가 스톡 app 파티션보다 커서 OTA 언락커로는 바로 설치되지 않았고, "OTA로 Crosspoint 설치 → SD 카드로 KO 재플래시"의 2단계를 거쳐야 했습니다(이슈 #15). 이번 릴리스부터는 그 우회 없이 OTA 한 단계로 설치됩니다.
한글 폰트, 한자, WiFi 웹 전송 등 읽기 기능은 모두 그대로 유지됩니다.

한국어 버전 변경 사항

변경

  • 릴리스 펌웨어를 6.25MB 스톡 OTA 파티션에 맞춤: firmware.bin을 6,886,992 → 6,548,704 바이트로 줄여 스톡 Crosspoint app 파티션(0x640000 = 6,553,600 바이트) 안에 들어가게 했습니다. 이제 OTA 언락커가 잠긴 X4에 KO를 한 번에 설치할 수 있습니다.
    • 하이픈 사전(trie) 제거: 라틴/키릴 Liang 하이픈 데이터(영·프·독·러·스·이·우, 약 310KB)를 릴리스 빌드에서 제외했습니다. 한국어는 Liang 하이픈 대상이 아니라 한글 읽기에는 영향이 없습니다. (빌드 플래그 CP_HYPHENATION_LANGS로 토글, 기본값은 전체 유지)
    • 릴리스 빌드 serial 로그 제거: 약 27KB 추가 절감.
  • 한글 폰트(KoPub Batang 14 · 한자 포함, Pretendard 10 UI), 한자, WiFi 웹 전송은 모두 유지됩니다.

업데이트 방법

  • 잠긴 X4 (처음 설치): SD카드 루트에 update.bin 파일을 복사, 전원을 연결한 채로 뒤로가기(볼륨업) + 전원을 길게 누르기
  • 기존 사용자:
    • OTA: WiFi 연결 후 설정 → 시스템 → 업데이트
    • SD: firmware.bin을 SD 카드에 복사 → 설정 → 시스템 → SD카드 펌웨어 업데이트
    • 웹 플래셔: https://crosspoint.kr/flasher
  • 설치 가이드: https://crosspoint.kr/install

알려진 한계

  • 스톡 6.25MB 파티션 기준 여유가 약 4.8KB로 매우 적습니다. 이후 기능이 추가되어 펌웨어가 커지면 다시 한 번에 OTA 설치가 안 될 수 있습니다.
  • 릴리스 펌웨어에서는 serial 진단 로그가 비활성화됩니다(개발/디버그가 필요하면 default 빌드 사용).
  • 본 저장소의 partitions.csv는 전체 플래시/SD 경로용으로 6.625MB app 파티션을 유지합니다(OTA 크기 제한과는 별개).

v1.2.0-ko.18

1.2.0-ko.18May 4, 2026
GitHub

요약

USB가 잠긴 X3 기기에서 발생하던 심한 랙(reader → 홈 전환 멈춤, 책 열기 15초+, 메뉴 진입 지연)과 heap 단편화 누적 크래시를 수정했습니다. 주 원인은 CPU 클럭 미설정 — 잠긴 X3의 부트로더가 앱을 저클럭 상태로 넘겨줘서 모든 동작이 4-16배 느렸고, 그 느린 루프가 alloc 재시도를 누적시켜 heap을 망가뜨렸습니다.

upstream 변경 사항

없음 (한국어 포크 단독 릴리즈).

한국어 버전 변경 사항

수정

  • CPU 클럭을 부팅 시 160MHz로 강제 설정: setCpuFrequencyMhz(160)gpio.begin() 직후, powerManager.begin() 직전에 호출. 이전에는 HalPowerManager가 부트로더가 남긴 클럭을 그대로 normalFreq로 받아서 영원히 그 클럭으로 동작했습니다. 잠긴 X3 기기에서 가장 큰 성능 회복.
    • 영향 예상치: 메뉴 exit ~1초 → ~250ms, 책 첫 열기 15초 → ~4초, 페이지 넘김 즉시화
    • unlocked X3는 이미 160MHz였을 가능성이 커서 변화 없거나 미미한 개선
    • 함수 실패 시 false 반환하고 기존 클럭 유지하므로 부팅 안전성 영향 없음
  • EPUB 렌더 경로 heap 가드:
    • PNG 디코더 사전 체크를 getFreeHeap()getMaxAllocHeap()로 변경. 디코더는 단일 ~44KB alloc이라 연속 블록 크기가 핵심.
    • EpubReaderActivity::renderContents 진입 시점에 maxAlloc 검사. 50KiB 미만이면 grayscale 안티앨리어싱 + image-AA 이중 렌더 스킵 → BW-only로 폴백.
    • image-AA 분기 안에서 mid-cycle 재검사 추가. 첫 render 후 단편화가 추가로 진행됐으면 두 번째 render도 스킵.
CPU 클럭 수정이 주 원인 해결이고, heap 가드는 이미지가 많거나 무거운 EPUB을 처음 열 때 절벽 직전을 더 부드럽게 만드는 보조 안전판입니다.

알려진 한계

  • 잠긴 X3의 단편화 cliff edge 자체는 SRAM 380KB 한계라 완전 제거 불가
  • 표지/이미지가 매우 많은 EPUB은 첫 열기에서 십수 초 걸릴 수 있음 (캐시 생성 비용)
  • 두 번째 열기부터는 캐시로 가속
4-6 of 30 releases