현재 버전 v1.5.0-ko.3

릴리즈 노트

CrossPoint Reader 한국어 펌웨어 버전별 변경사항

v1.5.0-ko.3

최신
1.5.0-ko.32026년 8월 19일
GitHub

요약

리더에서 문단 중간의 텍스트가 통째로 빠지던 문제를 수정했습니다. X3에서 기본 리더 글꼴을 쓸 때 주로 나타났습니다.

upstream 변경 사항

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

한국어 버전 변경 사항

수정

  • 문단 중간 텍스트 누락 수정: 긴 문단에서 한 줄 분량의 글자가 사라지고, 사라진 자리에 여백도 남지 않던 문제를 수정했습니다.
    • upstream 1.5.0의 소프트 플러시가 원인 조건이었습니다. 블록의 토큰 수가 임계치(내장 CSS 사용 시 320)를 넘으면 조판을 미리 한 번 수행하면서 마지막 미완성 줄은 다음 청크로 넘깁니다.
    • 단어 단위 줄바꿈 경로는 인덱스만 계산하므로 토큰이 남지만, 글자 단위 줄바꿈(characterWrap, 한국어 기본값) 경로는 줄을 채우며 토큰을 앞에서 지웠습니다. 넘겨야 할 마지막 줄의 토큰이 이미 삭제된 뒤라 그 줄이 소실됐습니다.
    • upstream이 한글을 음절 단위 토큰으로 쪼개므로 한국어 문단은 임계치를 자주 넘습니다. X3의 뷰포트가 528 px(X4는 480 px)라 억제되는 줄에 더 많은 글자가 실려 X3에서 두드러졌습니다.
    • 이제 줄을 채울 때 커서만 옮기고, 줄이 실제로 출력된 뒤에만 토큰을 잘라냅니다.

내부

  • 섹션 캐시 버전을 41 → 42로 올렸습니다. 1.5.0-ko.2 이하에서 만들어진 캐시에는 누락된 줄이 그대로 저장돼 있으므로 다시 생성해야 합니다.
  • 글자 단위 줄바꿈 경로에 TextBlock::valid() 검사를 추가했습니다. 단어 단위 경로에는 원래 있던 검사로, 아레나 할당 실패 시 빈 블록을 페이지에 넣는 대신 힙 수치와 함께 기록합니다.
  • 문단 들여쓰기(U+3000)가 블록당 한 번만 적용되도록 했습니다. 소프트 플러시로 같은 블록이 여러 번 조판될 수 있습니다.
  • gh_release에 시리얼 로그를 다시 켰습니다(약 27 KB). defaultLOG_LEVEL=2입니다. 용량이 빠듯할 때 껐던 것인데, 이 문제는 릴리스 빌드에서 진단이 불가능했고 현재 약 670 KB 여유가 있습니다.

펌웨어 크기

firmware.bin6.25 MB 한도 대비
1.5.0-ko.25,850,000 B703,600 B 여유
1.5.0-ko.35,885,664 B667,936 B 여유

업데이트 방법

업데이트 후 해당 책의 캐시가 다시 생성되면서 첫 진입이 평소보다 느릴 수 있습니다.

v1.5.0-ko.2

1.5.0-ko.22026년 8월 19일
GitHub

요약

OTA 펌웨어 다운로드가 http_perform:ESP_ERR_HTTP_CONNECT로 실패하던 문제를 수정했습니다. 다운로드 경로를 wolfSSL 기반 HttpDownloader로 옮겼습니다.

upstream 변경 사항

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

한국어 버전 변경 사항

수정

  • OTA 다운로드 연결 실패 수정: 설정 → 시스템 → 업데이트에서 새 버전은 조회되지만 다운로드 단계에서 http_perform:ESP_ERR_HTTP_CONNECT로 중단되던 문제를 수정했습니다.
    • 업데이트 확인은 HttpDownloader(wolfSSL), 다운로드는 자체 esp_http_client(mbedTLS)로 서로 다른 TLS 스택을 쓰고 있었습니다. 이 패키지에 포함된 mbedTLS는 TLS 1.3이 빈 스텁으로 컴파일돼 있어(freeink-sdk SecureClient.h) 릴리스 CDN에 연결하지 못합니다.
    • 다운로드도 HttpDownloader::fetchUrl로 통일했습니다. GitHub → CDN 리다이렉트 처리가 내장돼 있습니다.
    • SD로 내려받은 뒤 firmware_flash::flashFromSdPath로 기록하는 2단계 구조는 그대로입니다. X4의 efuse-blk-rev 오탐을 피하기 위한 것입니다.
-DFREEINK_NET_WOLFSSL=1은 1.5.0 병합에서 처음 들어왔습니다. 그 이전(1.3.0-ko.1)에는 확인·다운로드가 모두 mbedTLS라 증상이 없었습니다.

부수 효과

esp_http_client와 mbedTLS 인증서 번들 의존이 빠지면서 firmware.bin이 191,152 B 줄었습니다.
firmware.bin6.25 MB 한도 대비
1.5.0-ko.16,041,152 B512,448 B 여유
1.5.0-ko.25,850,000 B703,600 B 여유

