Pre Merge pull request !37 from ShikiSuen/upd/1.6.2

This commit is contained in:
ShikiSuen 2022-05-25 07:38:26 +00:00 committed by Gitee
commit 00145e8cbb
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
10 changed files with 129 additions and 25 deletions

View File

@ -4,6 +4,19 @@
威注音目前的 codebase 更能代表一個先進的 macOS 輸入法雛形專案的形態。目前的 dev 分支除了第三方 OpenCC 模組以外被威注音使用的部分全都是清一色的 Swift codebase一目了然方便他人參與比某些其它開源品牌旗下的專案更具程式方面的生命力。為什麼這樣講呢那些傳統開源品牌的專案主要使用 C++ 這門不太友好的語言Mandarin 模組現在對我而言仍舊是天書,一大堆針對記憶體指針的操作完全看不懂。搞不清楚在這一層之上的功能邏輯的話,就無法制定 Swift 版的 coding 策略),這也是我這次用 Swift 重寫了語言模型引擎與注音拼音並擊處理引擎、來換掉 Gramambular 與 OVMandarin 的原因(也是為後來者行方便)。
## 問題提報:
因技術原因,請默認本人無法接收來自任何「需要本人使用虛擬專用網路方可使用」的途徑的輸入法問題提報。
下述問題途徑可以用來提報與輸入法有關的問題:
- 大陸用戶請洽 Gitee 倉庫的工單區https://gitee.com/vChewing/vChewing-macOS/issues
- 台澎金馬及海外用戶請洽 GitLab China 倉庫的工單區可發起非公開工單https://jihulab.com/vChewing/vChewing-macOS/-/issues/
- 如果台澎金馬用戶無法註冊 Gitee 的話,請使用 GitLab China 的工單區。
- 還可以使用電郵理論上最快shikisuen◎yeah●net
## 參與說明:
為了不讓參與者們浪費各自的熱情,特設此文以說明該專案目前最需要協助的地方。
1. 將選字窗換成 IMK 內建的矩陣選字窗。

View File

@ -11,6 +11,10 @@
- 受威注音自家的鐵恨注音並擊引擎加持。
- 威注音的原廠詞庫內不存在任何可以妨礙該輸入法在世界上任何地方傳播的內容。
- 相比中州韻(鼠須管)而言,威注音能夠做到真正的大千聲韻並擊。
- 擁有拼音並擊模式,不懂注音的人群也可以受益於該輸入法所帶來的穩定的平均輸入速度。
- 相比小鶴雙拼等雙拼方案而言,威注音雙手聲韻分工明確、且重碼率只有雙拼的五分之一。
- 威注音對陸規審音完全相容:不熟悉台澎金馬審音的大陸用戶不會遇到與漢字讀音有關的不便。
- 反之亦然。
>威注音有很多特色功能。在此僅列舉部分:
>- 支援 macOS 螢幕模擬鍵盤(僅傳統大千與傳統倚天佈局)。

@ -1 +1 @@
Subproject commit b92e458ddda22f43e2a0e9b0b7a2b2aa6455fab2
Subproject commit 5560b6d252259f624cd614dfec84b1cfe2e83ec4

View File

