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 度 |
백슬래시 이스케이프
변환을 방지하려면 구두점 앞에 \를 붙입니다:
| 입력 | 출력 |
|---|---|
价格\,很贵 | 价格,很贵 (쉼표가 반각으로 유지됨) |
测试\.内容 | 测试.内容 (마침표가 반각으로 유지됨) |
설정
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)