Skip to content

muni v0.22.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 06:22
· 48 commits to main since this release

.hwp 의 글자 서식에서 스위치 네 개 말고 나머지 — 글자 색, 글꼴, 크기 — 를 읽습니다. 같은 문서를 한글에서 .hwpx 로 저장한 것은 색과 글꼴이 살아 들어오는데 원본 .hwp 는 그렇지 않아, 강조한 낱말이 전부 검은 본문으로 들어오던 문제입니다.

추가

.hwp — 글자 색

CHAR_SHAPE 의 글자 색은 COLORREF, 즉 0x00BBGGRR 입니다 — 파랑이 먼저입니다. RGB 로 읽으면 붉게 강조한 낱말이 전부 파랗게 들어옵니다. 색은 스위치 낱말 뒤의 그림자 오프셋 두 바이트 다음에 있고, 그 뒤로 밑줄·음영·그림자 색이 이어집니다.

.hwp — 글꼴

글꼴은 이름이 아니라 FACE_NAME 목록의 번호로 적힙니다. 그 목록은 언어별로 한글 글꼴부터 차례로 놓이므로, CHAR_SHAPE 의 첫 글꼴 번호(한글)는 목록의 앞에서부터 세면 됩니다. 이름 풀이는 DocInfo 를 끝까지 읽은 뒤에 하므로 FACE_NAME 이 CHAR_SHAPE 보다 앞에 오는지에 기대지 않습니다. 가리키는 번호에 이름이 없으면 아무 글꼴도 붙이지 않습니다 — 번호를 그대로 쓰면 "9" 라는 이름의 글꼴이 붙습니다.

.hwp — 크기

기준 크기는 .hwpxheight 와 같은 1/100 pt 단위입니다. 그 환산을 hangul.FontSize 로 옮겨 두 한글 리더가 같은 것을 씁니다.

검정과 10pt 는 표시하지 않습니다

한글은 사람이 손대지 않은 글에도 글자 모양을 전부 적어 두므로, 아무 서식 없는 문서도 "검정, 10pt" 라고 말합니다. 그 둘을 그대로 표시했다면 모든 문서의 모든 낱말에 textStyle 이 붙어, 편집기가 본문에 쓰는 것을 덮어씁니다. 두 값은 기본값으로 보고 넘깁니다.

확인

형식 문서의 필드 목록대로 바이트를 깐 새 픽스처 셋입니다 — 리더의 상수가 아니라 형식이 말하는 자리에서 씁니다.

  • 색·크기·글꼴이 붙은 CHAR_SHAPE 하나가 그대로 들어오는지
  • 검정·10pt 짜리 문서에는 아무 표시도 붙지 않는지
  • 표에 없는 글꼴 번호가 이름 대신 아무것도 내지 않는지

go vet ./...go test ./... 전체가 통과합니다.

업그레이드

마이그레이션과 설정 변경은 필요하지 않습니다.

gzip -dc muni-v0.22.0.tar.gz | docker load
docker compose -f compose.example.yaml --env-file .env up -d

.hwp 를 가져오셨다면 다시 가져와 보세요. 강조한 낱말의 색과 글꼴, 글자 크기는 이번에 처음 들어옵니다. 이미 가져와 둔 문서는 그대로 남습니다.

오프라인 설치

릴리스 asset 에는 muni:v0.22.0 Docker 이미지가 포함되어 있습니다.

gzip -dc muni-v0.22.0.tar.gz | docker load
docker image inspect muni:v0.22.0

cp .env.example .env
# .env의 네 값을 운영 환경에 맞게 변경합니다.
docker compose -f compose.example.yaml --env-file .env up -d

애플리케이션이 반드시 필요로 하는 런타임 환경변수는 다음 네 개입니다.

환경변수 설명
POSTGRES_DSN PostgreSQL 접속 문자열
BOOTSTRAP_ADMIN 최초 관리자 아이디 또는 이메일
BOOTSTRAP_ADMIN_PASSWORD 최초 관리자 비밀번호(12자 이상)
ENCRYPTION_KEY base64로 인코딩한 32-byte master key

PDF 변환 동작만 조정하는 선택 환경변수가 두 개 있습니다.

환경변수 기본값 설명
MUNI_CHROMIUM_PATH 자동 탐색 PDF Export에 사용할 headless 브라우저 경로
MUNI_PDF_CONCURRENCY 2 동시에 실행할 Chromium 프로세스 수(1~32)

운영 정보

  • 서비스 포트: 8080
  • Liveness: /healthz
  • Readiness: /readyz
  • REST API: /api/v1
  • 공개 링크: /s/{token} — 인증 없이 열리는 유일한 화면입니다
  • OpenAPI: /api/openapi.yaml — 실제 라우트와 일치하며, 테스트가 그것을 지킵니다
  • Prometheus: /metrics — 관리자 인증 필요
  • MCP: /mcp
  • 지원 DB: PostgreSQL 15 이상
  • 이미지에는 PDF Export용 Chromium과 Noto CJK 글꼴이 포함되어 있습니다.

릴리스 파일 검증

  • 파일: muni-v0.22.0.tar.gz
  • 크기: (릴리스 후 기록)
  • SHA-256: (릴리스 후 기록)
  • 내부 이미지 태그: muni:v0.22.0
sha256sum muni-v0.22.0.tar.gz

GitHub Actions가 이미지 빌드, archive 생성, 내부 이미지 태그 검증을 완료한 뒤 이 asset을 게시했습니다.

문서