기술 세부

  • OtaUpdater::installUpdate에서 esp_http_client_config_t + download_event_handler + DownloadCtx를 제거하고 HttpDownloader::fetchUrl(url, DataCallback)로 대체했습니다. 콜백이 false를 반환하면 전송이 중단되므로 SD 쓰기 실패 시 즉시 빠져나옵니다.
  • 진행률은 콜백 안에서 누적 바이트로 갱신합니다. Content-Length 헤더 대신 checkForUpdate가 가져온 릴리스 자산 크기(otaSize)를 기준으로 쓰며, 잘린 다운로드 검사(short_body)도 그대로 동작합니다.
  • 이벤트 핸들러 전용이던 OtaUpdater::setLastErroresp_http_client.h / esp_crt_bundle.h 의존을 제거했습니다.

업데이트 방법

이 버전은 OTA 다운로드 자체를 고치는 것이라, 1.5.0-ko.1에서 OTA가 실패했다면 SD 카드로 설치해야 합니다.

v1.5.0-ko.1

1.5.0-ko.12026년 8월 18일
GitHub

요약

1.5.0-ko.0 의 OTA 불가 문제를 고친 긴급 수정입니다. 기능 변경은 없고, UI 글꼴(Pretendard)의 한글 수록 범위를 줄여 펌웨어를 순정 OTA 파티션 안에 다시 넣었습니다.
[!IMPORTANT] 1.5.0-ko.0 을 쓰고 계시면 이 버전으로 업데이트해 주세요. 1.5.0-ko.0 은 firmware.bin 이 6.87 MB 로 순정 CrossPoint OTA 파티션(6.25 MB)을 넘겨서, 전체 플래시를 거치지 않은 기기에서는 OTA 와 SD 카드 업데이트가 모두 TOO_LARGE 로 거부됩니다.

문제의 원인

OTA 와 SD 카드 업데이트는 app 파티션만 기록하고 파티션 테이블은 건드리지 않습니다. 그래서 순정 CrossPoint 에서 OTA 로 한국어 펌웨어에 올라온 기기는 지금도 순정 6.25 MB 테이블을 그대로 갖고 있습니다.
app0 / app1 크기
순정 CrossPoint0x640000 = 6,553,600 B
한국어 포크 (partitions.csv)0x6A0000 = 6,946,816 B
1.3.0-ko.1 까지는 firmware.bin 이 6.46 MB 라 양쪽 모두에 들어갔습니다. 1.5.0-ko.0 은 6.87 MB 로 커져서 순정 테이블 기기에서만 거부되었고, USB 가 막힌 기기는 전체 플래시라는 우회로조차 없었습니다.
파티션 테이블 자체는 1.5.0 병합에서 바뀌지 않았습니다 (partitions.csv 는 1.2.0-ko.15 이후 동일).

변경 사항

수정

  • UI 글꼴 한글 범위 축소: Pretendard 10pt 가 한글 음절 11,172자를 모두 담아 1,070 KB 를 쓰고 있었습니다. KS X 1001 완성형 2,350자로 제한해 828 KB 를 회수했습니다.
firmware.bin순정 6.25 MB 대비
1.5.0-ko.06,869,392 B315,792 B 초과
1.5.0-ko.16,041,152 B512,448 B 여유
본문 글꼴 KoPub 바탕은 한 바이트도 바뀌지 않았습니다 (한자 4,620자 포함 그대로). 읽기 화면 렌더링과 섹션 캐시는 영향이 없습니다.

알려진 제약

KS X 1001 은 현대 한국어 표기를 사실상 전부 덮지만, 빠지는 8,822자(· 같은 옛한글·의성어 조합)는 UI 에서 표시되지 않습니다. 메뉴 레이블에는 나오지 않지만 책 제목이나 파일명에는 나올 수 있습니다.
전체 한글이 필요하시면 이 릴리즈에 첨부된 .epdfont 를 SD 카드에 넣고 설정 > 화면 > 시스템 글꼴에서 선택하세요.
파일크기
pretendard_10_regular.epdfont1.06 MB
pretendard_10_bold.epdfont1.10 MB
SD 카드의 /fonts 또는 /.fonts 에 복사하면 목록에 나타납니다.

내부

  • 한국어 내장 글꼴 재생성 스크립트 lib/EpdFont/scripts/convert-korean-builtin-fonts.sh 추가. 기존 헤더는 임시 명령으로 만들어져 재현이 불가능했습니다. KoPub 을 이 스크립트로 다시 생성해도 글리프 데이터가 바이트 단위로 동일함을 확인했습니다.
  • KS X 1001 구간 생성기 lib/EpdFont/scripts/ks_x_1001_intervals.py 추가.
  • docs/firmware-size-budget.md 갱신 — 남은 여유 512 KB, 다음 감축 후보 정리.

1.5.0 기능은?

1.5.0-ko.0 의 모든 기능이 그대로 있습니다 — 점진적 섹션 색인, 오프라인 사전, 책갈피, 다음 책 추천, 선택 팝업, Wi-Fi 자동 재연결, KOReader 동기화 확장, OPDS 다중 서버. 자세한 내용은 1.5.0-ko.0 릴리즈 노트를 참고하세요.
섹션 캐시 버전은 v40 그대로입니다. 1.5.0-ko.0 에서 이미 재색인했다면 다시 하지 않습니다.
이전다음
30개의 릴리즈 중 1-3