// 建立 LanguageDatabase 物件
FREngine::ILanguageDatabasePtr pLanguageDatabase = Engine->CreateLanguageDatabase();
// 建立新的 TextLanguage 物件
FREngine::ITextLanguagePtr pTextLanguage = pLanguageDatabase->CreateTextLanguage();
// 從預先定義的 English 語言複製所有屬性
FREngine::ITextLanguagePtr pEnglishLanguage =
Engine->PredefinedLanguages->Find( "English" )->TextLanguage;
pTextLanguage->CopyFrom( pEnglishLanguage );
pTextLanguage->InternalName = L"SampleTL";
// 將新字典繫結到 TextLanguage 中的第一個(也是唯一一個)BaseLanguage 物件
FREngine::IBaseLanguagePtr pBaseLanguage = pTextLanguage->BaseLanguages->Item(0);
// 將內部字典名稱變更為使用者自訂的名稱
pBaseLanguage->InternalName = L"SampleBL";
// 新增空格字元
_bstr_t alphabet = pBaseLanguage->GetLetterSet( FREngine::BLLS_Alphabet );
pBaseLanguage->put_LetterSet( FREngine::BLLS_Alphabet, alphabet + L" " );
// 建立新字典
_bstr_t dictionaryFile = L"D:\\sample.amd";
FREngine::IDictionaryPtr pDictionary =
pLanguageDatabase->CreateNewDictionary( dictionaryFile, FREngine::LI_EnglishUnitedStates );
pDictionary->Name = L"Sample";
// 將含空格的字詞新增到字典中
pDictionary->AddWord( "New York", 100 );
// 取得字典描述集合並刪除所有項目
FREngine::IDictionaryDescriptionsPtr pDictionaryDescriptions =
pBaseLanguage->DictionaryDescriptions;
pDictionaryDescriptions->DeleteAll();
// 建立使用者字典描述並將其加入集合
FREngine::IDictionaryDescriptionPtr dic =
pDictionaryDescriptions->AddNew(FREngine::DT_UserDictionary);
// 指定包含含空格字詞的字典路徑
FREngine::IUserDictionaryDescriptionPtr userDic =
dic->GetAsUserDictionaryDescription();
userDic->FileName = dictionaryFile;
FREngine::ILayoutPtr pLayout;
...
// 指定所有文字區塊的 RecognizerParams 物件屬性
// 逐一巡覽區塊
for( int i = pLayout->Blocks->Count - 1; i >= 0; i-- ) {
FREngine::BlockTypeEnum blockType = pLayout->Blocks->Item( i )->Type;
// 找出文字區塊
if( blockType != FREngine::BT_Text ) {
pLayout->Blocks->DeleteAt(i);
} else {
pLayout->Blocks->Item(i)->GetAsTextBlock()->RecognizerParams->
TextLanguage = pTextLanguage;
pLayout->Blocks->Item(i)->GetAsTextBlock()->RecognizerParams->
OneWordPerLine = VARIANT_TRUE;
}
}
...