CJK 서식 가이드
VMark에는 중국어, 일본어, 한국어 텍스트를 위한 포괄적인 서식 규칙이 포함되어 있습니다. 이 도구들은 CJK와 라틴 문자를 혼용할 때 일관된 타이포그래피를 유지하는 데 도움이 됩니다.
빠른 시작
서식 → CJK 문서 서식 을 사용하거나 Alt + Mod + Shift + F를 눌러 전체 문서를 서식화합니다.
선택 영역만 서식화하려면 Mod + Shift + F를 사용합니다.
서식 규칙
1. CJK-라틴 간격
CJK와 라틴 문자/숫자 사이에 자동으로 공백을 추가합니다.
| 이전 | 이후 |
|---|---|
| 学习Python编程 | 学习 Python 编程 |
| 共100个 | 共 100 个 |
| 使用macOS系统 | 使用 macOS 系统 |
2. 전각 구두점
CJK 맥락에서 반각 구두점을 전각으로 변환합니다.
| 이전 | 이후 |
|---|---|
| 你好,世界 | 你好,世界 |
| 什么? | 什么? |
| 注意:重要 | 注意:重要 |
3. 전각 문자 변환
전각 문자와 숫자를 반각으로 변환합니다.
| 이전 | 이후 |
|---|---|
| 1234 | 1234 |
| ABC | ABC |
4. 괄호 변환
CJK 내용을 감싸는 반각 괄호를 전각으로 변환합니다.
| 이전 | 이후 |
|---|---|
| (注意) | (注意) |
| [重点] | 【重点】 |
| (English) | (English) |
5. 대시 변환
이중 하이픈을 올바른 CJK 대시로 변환합니다.
| 이전 | 이후 |
|---|---|
| 原因--结果 | 原因 —— 结果 |
| 说明--这是 | 说明 —— 这是 |
6. 스마트 따옴표 변환
VMark는 다음을 올바르게 처리하는 스택 기반 따옴표 쌍 알고리즘 을 사용합니다:
- 어포스트로피:
don't,it's,l'amour와 같은 축약형은 보존됩니다 - 소유격:
Xiaolai's는 그대로 유지됩니다 - 프라임:
5'10"(피트/인치)와 같은 측정값은 보존됩니다 - 연대:
'90s와 같은 약어는 인식됩니다 - CJK 맥락 감지: CJK 내용을 둘러싼 따옴표는 곡선/코너 따옴표로 변환됩니다
| 이전 | 이후 |
|---|---|
| 他说"hello" | 他说 "hello" |
| "don't worry" | "don't worry" |
| 5'10" tall | 5'10" tall |
코너 괄호 옵션이 활성화된 경우:
| 이전 | 이후 |
|---|---|
| "中文内容" | 「中文内容」 |
| 「包含'嵌套'」 | 「包含『嵌套』」 |
7. 줄임표 표준화
줄임표 서식을 표준화합니다.
| 이전 | 이후 |
|---|---|
| 等等. . . | 等等... |
| 然后. . .继续 | 然后... 继续 |
8. 반복 구두점
연속된 구두점을 제한합니다 (설정 가능한 한도).
| 이전 | 이후 (한도=1) |
|---|---|
| 太棒了!!! | 太棒了! |
| 真的吗??? | 真的吗? |
9. 기타 정리
- 여러 공백 압축:
多个 空格→多个 空格 - 후행 공백 제거
- 슬래시 간격:
A / B→A/B - 통화 간격:
$ 100→$100
보호되는 내용
다음 내용은 서식화의 영향을 받지 않습니다:
- 코드 블록 (```)
- 인라인 코드 (`)
- 링크 URL
- 이미지 경로
- HTML 태그
- YAML 프론트매터
- 백슬래시로 이스케이프된 구두점 (예:
\,는,로 유지됨)
기술 구문
VMark의 라틴 스팬 스캐너 는 자동으로 기술 구문을 감지하고 구두점 변환으로부터 보호합니다:
| 타입 | 예시 | 보호 |
|---|---|---|
| URL | https://example.com | 모든 구두점 보존 |
| 이메일 | user@example.com | @ 및 . 보존 |
| 버전 | v1.2.3, 1.2.3.4 | 마침표 보존 |
| 소수 | 3.14, 0.5 | 마침표 보존 |
| 시간 | 12:30, 1:30:00 | 콜론 보존 |
| 천 단위 | 1,000, 1,000,000 | 쉼표 보존 |
| 도메인 | example.com | 마침표 보존 |
예시:
| 이전 | 이후 |
|---|---|
| 版本v1.2.3发布 | 版本 v1.2.3 发布 |
| 访问https://example.com获取 | 访问 https://example.com 获取 |
| 温度是3.14度 | 温度是 3.14 度 |
백슬래시 이스케이프
변환을 방지하려면 구두점 앞에 \를 붙입니다:
| 입력 | 출력 |
|---|---|
价格\,很贵 | 价格,很贵 (쉼표가 반각으로 유지됨) |
测试\.内容 | 测试.内容 (마침표가 반각으로 유지됨) |
AI 지원 서식
MCP 서버가 연결되어 있으면 AI 어시스턴트가 document.transform 도구를 통해 다음 세 가지 kind 값 중 하나를 사용하여 프로그래밍 방식으로 CJK 서식을 적용할 수 있습니다:
"cjk-format"— 전체 CJK 정규화 (설정에 따른 간격 + 구두점 + 스마트 따옴표)"cjk-spacing"— CJK ↔ 라틴/숫자 경계 주변의 공백만 조정"cjk-punctuation"— 규칙에 따라 전각과 반각 사이에서 구두점 변환
각 변환은 활성 문서에 대해 직렬화-서식-파싱 왕복을 실행하여 인라인 마크 (굵게, 링크, 수식 등)를 보존하고 구성된 서식 규칙을 준수합니다.
전체 요청 형태는 MCP 도구 참조를 확인하세요 — document.transform은 tabId, kind, 그리고 낙관적 동시성을 위한 expected_revision을 받습니다.
설정
CJK 서식 옵션은 설정 → 언어에서 구성할 수 있습니다:
- 특정 규칙 활성화/비활성화
- 구두점 반복 한도 설정
- 따옴표 스타일 선택 (표준 또는 코너 괄호)
컨텍스트 따옴표
컨텍스트 따옴표 가 활성화된 경우 (기본값):
- CJK 내용을 둘러싼 따옴표 → 곡선 따옴표
"" - 순수 라틴 내용을 둘러싼 따옴표 → 직선 따옴표
""
이는 CJK 내용을 올바르게 서식화하면서 영어 텍스트의 자연스러운 모양을 보존합니다.
CJK 코너 괄호 (기본값 비활성화)
CJK 코너 따옴표 가 활성화되면 CJK 내용 주변의 곡선 따옴표가 코너 괄호 (기본 「」, 중첩 『』)로 변환됩니다 — 세로 CJK 조판의 전통적인 인용 형식입니다. 이 설정과 관계없이 라틴 내용은 표준 곡선 따옴표를 유지합니다.
참고문헌 섹션 건너뛰기
CJK 서식기는 "References" / "참고문헌" / "参考文献" / "参考资料" / "Bibliography" 제목을 감지하고 해당 섹션의 재서식화를 건너뜁니다 — 인용 형식의 텍스트는 CJK 규칙이 정규화하면 잃을 수 있는 특정 구두점에 의존하는 경우가 많습니다.
무결성 검증
CJK 서식 패스가 끝날 때마다, 서식기는 변환 전후의 보이는 텍스트 콘텐츠 (공백/구두점 변환 무시)를 비교하는 무결성 검사를 실행합니다. 검사가 실패하면 작업이 롤백되고 진단이 표시됩니다 — CJK 서식이 콘텐츠를 조용히 잃어버리지 않음을 보장합니다.
CJK 자간
VMark에는 CJK 텍스트 전용 자간 기능이 포함되어 있어 문자 사이에 미묘한 간격을 추가하여 가독성을 향상시킵니다.
설정
설정 → 에디터 → 타이포그래피 → CJK 자간 에서 구성합니다:
| 옵션 | 값 | 설명 |
|---|---|---|
| 없음 | 0 | 자간 없음 (기본값) |
| 미묘 | 0.02em | 거의 눈에 띄지 않는 간격 |
| 가벼운 | 0.03em | 가벼운 간격 |
| 보통 | 0.05em | 대부분의 사용 사례에 권장 |
| 넓은 | 0.08em | 더 뚜렷한 간격 |
작동 방식
- CJK 문자 구간에 letter-spacing CSS 적용
- 코드 블록 및 인라인 코드 제외
- WYSIWYG와 내보낸 HTML 모두에서 작동
- 라틴 텍스트나 숫자에는 영향 없음
예시
자간 없음:
这是一段中文文字,没有任何字间距。
0.05em 자간 있음:
这 是 一 段 中 文 文 字 , 有 轻 微 的 字 间 距 。
차이는 미묘하지만 특히 긴 단락에서 가독성을 향상시킵니다.
스마트 따옴표 스타일
VMark는 직선 따옴표를 타이포그래피적으로 올바른 스마트 따옴표로 자동 변환할 수 있습니다. 이 기능은 CJK 서식화 중에 작동하며 여러 따옴표 스타일을 지원합니다.
따옴표 스타일
| 스타일 | 큰따옴표 | 작은따옴표 |
|---|---|---|
| 곡선 | "text" | 'text' |
| 코너 괄호 | 「text」 | 『text』 |
| 기요메 | «text» | ‹text› |
스택 기반 쌍 알고리즘
VMark는 따옴표 쌍을 위해 정교한 스택 기반 알고리즘을 사용합니다:
- 토큰화: 텍스트의 모든 따옴표 문자를 식별
- 분류: 컨텍스트를 기반으로 각 따옴표가 열기인지 닫기인지 결정
- 어포스트로피 감지: 축약형 (don't, it's)을 인식하고 보존
- 프라임 감지: 측정값 (5'10")을 인식하고 보존
- CJK 컨텍스트 감지: 인용된 내용이 CJK 문자를 포함하는지 확인
- 고아 정리: 일치하지 않는 따옴표를 적절히 처리
예시
| 이전 | 이후 (곡선) |
|---|---|
| "hello" | "hello" |
| 'world' | 'world' |
| it's | it's |
| don't | don't |
| 5'10" | 5'10" |
| '90s | '90s |
축약형 (예: "it's" 또는 "don't")의 어포스트로피는 올바르게 보존됩니다.
커서에서 따옴표 스타일 토글
전체 문서를 다시 서식화하지 않고 기존 따옴표의 스타일을 빠르게 토글할 수 있습니다. 커서를 따옴표 쌍 안에 놓고 Shift + Mod + '를 눌러 토글합니다.
단순 모드 (기본값): 직선 따옴표와 선호 스타일 사이를 토글합니다.
| 이전 | 이후 | 다시 이후 |
|---|---|---|
| "hello" | "hello" | "hello" |
| 'world' | 'world' | 'world' |
전체 순환 모드: 네 가지 스타일을 순환합니다.
| 단계 | 큰따옴표 | 작은따옴표 |
|---|---|---|
| 1 | "text" | 'text' |
| 2 | "text" | 'text' |
| 3 | 「text」 | 『text』 |
| 4 | «text» | ‹text› |
| 5 | "text" (시작으로 돌아감) | 'text' |
중첩된 따옴표: 따옴표가 중첩되어 있을 때 명령은 커서를 포함하는 가장 안쪽 쌍을 토글합니다.
스마트 감지: 어포스트로피 (don't), 프라임 (5'10"), 연대 약어 ('90s)는 따옴표 쌍으로 처리되지 않습니다.
TIP
설정 → 언어 → CJK 서식 → 따옴표 토글 모드에서 단순 모드와 전체 순환 모드를 전환합니다.
설정
설정 → 언어 → CJK 서식에서 스마트 따옴표 변환을 활성화합니다. 드롭다운 메뉴에서 선호하는 따옴표 스타일을 선택할 수도 있습니다.
CJK 코너 괄호 변환
CJK 코너 따옴표 가 활성화되면 CJK 내용을 둘러싼 곡선 따옴표가 자동으로 코너 괄호로 변환됩니다.
지원되는 문자
코너 괄호 변환은 인용된 내용에 중국 문자 (CJK 통합 한자 U+4E00–U+9FFF)가 포함될 때 트리거됩니다:
| 내용 타입 | 예시 | 변환? |
|---|---|---|
| 중국어 | "中文" | ✓ 「中文」 |
| 한자가 포함된 일본어 | "日本語" | ✓ 「日本語」 |
| 히라가나만 | "ひらがな" | ✗ "ひらがな"로 유지 |
| 가타카나만 | "カタカナ" | ✗ "カタカナ"로 유지 |
| 한국어 | "한글" | ✗ "한글"로 유지 |
| 영어 | "hello" | ✗ "hello"로 유지 |
팁: 히라가나만 있는 일본어 텍스트의 경우 코너 괄호 「」를 수동으로 사용하거나 최소 하나의 한자를 포함하세요.
테스트 단락
이 서식화되지 않은 텍스트를 VMark에 복사하고 Alt + Mod + Shift + F를 눌러 서식화합니다:
最近我在学习TypeScript和React,感觉收获很大.作为一个developer,掌握这些modern前端技术是必须的.
目前已经完成了3个projects,代码量超过1000行.其中最复杂的是一个dashboard应用,包含了数据可视化,用户认证,还有API集成等功能.
学习过程中遇到的最大挑战是--状态管理.Redux的概念. . .说实话有点难理解.后来换成了Zustand,简单多了!
老师说"don't give up"然后继续讲"写代码要注重可读性",我觉得很有道理.
访问https://example.com/docs获取v2.0.0版本文档,价格$99.99,时间12:30开始.
项目使用的技术栈如下:
- **Frontend**--React + TypeScript
- **Backend**--Node.js + Express
- **Database**--PostgreSQL
总共花费大约$200美元购买了学习资源,包括书籍和online courses.虽然价格不便宜,但非常值得.예상 결과
서식화 후 텍스트는 다음과 같이 표시됩니다:
最近我在学习 TypeScript 和 React,感觉收获很大。作为一个 developer,掌握这些 modern 前端技术是必须的。
目前已经完成了 3 个 projects,代码量超过 1000 行。其中最复杂的是一个 dashboard 应用,包含了数据可视化,用户认证,还有 API 集成等功能。
学习过程中遇到的最大挑战是 —— 状态管理。Redux 的概念... 说实话有点难理解。后来换成了 Zustand,简单多了!
老师说 "don't give up" 然后继续讲 "写代码要注重可读性",我觉得很有道理。
访问 https://example.com/docs 获取 v2.0.0 版本文档,价格 $99.99,时间 12:30 开始。
项目使用的技术栈如下:
- Frontend —— React + TypeScript
- Backend —— Node.js + Express
- Database —— PostgreSQL
总共花费大约 $200 美元购买了学习资源,包括书籍和 online courses。虽然价格不便宜,但非常值得。
적용된 변경 사항:
- CJK-라틴 간격 추가 (学习 TypeScript)
- 전각 구두점 변환 (,。!)
- 전각 숫자 정규화 (3→3, 1000→1000, 200→200)
- 이중 하이픈을 em 대시로 변환 (-- → ——)
- 줄임표 정규화 (. . . → ...)
- 스마트 따옴표 적용, 어포스트로피 보존 (don't)
- 기술 구문 보호 (https://example.com/docs, v2.0.0, $99.99, 12:30)