변환 옵션

모든 옵션은 .build()를 호출하기 전에 Builder에 설정합니다.

프리셋

Builder::with_preset(preset)은 일관된 기본값 집합을 구성합니다:

프리셋사전두음법칙동음이의 창
Preset::KoKr내장 stdicttrueContextWindow::PerBlock
Preset::KoKp없음falseContextWindow::Off

아래의 개별 옵션들은 프리셋을 덮어씁니다.

분할 전략

use gukhanmun::SegmentationStrategy;

builder.segmentation(SegmentationStrategy::Lattice);  // 基本
builder.segmentation(SegmentationStrategy::Eager);

Lattice는 동적 계획법으로 전역적으로 최적인 분할을 찾습니다. Eager는 왼쪽에서 오른쪽으로 가장 긴 일치를 취하는 탐욕 방식입니다; 더 빠르지만 합성어에는 덜 정확합니다.

수사 처리

NumeralStrategy는 이공일륙 같은 한자 수사 문자를 렌더링하는 방식을 제어합니다. 한자식 수사는 문맥에 따라 위치 기수법이나 가산 기수법으로 수를 나타낼 수 있습니다:

변종이공일륙년십일월일천이백삼십사
HangulPhonetic이공일륙년십일월일천이백삼십사
PositionalArabic2016년
AdditiveArabic11월1234
Smart2016년11월1234
use gukhanmun::NumeralStrategy;

builder.numerals(NumeralStrategy::HangulPhonetic);   // 基本: 이공일륙
builder.numerals(NumeralStrategy::PositionalArabic); // 2016 (年度 形)
builder.numerals(NumeralStrategy::AdditiveArabic);   // 11 (加算)
builder.numerals(NumeralStrategy::Smart);            // 文脈마다 最適을 選擇

Smart는 연도 같은 네 자리 연속에는 위치 기수법을, 수량에는 가산 기수법을 고릅니다; 범용 문서에 사용합니다.

두음법칙

builder.initial_sound_law(true);   // 켜짐 (Preset::KoKr 基本)
builder.initial_sound_law(false);  // 꺼짐 (Preset::KoKp 基本)

어떤 사전에서도 찾지 못한 문자의 fallback 독음에 남한의 음운 규칙(두음법칙)을 적용합니다:

입력법칙 켜짐 (KoKr)법칙 꺼짐 (KoKp)
내일내일래일
이유이유리유
여자여자녀자

동음이의 구별 창

서로 다른 한자어가 같은 한글 독음을 공유할 수 있습니다(예를 들어 연패(連霸)와 연패(連敗)는 둘 다 연패입니다). RenderMode::HangulOnly에서, Gukhanmun은 독자가 그것들을 구별할 수 있도록 그런 단어의 한자를 괄호 안에 유지할 수 있습니다. homophone_window는 한 독음이 모호하다고 간주되는 범위를 설정합니다:

동작
ContextWindow::Off구별 추적 안 함
ContextWindow::PerBlock (KoKr 기본)단락·리스트·헤딩 경계에서 재설정
ContextWindow::PerSection헤딩 경계에서만 재설정
ContextWindow::PerDocument입력 전체에 걸쳐 추적
use gukhanmun::ContextWindow;

builder.homophone_window(ContextWindow::Off);
builder.homophone_window(ContextWindow::PerBlock);    // KoKr의 基本
builder.homophone_window(ContextWindow::PerSection);
builder.homophone_window(ContextWindow::PerDocument);

더 넓은 창은 독음이 여러 섹션에 걸쳐 반복되는, 한자 밀도가 높은 텍스트에 적합합니다.

동음이의 탐지 전략

homophone_detection은 창 안에서 어떤 독음을 모호한 것으로 셀지를 선택합니다:

동작
HomophoneDetection::ContextLocal (기본)창 안에 뜻이 다른 동음이의어가 실제로 나타날 때에만 그 단어를 병기합니다.
HomophoneDetection::DictionaryWide사전 안 어디서든 다른 한자 형태와 공유되는 독음도 병기합니다.
use gukhanmun::HomophoneDetection;

builder.homophone_detection(HomophoneDetection::ContextLocal);    // 基本
builder.homophone_detection(HomophoneDetection::DictionaryWide);

ContextLocal은 한글 전용 출력을 깔끔하게 유지합니다: 단어는 주변 텍스트가 그것을 진짜로 모호하게 만들 때에만 병기됩니다. DictionaryWide는 더 넓지만, 내장 《표준국어대사전》 같은 큰 참조 사전으로는 거의 모든 흔한 독음에 어떤 동음이의어가 있으므로 대부분의 한자어를 병기하게 됩니다. 문맥과 무관하게 특정 단어를 항상 병기하려면, 대신 DirectiveAction::RequireHanja 지시를 사용합니다(〈사용자 지시〉 참조).

인식된 단어만 구별된다

동음이의 구별은 사전이 단위로 인식하는 단어에 대해 동작합니다. 자체 사전 항목이 없는 한자 연속은 하나의 단어로 다뤄지지 않으며, 그 fallback(비사전) 문자는 결코 병기되지 않습니다; 그 안에 있는, 인식되는 한 글자 항목(예컨대 )은 여전히 따로 처리됩니다. 예를 들어 自由子游는 둘 다 자유로 읽히는 내장 항목이므로 自由와 子游자유(自由)와 자유(子游)로 렌더링됩니다; 그러나 紫楡는 자체 항목이 없으므로, 기본 context-local 전략에서 自由와 紫楡는 병기 없이 자유와 자유로 렌더링되는데, 이는 엔진이 自由와 충돌할 두 번째 자유 단위를 결코 보지 못하기 때문입니다. 전체 용어를 구별하려면, 그것을 사용자 정의 사전에 추가하여 엔진이 그것을 하나의 단위로 다루게 합니다.

최초 출현 해제 창

켜져 있으면, 최초 출현 해제는 창 안에서 한자의 첫 출현 이후 그 한자의 병기를 멈춥니다. 이는 각 문자를 한 번 소개한 뒤 자유롭게 사용하는 문서에 유용합니다; 후속 출현은 괄호 한자 없이 순수 한글로 남습니다.

동작
ContextWindow::Off (기본)결코 해제 안 함; 모든 출현을 병기
ContextWindow::PerBlock같은 단락/블록 안에서 해제
ContextWindow::PerSection같은 섹션 안에서 해제
ContextWindow::PerDocument문서 전체에 걸쳐 해제
builder.first_occurrence_window(ContextWindow::Off);        // 基本
builder.first_occurrence_window(ContextWindow::PerBlock);
builder.first_occurrence_window(ContextWindow::PerSection);
builder.first_occurrence_window(ContextWindow::PerDocument);

오류 복구

use gukhanmun::Recovery;

builder.recovery(Recovery::Strict);   // 基本: 誤謬 時 中斷
builder.recovery(Recovery::Lenient);  // 問題가 되는 斷片을 건너뜀

HTML 변환에서 해당합니다; 순수 텍스트와 Markdown은 복구 가능한 오류를 내지 않습니다.