@ -23,26 +23,38 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/// LMCore LMCoreEX range
/// range strData
/// C++ ParselessLM Swift
/// For
import Foundation
extension vChewing {
/// LMCore LMCoreEX range
/// range strData
/// C++ ParselessLM Swift
/// For
@frozen public struct LMCoreEX {
/// 便 strData
var rangeMap: [String: [Range<String.Index>]] = [:]
///
var strData: String = ""
///
var shouldReverse: Bool = false
var allowConsolidation: Bool = false
///
var defaultScore: Double = 0
///
var shouldForceDefaultScore: Bool = false
///
public var count: Int {
rangeMap.count
}
///
///
/// - parameters:
/// - reverse:
/// - consolidate: 使
/// - defaultScore:
/// - forceDefaultScore:
public init(
reverse: Bool = false, consolidate: Bool = false, defaultScore scoreDefault: Double = 0,
forceDefaultScore: Bool = false
@ -54,10 +66,14 @@ extension vChewing {
shouldForceDefaultScore = forceDefaultScore
}
///
public func isLoaded() -> Bool {
!rangeMap.isEmpty
}
///
/// - parameters:
/// - path:
@discardableResult public mutating func open(_ path: String) -> Bool {
if isLoaded() {
return false
@ -89,6 +105,7 @@ extension vChewing {
return true
}
///
public mutating func close() {
if isLoaded() {
rangeMap.removeAll()
@ -97,6 +114,9 @@ extension vChewing {
// MARK: - Advanced features
/// macOS Console.app
///
///
public func dump() {
var strDump = ""
for entry in rangeMap {
@ -110,12 +130,21 @@ extension vChewing {
IME.prtDebugIntel(strDump)
}
/// 使 strData
///
///
/// - parameters:
/// - precedingKey:
/// - key:
public func bigramsForKeys(precedingKey: String, key: String) -> [Megrez.Bigram] {
// Swift
// [Megrez.Bigram]()
precedingKey == key ? [Megrez.Bigram]() : [Megrez.Bigram]()
}
/// strData
/// - parameters:
/// - key:
public func unigramsFor(key: String) -> [Megrez.Unigram] {
var grams: [Megrez.Unigram] = []
if let arrRangeRecords: [Range<String.Index>] = rangeMap[key] {
@ -136,6 +165,9 @@ extension vChewing {
return grams
}
///
/// - parameters:
/// - key:
public func hasUnigramsFor(key: String) -> Bool {
rangeMap[key] != nil
}
@ -145,6 +177,9 @@ extension vChewing {
// MARK: - StringView Ranges Extension (by Isaac Xen)
extension String {
///
/// - parameters:
/// - splitBy:
fileprivate func ranges(splitBy separator: Element) -> [Range<String.Index>] {
var startIndex = startIndex
return split(separator: separator).reduce(into: []) { ranges, substring in

View File

@ -22,24 +22,40 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/// LMCore LMCoreNS plist
/// mac
import Foundation
extension vChewing {
/// LMCore LMCoreNS plist
/// mac
/// 使 plist
@frozen public struct LMCoreNS {
/// UTF8
var rangeMap: [String: [Data]] = [:]
/// LMCoreNS
var strData: String = ""
///
var shouldReverse: Bool = false
/// 使
var allowConsolidation: Bool = false
///
var defaultScore: Double = 0
///
var shouldForceDefaultScore: Bool = false
///
public var count: Int {
rangeMap.count
}
///
///
/// LMCoreNS 便
///
/// - parameters:
/// - reverse:
/// - consolidate: 使
/// - defaultScore:
/// - forceDefaultScore:
public init(
reverse: Bool = false, consolidate: Bool = false, defaultScore scoreDefault: Double = 0,
forceDefaultScore: Bool = false
@ -51,10 +67,14 @@ extension vChewing {
shouldForceDefaultScore = forceDefaultScore
}
///
public func isLoaded() -> Bool {
!rangeMap.isEmpty
}
///
/// - parameters:
/// - path:
@discardableResult public mutating func open(_ path: String) -> Bool {
if isLoaded() {
return false
@ -77,6 +97,7 @@ extension vChewing {
return true
}
///
public mutating func close() {
if isLoaded() {
rangeMap.removeAll()
@ -85,6 +106,9 @@ extension vChewing {
// MARK: - Advanced features
/// macOS Console.app
///
///
public func dump() {
var strDump = ""
for entry in rangeMap {
@ -104,12 +128,21 @@ extension vChewing {
IME.prtDebugIntel(strDump)
}
/// 使 UTF8
///
///
/// - parameters:
/// - precedingKey:
/// - key:
public func bigramsForKeys(precedingKey: String, key: String) -> [Megrez.Bigram] {
// Swift
// [Megrez.Bigram]()
precedingKey == key ? [Megrez.Bigram]() : [Megrez.Bigram]()
}
/// UTF8
/// - parameters:
/// - key:
public func unigramsFor(key: String) -> [Megrez.Unigram] {
var grams: [Megrez.Unigram] = []
if let arrRangeRecords: [Data] = rangeMap[cnvPhonabetToASCII(key)] {
@ -131,10 +164,20 @@ extension vChewing {
return grams
}
///
/// - parameters:
/// - key:
public func hasUnigramsFor(key: String) -> Bool {
rangeMap[cnvPhonabetToASCII(key)] != nil
}
///
///
/// 使 plist
///
/// ASCII
/// - parameters:
/// - incoming:
func cnvPhonabetToASCII(_ incoming: String) -> String {
let dicPhonabet2ASCII = [
"": "b", "": "p", "": "m", "": "f", "": "d", "": "t", "": "n", "": "l", "": "g", "": "k", "": "h",
@ -151,6 +194,11 @@ extension vChewing {
return strOutput
}
///
///
/// ASCII
/// - parameters:
/// - incoming:
func restorePhonabetFromASCII(_ incoming: String) -> String {
let dicPhonabet4ASCII = [
"b": "", "p": "", "m": "", "f": "", "d": "", "t": "", "n": "", "l": "", "g": "", "k": "", "h": "",

View File

@ -179,7 +179,7 @@ extension Megrez {
for (i, n) in nodes.enumerated() {
// X NodeAnchor node
// abs
if abs(nodesLimit) > 0, i == abs(nodesLimit) - 1 {
if abs(nodesLimit) > 0, i == abs(nodesLimit) {
break
}

View File

@ -84,6 +84,10 @@ extension Megrez {
$0.score > $1.score
}
if mutUnigrams.count > 0 {
mutScore = mutUnigrams[0].score
}
for (i, gram) in mutUnigrams.enumerated() {
mutValueUnigramIndexMap[gram.keyValue.value] = i
mutCandidates.append(gram.keyValue)

View File

@ -3,9 +3,9 @@
<plist version="1.0">
<dict>
<key>CFBundleShortVersionString</key>
<string>1.6.1</string>
<string>1.6.2</string>
<key>CFBundleVersion</key>
<string>1961</string>
<string>1962</string>
<key>UpdateInfoEndpoint</key>
<string>https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist</string>
<key>UpdateInfoSite</key>

View File

@ -726,7 +726,7 @@
<key>USE_HFS+_COMPRESSION</key>
<false/>
<key>VERSION</key>
<string>1.6.1</string>
<string>1.6.2</string>
</dict>
<key>TYPE</key>
<integer>0</integer>

View File

@ -1296,7 +1296,7 @@
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1961;
CURRENT_PROJECT_VERSION = 1962;
DEBUG_INFORMATION_FORMAT = dwarf;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
@ -1319,7 +1319,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.6.1;
MARKETING_VERSION = 1.6.2;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor;
@ -1352,7 +1352,7 @@
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1961;
CURRENT_PROJECT_VERSION = 1962;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
@ -1371,7 +1371,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.6.1;
MARKETING_VERSION = 1.6.2;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor;
@ -1486,7 +1486,7 @@
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1961;
CURRENT_PROJECT_VERSION = 1962;
DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99;
@ -1521,7 +1521,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.6.1;
MARKETING_VERSION = 1.6.2;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing;
PRODUCT_NAME = "$(TARGET_NAME)";
@ -1553,7 +1553,7 @@
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1961;
CURRENT_PROJECT_VERSION = 1962;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = "";
@ -1583,7 +1583,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.6.1;
MARKETING_VERSION = 1.6.2;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -1666,7 +1666,7 @@
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1961;
CURRENT_PROJECT_VERSION = 1962;
DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
@ -1691,7 +1691,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.6.1;
MARKETING_VERSION = 1.6.2;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
@ -1718,7 +1718,7 @@
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1961;
CURRENT_PROJECT_VERSION = 1962;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99;
@ -1738,7 +1738,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.6.1;
MARKETING_VERSION = 1.6.2;
PRODUCT_BUNDLE_IDENTIFIER = "org.atelierInmu.vChewing.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";