서체

선택한 글자에 서체 갈래를 적용합니다. 범위를 선택하면 그 범위만 바꾸고, 캐럿만 있으면 현재 문단의 글자에 적용합니다. 실제 글꼴 파일과 font-family는 서비스 CSS가 정합니다.

기본 갈래는 sans, serif, mono, cursive입니다. 특히 한글을 포함한 서비스에서는 각 갈래에 어떤 글꼴을 연결할지 직접 정해 두는 편이 좋습니다.

wing
기본 서체높이
HTML에디터를 불러오는 중…
JSON나비트리에디터를 불러오는 중…
설치
npm install nabi-note
코드
import {
  createNabiWith, mountSurface, mountToolbar, mountContextToolbar,
  mountHints, watchSettle, typefaceWing, fontSizeWing, dropCapWing,
  mountViewTools,
} from 'nabi-note'

const selected = [
  typefaceWing,
  fontSizeWing,
  dropCapWing,
]
const { nabi, registry } = createNabiWith(selected)

const root = document.querySelector('.nabi')!
const content = document.querySelector('.nabi-content')!

// locale 이 글의 방향도 정한다 — 아랍어·우르두면 오른쪽에서 왼쪽으로 선다
mountSurface({ nabi, registry, root: content, locale: 'ko' })

const settle = watchSettle(document, { surface: content })
const shared = { nabi, registry, surface: content, settle, locale: 'ko' }
const toolbar = mountToolbar({ ...shared, root: document.querySelector('#toolbar')! })
const context = mountContextToolbar({ ...shared, root: document.querySelector('#context')! })
mountHints({ toolbar, context, root, surface: content })
// 미리보기·전체화면 두 단추 — 툴바 줄의 끝에 제 상자를 세워 앉는다
mountViewTools({ ...shared, root, container: document.querySelector('#toolbar')! })

// 값이 바뀔 때마다 — 여기에 당신의 코드를 건다
// nabi.onChange(() => user_callback(nabi.getHtml()))
ts
const selected = wings().use('tf', {
  values: ['sans', 'serif', 'mono'],
}).build()

values를 생략하면 기본 갈래를 모두 사용합니다. values에 넣은 값만 문서에서 허용됩니다.

CSS 스타일

문서에는 갈래 이름만 저장되고 글꼴 파일은 CSS가 정합니다. 편집기와 게시 화면의 같은 컨테이너에서 변수를 바꾸세요.

css
.nabi-content {
  --nabi-font-serif: "Noto Serif KR", serif;
  --nabi-font-mono: "JetBrains Mono", monospace;
}

웹 폰트를 쓴다면 해당 글꼴 파일도 먼저 불러와야 합니다. cursive는 한글 지원 글꼴이 없는 경우가 많으므로, 서비스에서 실제로 쓸 글꼴을 지정한 뒤 제공하는 편이 좋습니다.