← 목록
기타 2026-05-19 3KB 읽기 3분

CrownyDoc 워드프로세서 약점 보완 — 탭정지/텍스트상자/특수문자

개요

CrownyDoc Office Suite 벤치마크 약점 중 워드프로세서 3개 항목을 구현 완료.

  • 약점 #11: 탭 정지(Tab Stop) — MEDIUM / medium effort
  • 약점 #22: 텍스트 상자 — MEDIUM / medium effort
  • 약점 #23: 특수문자/기호 삽입 — MEDIUM / small effort

무엇을 했는지

약점 #11 — 탭 정지(Tab Stop)

editor-toolbar.js 파일 끝에 다음을 추가:

  • CrownyToolbar.prototype.setTabStop(position, type) — 탭 정지 추가 (left/center/right/decimal)
  • CrownyToolbar.prototype.removeTabStop(position) — 탭 정지 제거
  • CrownyToolbar.prototype._showTabStopRuler() — 눈금자 UI (canvas 기반 10px 눈금, 클릭으로 추가/우클릭 제거)
  • CrownyToolbar.prototype._refreshTabStopRuler() — 마커 아이콘 갱신 (⊢⊥⊣⊤)
  • CrownyToolbar.prototype.handleTabKey(e) — 탭 키 → 다음 탭 정지까지 공백 삽입
  • CrownyToolbar.prototype._bindTabKey() — 에디터 요소에 keydown 이벤트 등록
  • 레이아웃 패널에 "탭 눈금자" 버튼 + 위치 입력 + 유형 선택 + +탭/×탭 버튼 추가

약점 #22 — 텍스트 상자

  • CrownyToolbar.prototype.insertTextBox() — position:absolute 플로팅 div 삽입
  • 드래그 이동 (mousedown/mousemove/mouseup)
  • 리사이즈 핸들 (우측 하단 파란 핸들, 최소 80x40)
  • 삭제 버튼 (포커스 시 빨간 × 표시)
  • 플레이스홀더 → 첫 클릭 시 제거
  • 삽입 패널에 "텍스트 상자" 버튼 추가
  • 약점 #23 — 특수문자/기호 삽입

  • CrownyToolbar.prototype.showSpecialCharDialog() — 모달 다이얼로그
  • 카테고리 탭: 최근 사용 / 수학기호 / 화살표 / 통화 / 기타 (각 20자)
  • 10열 그리드, hover 시 파란 강조
  • 미리보기 (32px) + 유니코드 코드포인트 표시
  • 클릭 → 저장된 Range에 insertNode로 커서 위치 삽입
  • 최근 사용 최대 16개, localStorage 영속화
  • ESC·바깥클릭으로 닫기
  • 삽입 패널에 "특수문자(Ω)" 버튼 추가
  • 관련 파일 경로

    • /Users/ef/CrownyDoc/한선씨/정적/editor-toolbar.js — 3개 기능 추가 (메인 구현)
    • /Users/ef/CrownyDoc/한선씨/편집기/도구모음확장.한선 — 한선씨 동반 파일 (신규)
    • /Users/ef/CrownyDoc/benchmark-weaknesses.json — id 11/22/23 status → "done"

    잔여 이슈

    • 탭 정지 눈금자: 현재 커서 픽셀 위치 추정이 getBoundingClientRect 기반이라 정밀도 한계 있음. 폰트 크기·줄 길이 변화에 따라 미세 오차 발생 가능.
    • 텍스트 상자: position:absolute 이므로 문서 흐름 밖 배치. 인쇄/PDF 출력 시 별도 처리 필요.
    • 특수문자: 검색(입력으로 필터) 기능 미구현 — 향후 추가 고려.
    • 한선씨 동반 파일 컴파일 검증은 Bash 권한 미승인으로 미실행. 수동 컴파일 필요.