From 059f065448af55f530768999e1c3d8f939879631 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Tue, 24 May 2022 13:06:25 +0800 Subject: [PATCH 1/7] Megrez v1.1.4 // Fix wrong loop condition in reverseWalk(). --- .../Modules/LanguageParsers/Megrez/1_BlockReadingBuilder.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Modules/LanguageParsers/Megrez/1_BlockReadingBuilder.swift b/Source/Modules/LanguageParsers/Megrez/1_BlockReadingBuilder.swift index eb562795..992aa068 100644 --- a/Source/Modules/LanguageParsers/Megrez/1_BlockReadingBuilder.swift +++ b/Source/Modules/LanguageParsers/Megrez/1_BlockReadingBuilder.swift @@ -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 } From 4b35aac0b43725a623ef2b2fb8266182c5d4d2ee Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Wed, 25 May 2022 10:37:14 +0800 Subject: [PATCH 2/7] Megrez v1.1.5 // Fix a regression made since Megrez v1.1.1 update. --- Source/Modules/LanguageParsers/Megrez/4_Node.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Source/Modules/LanguageParsers/Megrez/4_Node.swift b/Source/Modules/LanguageParsers/Megrez/4_Node.swift index 5b658e1c..01f6c6d9 100644 --- a/Source/Modules/LanguageParsers/Megrez/4_Node.swift +++ b/Source/Modules/LanguageParsers/Megrez/4_Node.swift @@ -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) From 0ff626b80a4475fe8433a215fd7fd35ca10e8ff8 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Wed, 25 May 2022 12:01:55 +0800 Subject: [PATCH 3/7] README // Updating advertised feature list. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 680ed38b..167c9904 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,10 @@ - 受威注音自家的鐵恨注音並擊引擎加持。 - 威注音的原廠詞庫內不存在任何可以妨礙該輸入法在世界上任何地方傳播的內容。 - 相比中州韻(鼠須管)而言,威注音能夠做到真正的大千聲韻並擊。 +- 擁有拼音並擊模式,不懂注音的人群也可以受益於該輸入法所帶來的穩定的平均輸入速度。 + - 相比小鶴雙拼等雙拼方案而言,威注音雙手聲韻分工明確、且重碼率只有雙拼的五分之一。 +- 威注音對陸規審音完全相容:不熟悉台澎金馬審音的大陸用戶不會遇到與漢字讀音有關的不便。 + - 反之亦然。 >威注音有很多特色功能。在此僅列舉部分: >- 支援 macOS 螢幕模擬鍵盤(僅傳統大千與傳統倚天佈局)。 From 4419548fd8eb6ecc96a4139061a103fab4284284 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Wed, 25 May 2022 15:08:16 +0800 Subject: [PATCH 4/7] LMs // Add documentation to LMCoreNS & LMCoreEX. --- .../LangModelRelated/SubLMs/lmCoreEX.swift | 45 ++++++++++++++-- .../LangModelRelated/SubLMs/lmCoreNS.swift | 54 +++++++++++++++++-- 2 files changed, 91 insertions(+), 8 deletions(-) diff --git a/Source/Modules/LangModelRelated/SubLMs/lmCoreEX.swift b/Source/Modules/LangModelRelated/SubLMs/lmCoreEX.swift index f9fb705e..f3d60bb4 100644 --- a/Source/Modules/LangModelRelated/SubLMs/lmCoreEX.swift +++ b/Source/Modules/LangModelRelated/SubLMs/lmCoreEX.swift @@ -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]] = [:] + /// 資料庫字串陣列。 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] = 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] { var startIndex = startIndex return split(separator: separator).reduce(into: []) { ranges, substring in diff --git a/Source/Modules/LangModelRelated/SubLMs/lmCoreNS.swift b/Source/Modules/LangModelRelated/SubLMs/lmCoreNS.swift index 7e4eacb6..74a7eb26 100644 --- a/Source/Modules/LangModelRelated/SubLMs/lmCoreNS.swift +++ b/Source/Modules/LangModelRelated/SubLMs/lmCoreNS.swift @@ -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": "ㄏ", From 57e5ba7ea9d4b4456335a53d694ccc7bbd37add0 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Wed, 25 May 2022 12:54:58 +0800 Subject: [PATCH 5/7] CONTRIBUTING // Specify where to open issue tickets. --- CONTRIBUTING.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eba07d2e..f18de3f4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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 內建的矩陣選字窗。 From a95882705469790bd27a454a0c09cddacbdb2618 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Wed, 25 May 2022 11:55:20 +0800 Subject: [PATCH 6/7] Update Data - 20220525 --- Source/Data | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Data b/Source/Data index b92e458d..5560b6d2 160000 --- a/Source/Data +++ b/Source/Data @@ -1 +1 @@ -Subproject commit b92e458ddda22f43e2a0e9b0b7a2b2aa6455fab2 +Subproject commit 5560b6d252259f624cd614dfec84b1cfe2e83ec4 From cdabaf4646847efad2e111a73f040c6f2409c861 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Wed, 25 May 2022 15:31:50 +0800 Subject: [PATCH 7/7] Bump version to 1.6.2 Build 1962. --- Update-Info.plist | 4 ++-- vChewing.pkgproj | 2 +- vChewing.xcodeproj/project.pbxproj | 24 ++++++++++++------------ 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Update-Info.plist b/Update-Info.plist index 72b5337f..6c77dd16 100644 --- a/Update-Info.plist +++ b/Update-Info.plist @@ -3,9 +3,9 @@ CFBundleShortVersionString - 1.6.1 + 1.6.2 CFBundleVersion - 1961 + 1962 UpdateInfoEndpoint https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist UpdateInfoSite diff --git a/vChewing.pkgproj b/vChewing.pkgproj index 9690c996..42e3dcec 100644 --- a/vChewing.pkgproj +++ b/vChewing.pkgproj @@ -726,7 +726,7 @@ USE_HFS+_COMPRESSION VERSION - 1.6.1 + 1.6.2 TYPE 0 diff --git a/vChewing.xcodeproj/project.pbxproj b/vChewing.xcodeproj/project.pbxproj index 491f50a9..022cd864 100644 --- a/vChewing.xcodeproj/project.pbxproj +++ b/vChewing.xcodeproj/project.pbxproj @@ -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 = "";