Pre Merge pull request !11 from ShikiSuen/upd/1.4.1

This commit is contained in:
ShikiSuen 2022-03-22 14:28:40 +00:00 committed by Gitee
commit 705831a324
16 changed files with 730 additions and 468 deletions

View File

@ -57,7 +57,7 @@
"QYf-Nf-hoi.title" = "OpenVanilla 小麦注音プロジェクトから派生。"; "QYf-Nf-hoi.title" = "OpenVanilla 小麦注音プロジェクトから派生。";
/* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "VW8-s5-Wpn"; */ /* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "VW8-s5-Wpn"; */
"VW8-s5-Wpn.title" = "小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。\nmacOS 版の開発Shiki Suen, Hiraku Wang, など。\n威注音語彙データの維持Shiki Suen。"; "VW8-s5-Wpn.title" = "小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。\nmacOS 版威注音の開発Shiki Suen, Hiraku Wang, など。\n威注音語彙データの維持Shiki Suen。";
/* Class = "NSTextFieldCell"; title = "Placeholder for showing copyright information."; ObjectID = "eo3-TK-0rB"; */ /* Class = "NSTextFieldCell"; title = "Placeholder for showing copyright information."; ObjectID = "eo3-TK-0rB"; */
"eo3-TK-0rB.title" = "Placeholder for showing copyright information."; "eo3-TK-0rB.title" = "Placeholder for showing copyright information.";

View File

@ -0,0 +1,2 @@
#!/bin/sh
~/Library/Input\ Methods/vChewing.app/Contents/MacOS/vChewing install --all

View File

@ -2,7 +2,7 @@ vChewing macOS: MIT商標不許可ライセンス (MIT-NTL License)
© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project. © 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.
小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。 小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。
威注音 macOS 版の開発Hiraku Wang, Shiki Suen, など。 macOS 版威注音の開発Hiraku Wang, Shiki Suen, など。
威注音語彙データの維持Shiki Suen。 威注音語彙データの維持Shiki Suen。
以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。 以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。

View File

@ -72,7 +72,7 @@
威注音輸入法 macOS 版程式維護Shiki Suen。特別感謝 Hiraku Wong 等人的技術協力。 威注音輸入法 macOS 版程式維護Shiki Suen。特別感謝 Hiraku Wong 等人的技術協力。
威注音詞庫由孫志貴維護,以 3-Clause BSD License 授權釋出 威注音詞庫由 Shiki Suen 維護,以 3-Clause BSD License 授權釋出。其中的詞頻數據[由 NAER 授權用於非商業用途](https://twitter.com/ShikiSuen/status/1479329302713831424)
使用者可自由使用、散播本軟體,惟散播時必須完整保留版權聲明及軟體授權、且一旦經過修改便不可以再繼續使用威注音的產品名稱。 使用者可自由使用、散播本軟體,惟散播時必須完整保留版權聲明及軟體授權、且一旦經過修改便不可以再繼續使用威注音的產品名稱。

@ -1 +1 @@
Subproject commit 21e4163c6f6f5c9929c1dd5872d091f732f07836 Subproject commit ed87f5b1edd762660051783770b88a38ab60ba75

View File

@ -594,13 +594,13 @@ static NSString *const kGraphVizOutputfile = @"/tmp/vChewing-visualization.dot";
// still nothing, then we update the composing buffer (some app has // still nothing, then we update the composing buffer (some app has
// strange behavior if we don't do this, "thinking" the key is not // strange behavior if we don't do this, "thinking" the key is not
// actually consumed) // actually consumed) // 下面這幾行反而會製造問題,所以威注音禁用之。
if ([state isKindOfClass:[InputStateNotEmpty class]] || !_bpmfReadingBuffer->isEmpty()) { // if ([state isKindOfClass:[InputStateNotEmpty class]] || !_bpmfReadingBuffer->isEmpty()) {
[IME prtDebugIntel:@"A9BFF20E"]; // [IME prtDebugIntel:@"A9BFF20E"];
errorCallback(); // errorCallback();
stateCallback(state); // stateCallback(state);
return YES; // return YES;
} // }
return NO; return NO;
} }

View File

@ -188,26 +188,19 @@ class ctlInputMethod: IMKInputController {
override func handle(_ event: NSEvent!, client: Any!) -> Bool { override func handle(_ event: NSEvent!, client: Any!) -> Bool {
if event.type == .flagsChanged { // flags change InputMethodKit
let functionKeyKeyboardLayoutID = mgrPrefs.functionKeyboardLayout if mgrPrefs.functionKeyboardLayout != mgrPrefs.basisKeyboardLayout {
let basisKeyboardLayoutID = mgrPrefs.basisKeyboardLayout
if functionKeyKeyboardLayoutID == basisKeyboardLayoutID {
return false
}
let includeShift = mgrPrefs.functionKeyKeyboardLayoutOverrideIncludeShiftKey let includeShift = mgrPrefs.functionKeyKeyboardLayoutOverrideIncludeShiftKey
if event.modifierFlags == .capsLock ||
if event.modifierFlags.contains(.capsLock) || event.modifierFlags.contains(.command) ||
event.modifierFlags.contains(.option) || event.modifierFlags.contains(.option) ||
event.modifierFlags.contains(.control) || event.modifierFlags.contains(.control) ||
event.modifierFlags.contains(.function) || event.modifierFlags.contains(.function) ||
(event.modifierFlags.contains(.shift) && includeShift) { (event.modifierFlags.contains(.shift) && includeShift) {
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: functionKeyKeyboardLayoutID) (client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: mgrPrefs.functionKeyboardLayout)
return false } else {
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: mgrPrefs.basisKeyboardLayout)
} }
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: basisKeyboardLayoutID)
return false
} }
var textFrame = NSRect.zero var textFrame = NSRect.zero

View File

@ -104,7 +104,6 @@ public class NotifierController: NSWindowController, NotifierWindowDelegate {
let transparentVisualEffect = NSVisualEffectView() let transparentVisualEffect = NSVisualEffectView()
transparentVisualEffect.blendingMode = .behindWindow transparentVisualEffect.blendingMode = .behindWindow
transparentVisualEffect.state = .active transparentVisualEffect.state = .active
transparentVisualEffect.material = .dark
let panel = NotifierWindow(contentRect: windowRect, styleMask: styleMask, backing: .buffered, defer: false) let panel = NotifierWindow(contentRect: windowRect, styleMask: styleMask, backing: .buffered, defer: false)
panel.contentView = transparentVisualEffect panel.contentView = transparentVisualEffect

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="19529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES"> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="20037" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies> <dependencies>
<deployment identifier="macosx"/> <deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="19529"/> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="20037"/>
</dependencies> </dependencies>
<objects> <objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication"> <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
@ -37,10 +37,273 @@
</items> </items>
</menu> </menu>
</menuItem> </menuItem>
<menuItem title="Edit" id="73w-1j-Pwb">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Edit" id="aF3-oi-MgO">
<items>
<menuItem title="Undo" keyEquivalent="z" id="VvZ-by-3nQ">
<connections>
<action selector="undo:" target="-1" id="dM4-lt-Id3"/>
</connections>
</menuItem>
<menuItem title="Redo" keyEquivalent="Z" id="LwP-Gv-Nnn">
<connections>
<action selector="redo:" target="-1" id="2Hr-YX-Ra9"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="4o9-gU-7Ts"/>
<menuItem title="Cut" keyEquivalent="x" id="FMA-yq-tJm">
<connections>
<action selector="cut:" target="-1" id="eMD-tW-O7D"/>
</connections>
</menuItem>
<menuItem title="Copy" keyEquivalent="c" id="xSe-3Y-Hb0">
<connections>
<action selector="copy:" target="-1" id="ADA-xT-moq"/>
</connections>
</menuItem>
<menuItem title="Paste" keyEquivalent="v" id="gaB-df-vQW">
<connections>
<action selector="paste:" target="-1" id="Oxs-FQ-EY8"/>
</connections>
</menuItem>
<menuItem title="Delete" id="blu-F1-kET">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="delete:" target="-1" id="n2a-VH-u4x"/>
</connections>
</menuItem>
<menuItem title="Select All" keyEquivalent="a" id="R7e-C0-eBE">
<connections>
<action selector="selectAll:" target="-1" id="WBA-da-pQi"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items> </items>
<point key="canvasLocation" x="139" y="154"/> <point key="canvasLocation" x="139" y="154"/>
</menu> </menu>
<customObject id="494" customClass="AppDelegate"/> <customObject id="494" customClass="AppDelegate" customModule="vChewing" customModuleProvider="target"/>
<customObject id="420" customClass="NSFontManager"/> <customObject id="420" customClass="NSFontManager"/>
<menuItem title="Edit" id="ubu-d1-37W">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Edit" id="rWr-dm-Kh8">
<items>
<menuItem title="Undo" keyEquivalent="z" id="3jT-kO-21c">
<connections>
<action selector="undo:" target="-1" id="H88-C0-yc4"/>
</connections>
</menuItem>
<menuItem title="Redo" keyEquivalent="Z" id="o0s-IT-wiY">
<connections>
<action selector="redo:" target="-1" id="XMe-PD-zfW"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="GdZ-gw-RJ8"/>
<menuItem title="Cut" keyEquivalent="x" id="CeT-VO-r8T">
<connections>
<action selector="cut:" target="-1" id="tGh-UJ-Vgt"/>
</connections>
</menuItem>
<menuItem title="Copy" keyEquivalent="c" id="MIS-yk-vix">
<connections>
<action selector="copy:" target="-1" id="JK4-kZ-a0m"/>
</connections>
</menuItem>
<menuItem title="Paste" keyEquivalent="v" id="JUZ-YQ-cFn">
<connections>
<action selector="paste:" target="-1" id="46I-YE-e2p"/>
</connections>
</menuItem>
<menuItem title="Paste and Match Style" keyEquivalent="V" id="JOe-dd-jy3">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="pasteAsPlainText:" target="-1" id="Rxh-ra-eKX"/>
</connections>
</menuItem>
<menuItem title="Delete" id="Faq-pj-osx">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="delete:" target="-1" id="Cf4-1V-BBE"/>
</connections>
</menuItem>
<menuItem title="Select All" keyEquivalent="a" id="Km9-HM-RBf">
<connections>
<action selector="selectAll:" target="-1" id="TdD-7L-1Hl"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="3Q6-9i-Ftx"/>
<menuItem title="Find" id="eZX-Tk-2Xs">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Find" id="o8K-C1-Ual">
<items>
<menuItem title="Find…" tag="1" keyEquivalent="f" id="x8v-4n-8Se">
<connections>
<action selector="performFindPanelAction:" target="-1" id="NPo-Yv-mhO"/>
</connections>
</menuItem>
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="VO0-HH-cDi">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="performFindPanelAction:" target="-1" id="dfm-eJ-wf8"/>
</connections>
</menuItem>
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="L2F-2v-SNG">
<connections>
<action selector="performFindPanelAction:" target="-1" id="Yrz-HD-dMn"/>
</connections>
</menuItem>
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="FzW-oT-4oW">
<connections>
<action selector="performFindPanelAction:" target="-1" id="QYN-5u-Zdh"/>
</connections>
</menuItem>
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="OuV-dO-fyz">
<connections>
<action selector="performFindPanelAction:" target="-1" id="BZA-Sf-ZCF"/>
</connections>
</menuItem>
<menuItem title="Jump to Selection" keyEquivalent="j" id="Yh8-Lk-MRK">
<connections>
<action selector="centerSelectionInVisibleArea:" target="-1" id="Cop-2Q-Beg"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Spelling and Grammar" id="OjH-Oc-gM5">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Spelling" id="rrh-zf-CSE">
<items>
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="tuz-aN-xtP">
<connections>
<action selector="showGuessPanel:" target="-1" id="gQt-Ay-LeU"/>
</connections>
</menuItem>
<menuItem title="Check Document Now" keyEquivalent=";" id="ouV-6W-KCA">
<connections>
<action selector="checkSpelling:" target="-1" id="105-Ob-GAr"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="27b-Cl-Ti1"/>
<menuItem title="Check Spelling While Typing" id="hCs-gx-PNe">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleContinuousSpellChecking:" target="-1" id="eQJ-3B-eRo"/>
</connections>
</menuItem>
<menuItem title="Check Grammar With Spelling" id="Ueh-2V-rU3">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleGrammarChecking:" target="-1" id="Sba-oJ-gVM"/>
</connections>
</menuItem>
<menuItem title="Correct Spelling Automatically" id="YAm-Zg-eX4">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticSpellingCorrection:" target="-1" id="7U7-L5-wzk"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Substitutions" id="Ap5-IB-isK">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Substitutions" id="yhF-g2-yW7">
<items>
<menuItem title="Show Substitutions" id="jrN-2d-uJP">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontSubstitutionsPanel:" target="-1" id="aNR-LM-bAT"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="bnA-uN-vXa"/>
<menuItem title="Smart Copy/Paste" id="Fpp-CM-nih">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleSmartInsertDelete:" target="-1" id="hYU-zq-zFJ"/>
</connections>
</menuItem>
<menuItem title="Smart Quotes" id="H46-y2-RTt">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="hmA-7z-eIl"/>
</connections>
</menuItem>
<menuItem title="Smart Dashes" id="d5k-mO-lMN">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDashSubstitution:" target="-1" id="dwi-Ki-5U1"/>
</connections>
</menuItem>
<menuItem title="Smart Links" id="wSJ-zV-SHN">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticLinkDetection:" target="-1" id="40W-Sa-gpf"/>
</connections>
</menuItem>
<menuItem title="Data Detectors" id="Kse-Sx-GW1">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDataDetection:" target="-1" id="Bds-Kb-mV8"/>
</connections>
</menuItem>
<menuItem title="Text Replacement" id="Zp2-yc-5aq">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticTextReplacement:" target="-1" id="RVr-al-Vwf"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Transformations" id="6Ph-8U-iVV">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Transformations" id="aX8-Sh-tR0">
<items>
<menuItem title="Make Upper Case" id="omc-Qv-BAT">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="uppercaseWord:" target="-1" id="cnH-13-TAH"/>
</connections>
</menuItem>
<menuItem title="Make Lower Case" id="f8Y-8w-C0J">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="lowercaseWord:" target="-1" id="SYC-Pb-q91"/>
</connections>
</menuItem>
<menuItem title="Capitalize" id="egK-sl-ehm">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="capitalizeWord:" target="-1" id="hvr-oY-28h"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Speech" id="Ibl-gf-hHZ">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Speech" id="l5i-Fp-oFN">
<items>
<menuItem title="Start Speaking" id="ig1-uM-Ksp">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="startSpeaking:" target="-1" id="2LD-ZA-Tht"/>
</connections>
</menuItem>
<menuItem title="Stop Speaking" id="nYM-UY-zpE">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="stopSpeaking:" target="-1" id="jNL-ea-ecQ"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
</objects> </objects>
</document> </document>

View File

@ -24,4 +24,4 @@
// "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project."; // "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.";
/* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */ /* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */
"lblCredits.title" = "小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。\nmacOS 版の開発Shiki Suen, Hiraku Wang, など。\n威注音語彙データの維持Shiki Suen。"; "lblCredits.title" = "小麦注音入力エンジン開発Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, など。\nmacOS 版威注音の開発Shiki Suen, Hiraku Wang, など。\n威注音語彙データの維持Shiki Suen。";

View File

@ -24,4 +24,4 @@
// "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project."; // "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.";
/* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */ /* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */
"VW8-s5-Wpn.title" = "小麦注音引擎研发Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, 等。\n威注音 macOS 程式研发Shiki Suen, Hiraku Wang, 等。\n威注音词库维护Shiki Suen。"; "lblCredits.title" = "小麦注音引擎研发Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, 等。\n威注音 macOS 程式研发Shiki Suen, Hiraku Wang, 等。\n威注音词库维护Shiki Suen。";

View File

@ -24,4 +24,4 @@
// "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project."; // "lblCopyright.title" = "© 2011-2022 OpenVanilla Project & © 2021-2022 vChewing Project.";
/* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */ /* Class = "NSTextFieldCell"; title = "McBopomofo Engine by Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, et al.\nvChewing macOS Development: Shiki Suen, Hiraku Wang, etc.\nvChewing Phrase Database Maintained by Shiki Suen."; ObjectID = "lblCredits"; */
"VW8-s5-Wpn.title" = "小麥注音引擎研發Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, 等。\n威注音 macOS 程式研發Shiki Suen, Hiraku Wang, 等。\n威注音詞庫維護Shiki Suen。"; "lblCredits.title" = "小麥注音引擎研發Mengjuei Hsieh, Lukhnos Liu, Zonble Yang, 等。\n威注音 macOS 程式研發Shiki Suen, Hiraku Wang, 等。\n威注音詞庫維護Shiki Suen。";

View File

@ -7,8 +7,8 @@
<key>UpdateInfoSite</key> <key>UpdateInfoSite</key>
<string>https://gitee.com/vChewing/vChewing-macOS/releases</string> <string>https://gitee.com/vChewing/vChewing-macOS/releases</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1940</string> <string>1941</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.4.0</string> <string>1.4.1</string>
</dict> </dict>
</plist> </plist>

View File

@ -27,6 +27,9 @@ extension String {
self = regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: replaceWith) self = regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: replaceWith)
} catch { return } } catch { return }
} }
mutating func selfReplace(_ strOf: String, _ strWith: String = "") {
self = self.replacingOccurrences(of: strOf, with: strWith)
}
mutating func formatConsolidate(HYPY2BPMF: Bool) { mutating func formatConsolidate(HYPY2BPMF: Bool) {
// Step 1: Consolidating formats per line. // Step 1: Consolidating formats per line.
var strProcessed = self var strProcessed = self
@ -55,435 +58,435 @@ extension String {
// //
// //
// 調 // 調
varLineData.regReplace(pattern: "chuang", replaceWith: "ㄔㄨㄤ") varLineData.selfReplace("chuang", "ㄔㄨㄤ")
varLineData.regReplace(pattern: "shuang", replaceWith: "ㄕㄨㄤ") varLineData.selfReplace("shuang", "ㄕㄨㄤ")
varLineData.regReplace(pattern: "zhuang", replaceWith: "ㄓㄨㄤ") varLineData.selfReplace("zhuang", "ㄓㄨㄤ")
varLineData.regReplace(pattern: "chang", replaceWith: "ㄔㄤ") varLineData.selfReplace("chang", "ㄔㄤ")
varLineData.regReplace(pattern: "cheng", replaceWith: "ㄔㄥ") varLineData.selfReplace("cheng", "ㄔㄥ")
varLineData.regReplace(pattern: "chong", replaceWith: "ㄔㄨㄥ") varLineData.selfReplace("chong", "ㄔㄨㄥ")
varLineData.regReplace(pattern: "chuai", replaceWith: "ㄔㄨㄞ") varLineData.selfReplace("chuai", "ㄔㄨㄞ")
varLineData.regReplace(pattern: "chuan", replaceWith: "ㄔㄨㄢ") varLineData.selfReplace("chuan", "ㄔㄨㄢ")
varLineData.regReplace(pattern: "guang", replaceWith: "ㄍㄨㄤ") varLineData.selfReplace("guang", "ㄍㄨㄤ")
varLineData.regReplace(pattern: "huang", replaceWith: "ㄏㄨㄤ") varLineData.selfReplace("huang", "ㄏㄨㄤ")
varLineData.regReplace(pattern: "jiang", replaceWith: "ㄐㄧㄤ") varLineData.selfReplace("jiang", "ㄐㄧㄤ")
varLineData.regReplace(pattern: "jiong", replaceWith: "ㄐㄩㄥ") varLineData.selfReplace("jiong", "ㄐㄩㄥ")
varLineData.regReplace(pattern: "kuang", replaceWith: "ㄎㄨㄤ") varLineData.selfReplace("kuang", "ㄎㄨㄤ")
varLineData.regReplace(pattern: "liang", replaceWith: "ㄌㄧㄤ") varLineData.selfReplace("liang", "ㄌㄧㄤ")
varLineData.regReplace(pattern: "niang", replaceWith: "ㄋㄧㄤ") varLineData.selfReplace("niang", "ㄋㄧㄤ")
varLineData.regReplace(pattern: "qiang", replaceWith: "ㄑㄧㄤ") varLineData.selfReplace("qiang", "ㄑㄧㄤ")
varLineData.regReplace(pattern: "qiong", replaceWith: "ㄑㄩㄥ") varLineData.selfReplace("qiong", "ㄑㄩㄥ")
varLineData.regReplace(pattern: "shang", replaceWith: "ㄕㄤ") varLineData.selfReplace("shang", "ㄕㄤ")
varLineData.regReplace(pattern: "sheng", replaceWith: "ㄕㄥ") varLineData.selfReplace("sheng", "ㄕㄥ")
varLineData.regReplace(pattern: "shuai", replaceWith: "ㄕㄨㄞ") varLineData.selfReplace("shuai", "ㄕㄨㄞ")
varLineData.regReplace(pattern: "shuan", replaceWith: "ㄕㄨㄢ") varLineData.selfReplace("shuan", "ㄕㄨㄢ")
varLineData.regReplace(pattern: "xiang", replaceWith: "ㄒㄧㄤ") varLineData.selfReplace("xiang", "ㄒㄧㄤ")
varLineData.regReplace(pattern: "xiong", replaceWith: "ㄒㄩㄥ") varLineData.selfReplace("xiong", "ㄒㄩㄥ")
varLineData.regReplace(pattern: "zhang", replaceWith: "ㄓㄤ") varLineData.selfReplace("zhang", "ㄓㄤ")
varLineData.regReplace(pattern: "zheng", replaceWith: "ㄓㄥ") varLineData.selfReplace("zheng", "ㄓㄥ")
varLineData.regReplace(pattern: "zhong", replaceWith: "ㄓㄨㄥ") varLineData.selfReplace("zhong", "ㄓㄨㄥ")
varLineData.regReplace(pattern: "zhuai", replaceWith: "ㄓㄨㄞ") varLineData.selfReplace("zhuai", "ㄓㄨㄞ")
varLineData.regReplace(pattern: "zhuan", replaceWith: "ㄓㄨㄢ") varLineData.selfReplace("zhuan", "ㄓㄨㄢ")
varLineData.regReplace(pattern: "bang", replaceWith: "ㄅㄤ") varLineData.selfReplace("bang", "ㄅㄤ")
varLineData.regReplace(pattern: "beng", replaceWith: "ㄅㄥ") varLineData.selfReplace("beng", "ㄅㄥ")
varLineData.regReplace(pattern: "bian", replaceWith: "ㄅㄧㄢ") varLineData.selfReplace("bian", "ㄅㄧㄢ")
varLineData.regReplace(pattern: "biao", replaceWith: "ㄅㄧㄠ") varLineData.selfReplace("biao", "ㄅㄧㄠ")
varLineData.regReplace(pattern: "bing", replaceWith: "ㄅㄧㄥ") varLineData.selfReplace("bing", "ㄅㄧㄥ")
varLineData.regReplace(pattern: "cang", replaceWith: "ㄘㄤ") varLineData.selfReplace("cang", "ㄘㄤ")
varLineData.regReplace(pattern: "ceng", replaceWith: "ㄘㄥ") varLineData.selfReplace("ceng", "ㄘㄥ")
varLineData.regReplace(pattern: "chai", replaceWith: "ㄔㄞ") varLineData.selfReplace("chai", "ㄔㄞ")
varLineData.regReplace(pattern: "chan", replaceWith: "ㄔㄢ") varLineData.selfReplace("chan", "ㄔㄢ")
varLineData.regReplace(pattern: "chao", replaceWith: "ㄔㄠ") varLineData.selfReplace("chao", "ㄔㄠ")
varLineData.regReplace(pattern: "chen", replaceWith: "ㄔㄣ") varLineData.selfReplace("chen", "ㄔㄣ")
varLineData.regReplace(pattern: "chou", replaceWith: "ㄔㄡ") varLineData.selfReplace("chou", "ㄔㄡ")
varLineData.regReplace(pattern: "chua", replaceWith: "ㄔㄨㄚ") varLineData.selfReplace("chua", "ㄔㄨㄚ")
varLineData.regReplace(pattern: "chui", replaceWith: "ㄔㄨㄟ") varLineData.selfReplace("chui", "ㄔㄨㄟ")
varLineData.regReplace(pattern: "chun", replaceWith: "ㄔㄨㄣ") varLineData.selfReplace("chun", "ㄔㄨㄣ")
varLineData.regReplace(pattern: "chuo", replaceWith: "ㄔㄨㄛ") varLineData.selfReplace("chuo", "ㄔㄨㄛ")
varLineData.regReplace(pattern: "cong", replaceWith: "ㄘㄨㄥ") varLineData.selfReplace("cong", "ㄘㄨㄥ")
varLineData.regReplace(pattern: "cuan", replaceWith: "ㄘㄨㄢ") varLineData.selfReplace("cuan", "ㄘㄨㄢ")
varLineData.regReplace(pattern: "dang", replaceWith: "ㄉㄤ") varLineData.selfReplace("dang", "ㄉㄤ")
varLineData.regReplace(pattern: "deng", replaceWith: "ㄉㄥ") varLineData.selfReplace("deng", "ㄉㄥ")
varLineData.regReplace(pattern: "dian", replaceWith: "ㄉㄧㄢ") varLineData.selfReplace("dian", "ㄉㄧㄢ")
varLineData.regReplace(pattern: "diao", replaceWith: "ㄉㄧㄠ") varLineData.selfReplace("diao", "ㄉㄧㄠ")
varLineData.regReplace(pattern: "ding", replaceWith: "ㄉㄧㄥ") varLineData.selfReplace("ding", "ㄉㄧㄥ")
varLineData.regReplace(pattern: "dong", replaceWith: "ㄉㄨㄥ") varLineData.selfReplace("dong", "ㄉㄨㄥ")
varLineData.regReplace(pattern: "duan", replaceWith: "ㄉㄨㄢ") varLineData.selfReplace("duan", "ㄉㄨㄢ")
varLineData.regReplace(pattern: "fang", replaceWith: "ㄈㄤ") varLineData.selfReplace("fang", "ㄈㄤ")
varLineData.regReplace(pattern: "feng", replaceWith: "ㄈㄥ") varLineData.selfReplace("feng", "ㄈㄥ")
varLineData.regReplace(pattern: "fiao", replaceWith: "ㄈㄧㄠ") varLineData.selfReplace("fiao", "ㄈㄧㄠ")
varLineData.regReplace(pattern: "fong", replaceWith: "ㄈㄨㄥ") varLineData.selfReplace("fong", "ㄈㄨㄥ")
varLineData.regReplace(pattern: "gang", replaceWith: "ㄍㄤ") varLineData.selfReplace("gang", "ㄍㄤ")
varLineData.regReplace(pattern: "geng", replaceWith: "ㄍㄥ") varLineData.selfReplace("geng", "ㄍㄥ")
varLineData.regReplace(pattern: "giao", replaceWith: "ㄍㄧㄠ") varLineData.selfReplace("giao", "ㄍㄧㄠ")
varLineData.regReplace(pattern: "gong", replaceWith: "ㄍㄨㄥ") varLineData.selfReplace("gong", "ㄍㄨㄥ")
varLineData.regReplace(pattern: "guai", replaceWith: "ㄍㄨㄞ") varLineData.selfReplace("guai", "ㄍㄨㄞ")
varLineData.regReplace(pattern: "guan", replaceWith: "ㄍㄨㄢ") varLineData.selfReplace("guan", "ㄍㄨㄢ")
varLineData.regReplace(pattern: "hang", replaceWith: "ㄏㄤ") varLineData.selfReplace("hang", "ㄏㄤ")
varLineData.regReplace(pattern: "heng", replaceWith: "ㄏㄥ") varLineData.selfReplace("heng", "ㄏㄥ")
varLineData.regReplace(pattern: "hong", replaceWith: "ㄏㄨㄥ") varLineData.selfReplace("hong", "ㄏㄨㄥ")
varLineData.regReplace(pattern: "huai", replaceWith: "ㄏㄨㄞ") varLineData.selfReplace("huai", "ㄏㄨㄞ")
varLineData.regReplace(pattern: "huan", replaceWith: "ㄏㄨㄢ") varLineData.selfReplace("huan", "ㄏㄨㄢ")
varLineData.regReplace(pattern: "jian", replaceWith: "ㄐㄧㄢ") varLineData.selfReplace("jian", "ㄐㄧㄢ")
varLineData.regReplace(pattern: "jiao", replaceWith: "ㄐㄧㄠ") varLineData.selfReplace("jiao", "ㄐㄧㄠ")
varLineData.regReplace(pattern: "jing", replaceWith: "ㄐㄧㄥ") varLineData.selfReplace("jing", "ㄐㄧㄥ")
varLineData.regReplace(pattern: "juan", replaceWith: "ㄐㄩㄢ") varLineData.selfReplace("juan", "ㄐㄩㄢ")
varLineData.regReplace(pattern: "kang", replaceWith: "ㄎㄤ") varLineData.selfReplace("kang", "ㄎㄤ")
varLineData.regReplace(pattern: "keng", replaceWith: "ㄎㄥ") varLineData.selfReplace("keng", "ㄎㄥ")
varLineData.regReplace(pattern: "kong", replaceWith: "ㄎㄨㄥ") varLineData.selfReplace("kong", "ㄎㄨㄥ")
varLineData.regReplace(pattern: "kuai", replaceWith: "ㄎㄨㄞ") varLineData.selfReplace("kuai", "ㄎㄨㄞ")
varLineData.regReplace(pattern: "kuan", replaceWith: "ㄎㄨㄢ") varLineData.selfReplace("kuan", "ㄎㄨㄢ")
varLineData.regReplace(pattern: "lang", replaceWith: "ㄌㄤ") varLineData.selfReplace("lang", "ㄌㄤ")
varLineData.regReplace(pattern: "leng", replaceWith: "ㄌㄥ") varLineData.selfReplace("leng", "ㄌㄥ")
varLineData.regReplace(pattern: "lian", replaceWith: "ㄌㄧㄢ") varLineData.selfReplace("lian", "ㄌㄧㄢ")
varLineData.regReplace(pattern: "liao", replaceWith: "ㄌㄧㄠ") varLineData.selfReplace("liao", "ㄌㄧㄠ")
varLineData.regReplace(pattern: "ling", replaceWith: "ㄌㄧㄥ") varLineData.selfReplace("ling", "ㄌㄧㄥ")
varLineData.regReplace(pattern: "long", replaceWith: "ㄌㄨㄥ") varLineData.selfReplace("long", "ㄌㄨㄥ")
varLineData.regReplace(pattern: "luan", replaceWith: "ㄌㄨㄢ") varLineData.selfReplace("luan", "ㄌㄨㄢ")
varLineData.regReplace(pattern: "lvan", replaceWith: "ㄌㄩㄢ") varLineData.selfReplace("lvan", "ㄌㄩㄢ")
varLineData.regReplace(pattern: "mang", replaceWith: "ㄇㄤ") varLineData.selfReplace("mang", "ㄇㄤ")
varLineData.regReplace(pattern: "meng", replaceWith: "ㄇㄥ") varLineData.selfReplace("meng", "ㄇㄥ")
varLineData.regReplace(pattern: "mian", replaceWith: "ㄇㄧㄢ") varLineData.selfReplace("mian", "ㄇㄧㄢ")
varLineData.regReplace(pattern: "miao", replaceWith: "ㄇㄧㄠ") varLineData.selfReplace("miao", "ㄇㄧㄠ")
varLineData.regReplace(pattern: "ming", replaceWith: "ㄇㄧㄥ") varLineData.selfReplace("ming", "ㄇㄧㄥ")
varLineData.regReplace(pattern: "nang", replaceWith: "ㄋㄤ") varLineData.selfReplace("nang", "ㄋㄤ")
varLineData.regReplace(pattern: "neng", replaceWith: "ㄋㄥ") varLineData.selfReplace("neng", "ㄋㄥ")
varLineData.regReplace(pattern: "nian", replaceWith: "ㄋㄧㄢ") varLineData.selfReplace("nian", "ㄋㄧㄢ")
varLineData.regReplace(pattern: "niao", replaceWith: "ㄋㄧㄠ") varLineData.selfReplace("niao", "ㄋㄧㄠ")
varLineData.regReplace(pattern: "ning", replaceWith: "ㄋㄧㄥ") varLineData.selfReplace("ning", "ㄋㄧㄥ")
varLineData.regReplace(pattern: "nong", replaceWith: "ㄋㄨㄥ") varLineData.selfReplace("nong", "ㄋㄨㄥ")
varLineData.regReplace(pattern: "nuan", replaceWith: "ㄋㄨㄢ") varLineData.selfReplace("nuan", "ㄋㄨㄢ")
varLineData.regReplace(pattern: "pang", replaceWith: "ㄆㄤ") varLineData.selfReplace("pang", "ㄆㄤ")
varLineData.regReplace(pattern: "peng", replaceWith: "ㄆㄥ") varLineData.selfReplace("peng", "ㄆㄥ")
varLineData.regReplace(pattern: "pian", replaceWith: "ㄆㄧㄢ") varLineData.selfReplace("pian", "ㄆㄧㄢ")
varLineData.regReplace(pattern: "piao", replaceWith: "ㄆㄧㄠ") varLineData.selfReplace("piao", "ㄆㄧㄠ")
varLineData.regReplace(pattern: "ping", replaceWith: "ㄆㄧㄥ") varLineData.selfReplace("ping", "ㄆㄧㄥ")
varLineData.regReplace(pattern: "qian", replaceWith: "ㄑㄧㄢ") varLineData.selfReplace("qian", "ㄑㄧㄢ")
varLineData.regReplace(pattern: "qiao", replaceWith: "ㄑㄧㄠ") varLineData.selfReplace("qiao", "ㄑㄧㄠ")
varLineData.regReplace(pattern: "qing", replaceWith: "ㄑㄧㄥ") varLineData.selfReplace("qing", "ㄑㄧㄥ")
varLineData.regReplace(pattern: "quan", replaceWith: "ㄑㄩㄢ") varLineData.selfReplace("quan", "ㄑㄩㄢ")
varLineData.regReplace(pattern: "rang", replaceWith: "ㄖㄤ") varLineData.selfReplace("rang", "ㄖㄤ")
varLineData.regReplace(pattern: "reng", replaceWith: "ㄖㄥ") varLineData.selfReplace("reng", "ㄖㄥ")
varLineData.regReplace(pattern: "rong", replaceWith: "ㄖㄨㄥ") varLineData.selfReplace("rong", "ㄖㄨㄥ")
varLineData.regReplace(pattern: "ruan", replaceWith: "ㄖㄨㄢ") varLineData.selfReplace("ruan", "ㄖㄨㄢ")
varLineData.regReplace(pattern: "sang", replaceWith: "ㄙㄤ") varLineData.selfReplace("sang", "ㄙㄤ")
varLineData.regReplace(pattern: "seng", replaceWith: "ㄙㄥ") varLineData.selfReplace("seng", "ㄙㄥ")
varLineData.regReplace(pattern: "shai", replaceWith: "ㄕㄞ") varLineData.selfReplace("shai", "ㄕㄞ")
varLineData.regReplace(pattern: "shan", replaceWith: "ㄕㄢ") varLineData.selfReplace("shan", "ㄕㄢ")
varLineData.regReplace(pattern: "shao", replaceWith: "ㄕㄠ") varLineData.selfReplace("shao", "ㄕㄠ")
varLineData.regReplace(pattern: "shei", replaceWith: "ㄕㄟ") varLineData.selfReplace("shei", "ㄕㄟ")
varLineData.regReplace(pattern: "shen", replaceWith: "ㄕㄣ") varLineData.selfReplace("shen", "ㄕㄣ")
varLineData.regReplace(pattern: "shou", replaceWith: "ㄕㄡ") varLineData.selfReplace("shou", "ㄕㄡ")
varLineData.regReplace(pattern: "shua", replaceWith: "ㄕㄨㄚ") varLineData.selfReplace("shua", "ㄕㄨㄚ")
varLineData.regReplace(pattern: "shui", replaceWith: "ㄕㄨㄟ") varLineData.selfReplace("shui", "ㄕㄨㄟ")
varLineData.regReplace(pattern: "shun", replaceWith: "ㄕㄨㄣ") varLineData.selfReplace("shun", "ㄕㄨㄣ")
varLineData.regReplace(pattern: "shuo", replaceWith: "ㄕㄨㄛ") varLineData.selfReplace("shuo", "ㄕㄨㄛ")
varLineData.regReplace(pattern: "song", replaceWith: "ㄙㄨㄥ") varLineData.selfReplace("song", "ㄙㄨㄥ")
varLineData.regReplace(pattern: "suan", replaceWith: "ㄙㄨㄢ") varLineData.selfReplace("suan", "ㄙㄨㄢ")
varLineData.regReplace(pattern: "tang", replaceWith: "ㄊㄤ") varLineData.selfReplace("tang", "ㄊㄤ")
varLineData.regReplace(pattern: "teng", replaceWith: "ㄊㄥ") varLineData.selfReplace("teng", "ㄊㄥ")
varLineData.regReplace(pattern: "tian", replaceWith: "ㄊㄧㄢ") varLineData.selfReplace("tian", "ㄊㄧㄢ")
varLineData.regReplace(pattern: "tiao", replaceWith: "ㄊㄧㄠ") varLineData.selfReplace("tiao", "ㄊㄧㄠ")
varLineData.regReplace(pattern: "ting", replaceWith: "ㄊㄧㄥ") varLineData.selfReplace("ting", "ㄊㄧㄥ")
varLineData.regReplace(pattern: "tong", replaceWith: "ㄊㄨㄥ") varLineData.selfReplace("tong", "ㄊㄨㄥ")
varLineData.regReplace(pattern: "tuan", replaceWith: "ㄊㄨㄢ") varLineData.selfReplace("tuan", "ㄊㄨㄢ")
varLineData.regReplace(pattern: "wang", replaceWith: "ㄨㄤ") varLineData.selfReplace("wang", "ㄨㄤ")
varLineData.regReplace(pattern: "weng", replaceWith: "ㄨㄥ") varLineData.selfReplace("weng", "ㄨㄥ")
varLineData.regReplace(pattern: "xian", replaceWith: "ㄒㄧㄢ") varLineData.selfReplace("xian", "ㄒㄧㄢ")
varLineData.regReplace(pattern: "xiao", replaceWith: "ㄒㄧㄠ") varLineData.selfReplace("xiao", "ㄒㄧㄠ")
varLineData.regReplace(pattern: "xing", replaceWith: "ㄒㄧㄥ") varLineData.selfReplace("xing", "ㄒㄧㄥ")
varLineData.regReplace(pattern: "xuan", replaceWith: "ㄒㄩㄢ") varLineData.selfReplace("xuan", "ㄒㄩㄢ")
varLineData.regReplace(pattern: "yang", replaceWith: "ㄧㄤ") varLineData.selfReplace("yang", "ㄧㄤ")
varLineData.regReplace(pattern: "ying", replaceWith: "ㄧㄥ") varLineData.selfReplace("ying", "ㄧㄥ")
varLineData.regReplace(pattern: "yong", replaceWith: "ㄩㄥ") varLineData.selfReplace("yong", "ㄩㄥ")
varLineData.regReplace(pattern: "yuan", replaceWith: "ㄩㄢ") varLineData.selfReplace("yuan", "ㄩㄢ")
varLineData.regReplace(pattern: "zang", replaceWith: "ㄗㄤ") varLineData.selfReplace("zang", "ㄗㄤ")
varLineData.regReplace(pattern: "zeng", replaceWith: "ㄗㄥ") varLineData.selfReplace("zeng", "ㄗㄥ")
varLineData.regReplace(pattern: "zhai", replaceWith: "ㄓㄞ") varLineData.selfReplace("zhai", "ㄓㄞ")
varLineData.regReplace(pattern: "zhan", replaceWith: "ㄓㄢ") varLineData.selfReplace("zhan", "ㄓㄢ")
varLineData.regReplace(pattern: "zhao", replaceWith: "ㄓㄠ") varLineData.selfReplace("zhao", "ㄓㄠ")
varLineData.regReplace(pattern: "zhei", replaceWith: "ㄓㄟ") varLineData.selfReplace("zhei", "ㄓㄟ")
varLineData.regReplace(pattern: "zhen", replaceWith: "ㄓㄣ") varLineData.selfReplace("zhen", "ㄓㄣ")
varLineData.regReplace(pattern: "zhou", replaceWith: "ㄓㄡ") varLineData.selfReplace("zhou", "ㄓㄡ")
varLineData.regReplace(pattern: "zhua", replaceWith: "ㄓㄨㄚ") varLineData.selfReplace("zhua", "ㄓㄨㄚ")
varLineData.regReplace(pattern: "zhui", replaceWith: "ㄓㄨㄟ") varLineData.selfReplace("zhui", "ㄓㄨㄟ")
varLineData.regReplace(pattern: "zhun", replaceWith: "ㄓㄨㄣ") varLineData.selfReplace("zhun", "ㄓㄨㄣ")
varLineData.regReplace(pattern: "zhuo", replaceWith: "ㄓㄨㄛ") varLineData.selfReplace("zhuo", "ㄓㄨㄛ")
varLineData.regReplace(pattern: "zong", replaceWith: "ㄗㄨㄥ") varLineData.selfReplace("zong", "ㄗㄨㄥ")
varLineData.regReplace(pattern: "zuan", replaceWith: "ㄗㄨㄢ") varLineData.selfReplace("zuan", "ㄗㄨㄢ")
varLineData.regReplace(pattern: "jun", replaceWith: "ㄐㄩㄣ") varLineData.selfReplace("jun", "ㄐㄩㄣ")
varLineData.regReplace(pattern: "ang", replaceWith: "") varLineData.selfReplace("ang", "")
varLineData.regReplace(pattern: "bai", replaceWith: "ㄅㄞ") varLineData.selfReplace("bai", "ㄅㄞ")
varLineData.regReplace(pattern: "ban", replaceWith: "ㄅㄢ") varLineData.selfReplace("ban", "ㄅㄢ")
varLineData.regReplace(pattern: "bao", replaceWith: "ㄅㄠ") varLineData.selfReplace("bao", "ㄅㄠ")
varLineData.regReplace(pattern: "bei", replaceWith: "ㄅㄟ") varLineData.selfReplace("bei", "ㄅㄟ")
varLineData.regReplace(pattern: "ben", replaceWith: "ㄅㄣ") varLineData.selfReplace("ben", "ㄅㄣ")
varLineData.regReplace(pattern: "bie", replaceWith: "ㄅㄧㄝ") varLineData.selfReplace("bie", "ㄅㄧㄝ")
varLineData.regReplace(pattern: "bin", replaceWith: "ㄅㄧㄣ") varLineData.selfReplace("bin", "ㄅㄧㄣ")
varLineData.regReplace(pattern: "cai", replaceWith: "ㄘㄞ") varLineData.selfReplace("cai", "ㄘㄞ")
varLineData.regReplace(pattern: "can", replaceWith: "ㄘㄢ") varLineData.selfReplace("can", "ㄘㄢ")
varLineData.regReplace(pattern: "cao", replaceWith: "ㄘㄠ") varLineData.selfReplace("cao", "ㄘㄠ")
varLineData.regReplace(pattern: "cei", replaceWith: "ㄘㄟ") varLineData.selfReplace("cei", "ㄘㄟ")
varLineData.regReplace(pattern: "cen", replaceWith: "ㄘㄣ") varLineData.selfReplace("cen", "ㄘㄣ")
varLineData.regReplace(pattern: "cha", replaceWith: "ㄔㄚ") varLineData.selfReplace("cha", "ㄔㄚ")
varLineData.regReplace(pattern: "che", replaceWith: "ㄔㄜ") varLineData.selfReplace("che", "ㄔㄜ")
varLineData.regReplace(pattern: "chi", replaceWith: "") varLineData.selfReplace("chi", "")
varLineData.regReplace(pattern: "chu", replaceWith: "ㄔㄨ") varLineData.selfReplace("chu", "ㄔㄨ")
varLineData.regReplace(pattern: "cou", replaceWith: "ㄘㄡ") varLineData.selfReplace("cou", "ㄘㄡ")
varLineData.regReplace(pattern: "cui", replaceWith: "ㄘㄨㄟ") varLineData.selfReplace("cui", "ㄘㄨㄟ")
varLineData.regReplace(pattern: "cun", replaceWith: "ㄘㄨㄣ") varLineData.selfReplace("cun", "ㄘㄨㄣ")
varLineData.regReplace(pattern: "cuo", replaceWith: "ㄘㄨㄛ") varLineData.selfReplace("cuo", "ㄘㄨㄛ")
varLineData.regReplace(pattern: "dai", replaceWith: "ㄉㄞ") varLineData.selfReplace("dai", "ㄉㄞ")
varLineData.regReplace(pattern: "dan", replaceWith: "ㄉㄢ") varLineData.selfReplace("dan", "ㄉㄢ")
varLineData.regReplace(pattern: "dao", replaceWith: "ㄉㄠ") varLineData.selfReplace("dao", "ㄉㄠ")
varLineData.regReplace(pattern: "dei", replaceWith: "ㄉㄟ") varLineData.selfReplace("dei", "ㄉㄟ")
varLineData.regReplace(pattern: "den", replaceWith: "ㄉㄣ") varLineData.selfReplace("den", "ㄉㄣ")
varLineData.regReplace(pattern: "dia", replaceWith: "ㄉㄧㄚ") varLineData.selfReplace("dia", "ㄉㄧㄚ")
varLineData.regReplace(pattern: "die", replaceWith: "ㄉㄧㄝ") varLineData.selfReplace("die", "ㄉㄧㄝ")
varLineData.regReplace(pattern: "diu", replaceWith: "ㄉㄧㄡ") varLineData.selfReplace("diu", "ㄉㄧㄡ")
varLineData.regReplace(pattern: "dou", replaceWith: "ㄉㄡ") varLineData.selfReplace("dou", "ㄉㄡ")
varLineData.regReplace(pattern: "dui", replaceWith: "ㄉㄨㄟ") varLineData.selfReplace("dui", "ㄉㄨㄟ")
varLineData.regReplace(pattern: "dun", replaceWith: "ㄉㄨㄣ") varLineData.selfReplace("dun", "ㄉㄨㄣ")
varLineData.regReplace(pattern: "duo", replaceWith: "ㄉㄨㄛ") varLineData.selfReplace("duo", "ㄉㄨㄛ")
varLineData.regReplace(pattern: "eng", replaceWith: "") varLineData.selfReplace("eng", "")
varLineData.regReplace(pattern: "fan", replaceWith: "ㄈㄢ") varLineData.selfReplace("fan", "ㄈㄢ")
varLineData.regReplace(pattern: "fei", replaceWith: "ㄈㄟ") varLineData.selfReplace("fei", "ㄈㄟ")
varLineData.regReplace(pattern: "fen", replaceWith: "ㄈㄣ") varLineData.selfReplace("fen", "ㄈㄣ")
varLineData.regReplace(pattern: "fou", replaceWith: "ㄈㄡ") varLineData.selfReplace("fou", "ㄈㄡ")
varLineData.regReplace(pattern: "gai", replaceWith: "ㄍㄞ") varLineData.selfReplace("gai", "ㄍㄞ")
varLineData.regReplace(pattern: "gan", replaceWith: "ㄍㄢ") varLineData.selfReplace("gan", "ㄍㄢ")
varLineData.regReplace(pattern: "gao", replaceWith: "ㄍㄠ") varLineData.selfReplace("gao", "ㄍㄠ")
varLineData.regReplace(pattern: "gei", replaceWith: "ㄍㄟ") varLineData.selfReplace("gei", "ㄍㄟ")
varLineData.regReplace(pattern: "gin", replaceWith: "ㄍㄧㄣ") varLineData.selfReplace("gin", "ㄍㄧㄣ")
varLineData.regReplace(pattern: "gen", replaceWith: "ㄍㄣ") varLineData.selfReplace("gen", "ㄍㄣ")
varLineData.regReplace(pattern: "gou", replaceWith: "ㄍㄡ") varLineData.selfReplace("gou", "ㄍㄡ")
varLineData.regReplace(pattern: "gua", replaceWith: "ㄍㄨㄚ") varLineData.selfReplace("gua", "ㄍㄨㄚ")
varLineData.regReplace(pattern: "gue", replaceWith: "ㄍㄨㄜ") varLineData.selfReplace("gue", "ㄍㄨㄜ")
varLineData.regReplace(pattern: "gui", replaceWith: "ㄍㄨㄟ") varLineData.selfReplace("gui", "ㄍㄨㄟ")
varLineData.regReplace(pattern: "gun", replaceWith: "ㄍㄨㄣ") varLineData.selfReplace("gun", "ㄍㄨㄣ")
varLineData.regReplace(pattern: "guo", replaceWith: "ㄍㄨㄛ") varLineData.selfReplace("guo", "ㄍㄨㄛ")
varLineData.regReplace(pattern: "hai", replaceWith: "ㄏㄞ") varLineData.selfReplace("hai", "ㄏㄞ")
varLineData.regReplace(pattern: "han", replaceWith: "ㄏㄢ") varLineData.selfReplace("han", "ㄏㄢ")
varLineData.regReplace(pattern: "hao", replaceWith: "ㄏㄠ") varLineData.selfReplace("hao", "ㄏㄠ")
varLineData.regReplace(pattern: "hei", replaceWith: "ㄏㄟ") varLineData.selfReplace("hei", "ㄏㄟ")
varLineData.regReplace(pattern: "hen", replaceWith: "ㄏㄣ") varLineData.selfReplace("hen", "ㄏㄣ")
varLineData.regReplace(pattern: "hou", replaceWith: "ㄏㄡ") varLineData.selfReplace("hou", "ㄏㄡ")
varLineData.regReplace(pattern: "hua", replaceWith: "ㄏㄨㄚ") varLineData.selfReplace("hua", "ㄏㄨㄚ")
varLineData.regReplace(pattern: "hui", replaceWith: "ㄏㄨㄟ") varLineData.selfReplace("hui", "ㄏㄨㄟ")
varLineData.regReplace(pattern: "hun", replaceWith: "ㄏㄨㄣ") varLineData.selfReplace("hun", "ㄏㄨㄣ")
varLineData.regReplace(pattern: "huo", replaceWith: "ㄏㄨㄛ") varLineData.selfReplace("huo", "ㄏㄨㄛ")
varLineData.regReplace(pattern: "jia", replaceWith: "ㄐㄧㄚ") varLineData.selfReplace("jia", "ㄐㄧㄚ")
varLineData.regReplace(pattern: "jie", replaceWith: "ㄐㄧㄝ") varLineData.selfReplace("jie", "ㄐㄧㄝ")
varLineData.regReplace(pattern: "jin", replaceWith: "ㄐㄧㄣ") varLineData.selfReplace("jin", "ㄐㄧㄣ")
varLineData.regReplace(pattern: "jiu", replaceWith: "ㄐㄧㄡ") varLineData.selfReplace("jiu", "ㄐㄧㄡ")
varLineData.regReplace(pattern: "jue", replaceWith: "ㄐㄩㄝ") varLineData.selfReplace("jue", "ㄐㄩㄝ")
varLineData.regReplace(pattern: "kai", replaceWith: "ㄎㄞ") varLineData.selfReplace("kai", "ㄎㄞ")
varLineData.regReplace(pattern: "kan", replaceWith: "ㄎㄢ") varLineData.selfReplace("kan", "ㄎㄢ")
varLineData.regReplace(pattern: "kao", replaceWith: "ㄎㄠ") varLineData.selfReplace("kao", "ㄎㄠ")
varLineData.regReplace(pattern: "ken", replaceWith: "ㄎㄣ") varLineData.selfReplace("ken", "ㄎㄣ")
varLineData.regReplace(pattern: "kiu", replaceWith: "ㄎㄧㄡ") varLineData.selfReplace("kiu", "ㄎㄧㄡ")
varLineData.regReplace(pattern: "kou", replaceWith: "ㄎㄡ") varLineData.selfReplace("kou", "ㄎㄡ")
varLineData.regReplace(pattern: "kua", replaceWith: "ㄎㄨㄚ") varLineData.selfReplace("kua", "ㄎㄨㄚ")
varLineData.regReplace(pattern: "kui", replaceWith: "ㄎㄨㄟ") varLineData.selfReplace("kui", "ㄎㄨㄟ")
varLineData.regReplace(pattern: "kun", replaceWith: "ㄎㄨㄣ") varLineData.selfReplace("kun", "ㄎㄨㄣ")
varLineData.regReplace(pattern: "kuo", replaceWith: "ㄎㄨㄛ") varLineData.selfReplace("kuo", "ㄎㄨㄛ")
varLineData.regReplace(pattern: "lai", replaceWith: "ㄌㄞ") varLineData.selfReplace("lai", "ㄌㄞ")
varLineData.regReplace(pattern: "lan", replaceWith: "ㄌㄢ") varLineData.selfReplace("lan", "ㄌㄢ")
varLineData.regReplace(pattern: "lao", replaceWith: "ㄌㄠ") varLineData.selfReplace("lao", "ㄌㄠ")
varLineData.regReplace(pattern: "lei", replaceWith: "ㄌㄟ") varLineData.selfReplace("lei", "ㄌㄟ")
varLineData.regReplace(pattern: "lia", replaceWith: "ㄌㄧㄚ") varLineData.selfReplace("lia", "ㄌㄧㄚ")
varLineData.regReplace(pattern: "lie", replaceWith: "ㄌㄧㄝ") varLineData.selfReplace("lie", "ㄌㄧㄝ")
varLineData.regReplace(pattern: "lin", replaceWith: "ㄌㄧㄣ") varLineData.selfReplace("lin", "ㄌㄧㄣ")
varLineData.regReplace(pattern: "liu", replaceWith: "ㄌㄧㄡ") varLineData.selfReplace("liu", "ㄌㄧㄡ")
varLineData.regReplace(pattern: "lou", replaceWith: "ㄌㄡ") varLineData.selfReplace("lou", "ㄌㄡ")
varLineData.regReplace(pattern: "lun", replaceWith: "ㄌㄨㄣ") varLineData.selfReplace("lun", "ㄌㄨㄣ")
varLineData.regReplace(pattern: "luo", replaceWith: "ㄌㄨㄛ") varLineData.selfReplace("luo", "ㄌㄨㄛ")
varLineData.regReplace(pattern: "lve", replaceWith: "ㄌㄩㄝ") varLineData.selfReplace("lve", "ㄌㄩㄝ")
varLineData.regReplace(pattern: "mai", replaceWith: "ㄇㄞ") varLineData.selfReplace("mai", "ㄇㄞ")
varLineData.regReplace(pattern: "man", replaceWith: "ㄇㄢ") varLineData.selfReplace("man", "ㄇㄢ")
varLineData.regReplace(pattern: "mao", replaceWith: "ㄇㄠ") varLineData.selfReplace("mao", "ㄇㄠ")
varLineData.regReplace(pattern: "mei", replaceWith: "ㄇㄟ") varLineData.selfReplace("mei", "ㄇㄟ")
varLineData.regReplace(pattern: "men", replaceWith: "ㄇㄣ") varLineData.selfReplace("men", "ㄇㄣ")
varLineData.regReplace(pattern: "mie", replaceWith: "ㄇㄧㄝ") varLineData.selfReplace("mie", "ㄇㄧㄝ")
varLineData.regReplace(pattern: "min", replaceWith: "ㄇㄧㄣ") varLineData.selfReplace("min", "ㄇㄧㄣ")
varLineData.regReplace(pattern: "miu", replaceWith: "ㄇㄧㄡ") varLineData.selfReplace("miu", "ㄇㄧㄡ")
varLineData.regReplace(pattern: "mou", replaceWith: "ㄇㄡ") varLineData.selfReplace("mou", "ㄇㄡ")
varLineData.regReplace(pattern: "nai", replaceWith: "ㄋㄞ") varLineData.selfReplace("nai", "ㄋㄞ")
varLineData.regReplace(pattern: "nan", replaceWith: "ㄋㄢ") varLineData.selfReplace("nan", "ㄋㄢ")
varLineData.regReplace(pattern: "nao", replaceWith: "ㄋㄠ") varLineData.selfReplace("nao", "ㄋㄠ")
varLineData.regReplace(pattern: "nei", replaceWith: "ㄋㄟ") varLineData.selfReplace("nei", "ㄋㄟ")
varLineData.regReplace(pattern: "nen", replaceWith: "ㄋㄣ") varLineData.selfReplace("nen", "ㄋㄣ")
varLineData.regReplace(pattern: "nie", replaceWith: "ㄋㄧㄝ") varLineData.selfReplace("nie", "ㄋㄧㄝ")
varLineData.regReplace(pattern: "nin", replaceWith: "ㄋㄧㄣ") varLineData.selfReplace("nin", "ㄋㄧㄣ")
varLineData.regReplace(pattern: "niu", replaceWith: "ㄋㄧㄡ") varLineData.selfReplace("niu", "ㄋㄧㄡ")
varLineData.regReplace(pattern: "nou", replaceWith: "ㄋㄡ") varLineData.selfReplace("nou", "ㄋㄡ")
varLineData.regReplace(pattern: "nui", replaceWith: "ㄋㄨㄟ") varLineData.selfReplace("nui", "ㄋㄨㄟ")
varLineData.regReplace(pattern: "nun", replaceWith: "ㄋㄨㄣ") varLineData.selfReplace("nun", "ㄋㄨㄣ")
varLineData.regReplace(pattern: "nuo", replaceWith: "ㄋㄨㄛ") varLineData.selfReplace("nuo", "ㄋㄨㄛ")
varLineData.regReplace(pattern: "nve", replaceWith: "ㄋㄩㄝ") varLineData.selfReplace("nve", "ㄋㄩㄝ")
varLineData.regReplace(pattern: "pai", replaceWith: "ㄆㄞ") varLineData.selfReplace("pai", "ㄆㄞ")
varLineData.regReplace(pattern: "pan", replaceWith: "ㄆㄢ") varLineData.selfReplace("pan", "ㄆㄢ")
varLineData.regReplace(pattern: "pao", replaceWith: "ㄆㄠ") varLineData.selfReplace("pao", "ㄆㄠ")
varLineData.regReplace(pattern: "pei", replaceWith: "ㄆㄟ") varLineData.selfReplace("pei", "ㄆㄟ")
varLineData.regReplace(pattern: "pen", replaceWith: "ㄆㄣ") varLineData.selfReplace("pen", "ㄆㄣ")
varLineData.regReplace(pattern: "pia", replaceWith: "ㄆㄧㄚ") varLineData.selfReplace("pia", "ㄆㄧㄚ")
varLineData.regReplace(pattern: "pie", replaceWith: "ㄆㄧㄝ") varLineData.selfReplace("pie", "ㄆㄧㄝ")
varLineData.regReplace(pattern: "pin", replaceWith: "ㄆㄧㄣ") varLineData.selfReplace("pin", "ㄆㄧㄣ")
varLineData.regReplace(pattern: "pou", replaceWith: "ㄆㄡ") varLineData.selfReplace("pou", "ㄆㄡ")
varLineData.regReplace(pattern: "qia", replaceWith: "ㄑㄧㄚ") varLineData.selfReplace("qia", "ㄑㄧㄚ")
varLineData.regReplace(pattern: "qie", replaceWith: "ㄑㄧㄝ") varLineData.selfReplace("qie", "ㄑㄧㄝ")
varLineData.regReplace(pattern: "qin", replaceWith: "ㄑㄧㄣ") varLineData.selfReplace("qin", "ㄑㄧㄣ")
varLineData.regReplace(pattern: "qiu", replaceWith: "ㄑㄧㄡ") varLineData.selfReplace("qiu", "ㄑㄧㄡ")
varLineData.regReplace(pattern: "que", replaceWith: "ㄑㄩㄝ") varLineData.selfReplace("que", "ㄑㄩㄝ")
varLineData.regReplace(pattern: "qun", replaceWith: "ㄑㄩㄣ") varLineData.selfReplace("qun", "ㄑㄩㄣ")
varLineData.regReplace(pattern: "ran", replaceWith: "ㄖㄢ") varLineData.selfReplace("ran", "ㄖㄢ")
varLineData.regReplace(pattern: "rao", replaceWith: "ㄖㄠ") varLineData.selfReplace("rao", "ㄖㄠ")
varLineData.regReplace(pattern: "ren", replaceWith: "ㄖㄣ") varLineData.selfReplace("ren", "ㄖㄣ")
varLineData.regReplace(pattern: "rou", replaceWith: "ㄖㄡ") varLineData.selfReplace("rou", "ㄖㄡ")
varLineData.regReplace(pattern: "rui", replaceWith: "ㄖㄨㄟ") varLineData.selfReplace("rui", "ㄖㄨㄟ")
varLineData.regReplace(pattern: "run", replaceWith: "ㄖㄨㄣ") varLineData.selfReplace("run", "ㄖㄨㄣ")
varLineData.regReplace(pattern: "ruo", replaceWith: "ㄖㄨㄛ") varLineData.selfReplace("ruo", "ㄖㄨㄛ")
varLineData.regReplace(pattern: "sai", replaceWith: "ㄙㄞ") varLineData.selfReplace("sai", "ㄙㄞ")
varLineData.regReplace(pattern: "san", replaceWith: "ㄙㄢ") varLineData.selfReplace("san", "ㄙㄢ")
varLineData.regReplace(pattern: "sao", replaceWith: "ㄙㄠ") varLineData.selfReplace("sao", "ㄙㄠ")
varLineData.regReplace(pattern: "sei", replaceWith: "ㄙㄟ") varLineData.selfReplace("sei", "ㄙㄟ")
varLineData.regReplace(pattern: "sen", replaceWith: "ㄙㄣ") varLineData.selfReplace("sen", "ㄙㄣ")
varLineData.regReplace(pattern: "sha", replaceWith: "ㄕㄚ") varLineData.selfReplace("sha", "ㄕㄚ")
varLineData.regReplace(pattern: "she", replaceWith: "ㄕㄜ") varLineData.selfReplace("she", "ㄕㄜ")
varLineData.regReplace(pattern: "shi", replaceWith: "") varLineData.selfReplace("shi", "")
varLineData.regReplace(pattern: "shu", replaceWith: "ㄕㄨ") varLineData.selfReplace("shu", "ㄕㄨ")
varLineData.regReplace(pattern: "sou", replaceWith: "ㄙㄡ") varLineData.selfReplace("sou", "ㄙㄡ")
varLineData.regReplace(pattern: "sui", replaceWith: "ㄙㄨㄟ") varLineData.selfReplace("sui", "ㄙㄨㄟ")
varLineData.regReplace(pattern: "sun", replaceWith: "ㄙㄨㄣ") varLineData.selfReplace("sun", "ㄙㄨㄣ")
varLineData.regReplace(pattern: "suo", replaceWith: "ㄙㄨㄛ") varLineData.selfReplace("suo", "ㄙㄨㄛ")
varLineData.regReplace(pattern: "tai", replaceWith: "ㄊㄞ") varLineData.selfReplace("tai", "ㄊㄞ")
varLineData.regReplace(pattern: "tan", replaceWith: "ㄊㄢ") varLineData.selfReplace("tan", "ㄊㄢ")
varLineData.regReplace(pattern: "tao", replaceWith: "ㄊㄠ") varLineData.selfReplace("tao", "ㄊㄠ")
varLineData.regReplace(pattern: "tie", replaceWith: "ㄊㄧㄝ") varLineData.selfReplace("tie", "ㄊㄧㄝ")
varLineData.regReplace(pattern: "tou", replaceWith: "ㄊㄡ") varLineData.selfReplace("tou", "ㄊㄡ")
varLineData.regReplace(pattern: "tui", replaceWith: "ㄊㄨㄟ") varLineData.selfReplace("tui", "ㄊㄨㄟ")
varLineData.regReplace(pattern: "tun", replaceWith: "ㄊㄨㄣ") varLineData.selfReplace("tun", "ㄊㄨㄣ")
varLineData.regReplace(pattern: "tuo", replaceWith: "ㄊㄨㄛ") varLineData.selfReplace("tuo", "ㄊㄨㄛ")
varLineData.regReplace(pattern: "wai", replaceWith: "ㄨㄞ") varLineData.selfReplace("wai", "ㄨㄞ")
varLineData.regReplace(pattern: "wan", replaceWith: "ㄨㄢ") varLineData.selfReplace("wan", "ㄨㄢ")
varLineData.regReplace(pattern: "wei", replaceWith: "ㄨㄟ") varLineData.selfReplace("wei", "ㄨㄟ")
varLineData.regReplace(pattern: "wen", replaceWith: "ㄨㄣ") varLineData.selfReplace("wen", "ㄨㄣ")
varLineData.regReplace(pattern: "xia", replaceWith: "ㄒㄧㄚ") varLineData.selfReplace("xia", "ㄒㄧㄚ")
varLineData.regReplace(pattern: "xie", replaceWith: "ㄒㄧㄝ") varLineData.selfReplace("xie", "ㄒㄧㄝ")
varLineData.regReplace(pattern: "xin", replaceWith: "ㄒㄧㄣ") varLineData.selfReplace("xin", "ㄒㄧㄣ")
varLineData.regReplace(pattern: "xiu", replaceWith: "ㄒㄧㄡ") varLineData.selfReplace("xiu", "ㄒㄧㄡ")
varLineData.regReplace(pattern: "xue", replaceWith: "ㄒㄩㄝ") varLineData.selfReplace("xue", "ㄒㄩㄝ")
varLineData.regReplace(pattern: "xun", replaceWith: "ㄒㄩㄣ") varLineData.selfReplace("xun", "ㄒㄩㄣ")
varLineData.regReplace(pattern: "yai", replaceWith: "ㄧㄞ") varLineData.selfReplace("yai", "ㄧㄞ")
varLineData.regReplace(pattern: "yan", replaceWith: "ㄧㄢ") varLineData.selfReplace("yan", "ㄧㄢ")
varLineData.regReplace(pattern: "yao", replaceWith: "ㄧㄠ") varLineData.selfReplace("yao", "ㄧㄠ")
varLineData.regReplace(pattern: "yin", replaceWith: "ㄧㄣ") varLineData.selfReplace("yin", "ㄧㄣ")
varLineData.regReplace(pattern: "you", replaceWith: "ㄧㄡ") varLineData.selfReplace("you", "ㄧㄡ")
varLineData.regReplace(pattern: "yue", replaceWith: "ㄩㄝ") varLineData.selfReplace("yue", "ㄩㄝ")
varLineData.regReplace(pattern: "yun", replaceWith: "ㄩㄣ") varLineData.selfReplace("yun", "ㄩㄣ")
varLineData.regReplace(pattern: "zai", replaceWith: "ㄗㄞ") varLineData.selfReplace("zai", "ㄗㄞ")
varLineData.regReplace(pattern: "zan", replaceWith: "ㄗㄢ") varLineData.selfReplace("zan", "ㄗㄢ")
varLineData.regReplace(pattern: "zao", replaceWith: "ㄗㄠ") varLineData.selfReplace("zao", "ㄗㄠ")
varLineData.regReplace(pattern: "zei", replaceWith: "ㄗㄟ") varLineData.selfReplace("zei", "ㄗㄟ")
varLineData.regReplace(pattern: "zen", replaceWith: "ㄗㄣ") varLineData.selfReplace("zen", "ㄗㄣ")
varLineData.regReplace(pattern: "zha", replaceWith: "ㄓㄚ") varLineData.selfReplace("zha", "ㄓㄚ")
varLineData.regReplace(pattern: "zhe", replaceWith: "ㄓㄜ") varLineData.selfReplace("zhe", "ㄓㄜ")
varLineData.regReplace(pattern: "zhi", replaceWith: "") varLineData.selfReplace("zhi", "")
varLineData.regReplace(pattern: "zhu", replaceWith: "ㄓㄨ") varLineData.selfReplace("zhu", "ㄓㄨ")
varLineData.regReplace(pattern: "zou", replaceWith: "ㄗㄡ") varLineData.selfReplace("zou", "ㄗㄡ")
varLineData.regReplace(pattern: "zui", replaceWith: "ㄗㄨㄟ") varLineData.selfReplace("zui", "ㄗㄨㄟ")
varLineData.regReplace(pattern: "zun", replaceWith: "ㄗㄨㄣ") varLineData.selfReplace("zun", "ㄗㄨㄣ")
varLineData.regReplace(pattern: "zuo", replaceWith: "ㄗㄨㄛ") varLineData.selfReplace("zuo", "ㄗㄨㄛ")
varLineData.regReplace(pattern: "ai", replaceWith: "") varLineData.selfReplace("ai", "")
varLineData.regReplace(pattern: "an", replaceWith: "") varLineData.selfReplace("an", "")
varLineData.regReplace(pattern: "ao", replaceWith: "") varLineData.selfReplace("ao", "")
varLineData.regReplace(pattern: "ba", replaceWith: "ㄅㄚ") varLineData.selfReplace("ba", "ㄅㄚ")
varLineData.regReplace(pattern: "bi", replaceWith: "ㄅㄧ") varLineData.selfReplace("bi", "ㄅㄧ")
varLineData.regReplace(pattern: "bo", replaceWith: "ㄅㄛ") varLineData.selfReplace("bo", "ㄅㄛ")
varLineData.regReplace(pattern: "bu", replaceWith: "ㄅㄨ") varLineData.selfReplace("bu", "ㄅㄨ")
varLineData.regReplace(pattern: "ca", replaceWith: "ㄘㄚ") varLineData.selfReplace("ca", "ㄘㄚ")
varLineData.regReplace(pattern: "ce", replaceWith: "ㄘㄜ") varLineData.selfReplace("ce", "ㄘㄜ")
varLineData.regReplace(pattern: "ci", replaceWith: "") varLineData.selfReplace("ci", "")
varLineData.regReplace(pattern: "cu", replaceWith: "ㄘㄨ") varLineData.selfReplace("cu", "ㄘㄨ")
varLineData.regReplace(pattern: "da", replaceWith: "ㄉㄚ") varLineData.selfReplace("da", "ㄉㄚ")
varLineData.regReplace(pattern: "de", replaceWith: "ㄉㄜ") varLineData.selfReplace("de", "ㄉㄜ")
varLineData.regReplace(pattern: "di", replaceWith: "ㄉㄧ") varLineData.selfReplace("di", "ㄉㄧ")
varLineData.regReplace(pattern: "du", replaceWith: "ㄉㄨ") varLineData.selfReplace("du", "ㄉㄨ")
varLineData.regReplace(pattern: "eh", replaceWith: "") varLineData.selfReplace("eh", "")
varLineData.regReplace(pattern: "ei", replaceWith: "") varLineData.selfReplace("ei", "")
varLineData.regReplace(pattern: "en", replaceWith: "") varLineData.selfReplace("en", "")
varLineData.regReplace(pattern: "er", replaceWith: "") varLineData.selfReplace("er", "")
varLineData.regReplace(pattern: "fa", replaceWith: "ㄈㄚ") varLineData.selfReplace("fa", "ㄈㄚ")
varLineData.regReplace(pattern: "fo", replaceWith: "ㄈㄛ") varLineData.selfReplace("fo", "ㄈㄛ")
varLineData.regReplace(pattern: "fu", replaceWith: "ㄈㄨ") varLineData.selfReplace("fu", "ㄈㄨ")
varLineData.regReplace(pattern: "ga", replaceWith: "ㄍㄚ") varLineData.selfReplace("ga", "ㄍㄚ")
varLineData.regReplace(pattern: "ge", replaceWith: "ㄍㄜ") varLineData.selfReplace("ge", "ㄍㄜ")
varLineData.regReplace(pattern: "gi", replaceWith: "ㄍㄧ") varLineData.selfReplace("gi", "ㄍㄧ")
varLineData.regReplace(pattern: "gu", replaceWith: "ㄍㄨ") varLineData.selfReplace("gu", "ㄍㄨ")
varLineData.regReplace(pattern: "ha", replaceWith: "ㄏㄚ") varLineData.selfReplace("ha", "ㄏㄚ")
varLineData.regReplace(pattern: "he", replaceWith: "ㄏㄜ") varLineData.selfReplace("he", "ㄏㄜ")
varLineData.regReplace(pattern: "hu", replaceWith: "ㄏㄨ") varLineData.selfReplace("hu", "ㄏㄨ")
varLineData.regReplace(pattern: "ji", replaceWith: "ㄐㄧ") varLineData.selfReplace("ji", "ㄐㄧ")
varLineData.regReplace(pattern: "ju", replaceWith: "ㄐㄩ") varLineData.selfReplace("ju", "ㄐㄩ")
varLineData.regReplace(pattern: "ka", replaceWith: "ㄎㄚ") varLineData.selfReplace("ka", "ㄎㄚ")
varLineData.regReplace(pattern: "ke", replaceWith: "ㄎㄜ") varLineData.selfReplace("ke", "ㄎㄜ")
varLineData.regReplace(pattern: "ku", replaceWith: "ㄎㄨ") varLineData.selfReplace("ku", "ㄎㄨ")
varLineData.regReplace(pattern: "la", replaceWith: "ㄌㄚ") varLineData.selfReplace("la", "ㄌㄚ")
varLineData.regReplace(pattern: "le", replaceWith: "ㄌㄜ") varLineData.selfReplace("le", "ㄌㄜ")
varLineData.regReplace(pattern: "li", replaceWith: "ㄌㄧ") varLineData.selfReplace("li", "ㄌㄧ")
varLineData.regReplace(pattern: "lo", replaceWith: "ㄌㄛ") varLineData.selfReplace("lo", "ㄌㄛ")
varLineData.regReplace(pattern: "lu", replaceWith: "ㄌㄨ") varLineData.selfReplace("lu", "ㄌㄨ")
varLineData.regReplace(pattern: "lv", replaceWith: "ㄌㄩ") varLineData.selfReplace("lv", "ㄌㄩ")
varLineData.regReplace(pattern: "ma", replaceWith: "ㄇㄚ") varLineData.selfReplace("ma", "ㄇㄚ")
varLineData.regReplace(pattern: "me", replaceWith: "ㄇㄜ") varLineData.selfReplace("me", "ㄇㄜ")
varLineData.regReplace(pattern: "mi", replaceWith: "ㄇㄧ") varLineData.selfReplace("mi", "ㄇㄧ")
varLineData.regReplace(pattern: "mo", replaceWith: "ㄇㄛ") varLineData.selfReplace("mo", "ㄇㄛ")
varLineData.regReplace(pattern: "mu", replaceWith: "ㄇㄨ") varLineData.selfReplace("mu", "ㄇㄨ")
varLineData.regReplace(pattern: "na", replaceWith: "ㄋㄚ") varLineData.selfReplace("na", "ㄋㄚ")
varLineData.regReplace(pattern: "ne", replaceWith: "ㄋㄜ") varLineData.selfReplace("ne", "ㄋㄜ")
varLineData.regReplace(pattern: "ni", replaceWith: "ㄋㄧ") varLineData.selfReplace("ni", "ㄋㄧ")
varLineData.regReplace(pattern: "nu", replaceWith: "ㄋㄨ") varLineData.selfReplace("nu", "ㄋㄨ")
varLineData.regReplace(pattern: "nv", replaceWith: "ㄋㄩ") varLineData.selfReplace("nv", "ㄋㄩ")
varLineData.regReplace(pattern: "ou", replaceWith: "") varLineData.selfReplace("ou", "")
varLineData.regReplace(pattern: "pa", replaceWith: "ㄆㄚ") varLineData.selfReplace("pa", "ㄆㄚ")
varLineData.regReplace(pattern: "pi", replaceWith: "ㄆㄧ") varLineData.selfReplace("pi", "ㄆㄧ")
varLineData.regReplace(pattern: "po", replaceWith: "ㄆㄛ") varLineData.selfReplace("po", "ㄆㄛ")
varLineData.regReplace(pattern: "pu", replaceWith: "ㄆㄨ") varLineData.selfReplace("pu", "ㄆㄨ")
varLineData.regReplace(pattern: "qi", replaceWith: "ㄑㄧ") varLineData.selfReplace("qi", "ㄑㄧ")
varLineData.regReplace(pattern: "qu", replaceWith: "ㄑㄩ") varLineData.selfReplace("qu", "ㄑㄩ")
varLineData.regReplace(pattern: "re", replaceWith: "ㄖㄜ") varLineData.selfReplace("re", "ㄖㄜ")
varLineData.regReplace(pattern: "ri", replaceWith: "") varLineData.selfReplace("ri", "")
varLineData.regReplace(pattern: "ru", replaceWith: "ㄖㄨ") varLineData.selfReplace("ru", "ㄖㄨ")
varLineData.regReplace(pattern: "sa", replaceWith: "ㄙㄚ") varLineData.selfReplace("sa", "ㄙㄚ")
varLineData.regReplace(pattern: "se", replaceWith: "ㄙㄜ") varLineData.selfReplace("se", "ㄙㄜ")
varLineData.regReplace(pattern: "si", replaceWith: "") varLineData.selfReplace("si", "")
varLineData.regReplace(pattern: "su", replaceWith: "ㄙㄨ") varLineData.selfReplace("su", "ㄙㄨ")
varLineData.regReplace(pattern: "ta", replaceWith: "ㄊㄚ") varLineData.selfReplace("ta", "ㄊㄚ")
varLineData.regReplace(pattern: "te", replaceWith: "ㄊㄜ") varLineData.selfReplace("te", "ㄊㄜ")
varLineData.regReplace(pattern: "ti", replaceWith: "ㄊㄧ") varLineData.selfReplace("ti", "ㄊㄧ")
varLineData.regReplace(pattern: "tu", replaceWith: "ㄊㄨ") varLineData.selfReplace("tu", "ㄊㄨ")
varLineData.regReplace(pattern: "wa", replaceWith: "ㄨㄚ") varLineData.selfReplace("wa", "ㄨㄚ")
varLineData.regReplace(pattern: "wo", replaceWith: "ㄨㄛ") varLineData.selfReplace("wo", "ㄨㄛ")
varLineData.regReplace(pattern: "wu", replaceWith: "") varLineData.selfReplace("wu", "")
varLineData.regReplace(pattern: "xi", replaceWith: "ㄒㄧ") varLineData.selfReplace("xi", "ㄒㄧ")
varLineData.regReplace(pattern: "xu", replaceWith: "ㄒㄩ") varLineData.selfReplace("xu", "ㄒㄩ")
varLineData.regReplace(pattern: "ya", replaceWith: "ㄧㄚ") varLineData.selfReplace("ya", "ㄧㄚ")
varLineData.regReplace(pattern: "ye", replaceWith: "ㄧㄝ") varLineData.selfReplace("ye", "ㄧㄝ")
varLineData.regReplace(pattern: "yi", replaceWith: "") varLineData.selfReplace("yi", "")
varLineData.regReplace(pattern: "yo", replaceWith: "ㄧㄛ") varLineData.selfReplace("yo", "ㄧㄛ")
varLineData.regReplace(pattern: "yu", replaceWith: "") varLineData.selfReplace("yu", "")
varLineData.regReplace(pattern: "za", replaceWith: "ㄗㄚ") varLineData.selfReplace("za", "ㄗㄚ")
varLineData.regReplace(pattern: "ze", replaceWith: "ㄗㄜ") varLineData.selfReplace("ze", "ㄗㄜ")
varLineData.regReplace(pattern: "zi", replaceWith: "") varLineData.selfReplace("zi", "")
varLineData.regReplace(pattern: "zu", replaceWith: "ㄗㄨ") varLineData.selfReplace("zu", "ㄗㄨ")
varLineData.regReplace(pattern: "a", replaceWith: "") varLineData.selfReplace("a", "")
varLineData.regReplace(pattern: "e", replaceWith: "") varLineData.selfReplace("e", "")
varLineData.regReplace(pattern: "o", replaceWith: "") varLineData.selfReplace("o", "")
varLineData.regReplace(pattern: "q", replaceWith: "") varLineData.selfReplace("q", "")
varLineData.regReplace(pattern: "2", replaceWith: "ˊ") varLineData.selfReplace("2", "ˊ")
varLineData.regReplace(pattern: "3", replaceWith: "ˇ") varLineData.selfReplace("3", "ˇ")
varLineData.regReplace(pattern: "4", replaceWith: "ˋ") varLineData.selfReplace("4", "ˋ")
varLineData.regReplace(pattern: "5", replaceWith: "˙") varLineData.selfReplace("5", "˙")
varLineData.regReplace(pattern: "1", replaceWith: "") varLineData.selfReplace("1", "")
strProcessed += varLineData strProcessed += varLineData
strProcessed += "\n" strProcessed += "\n"
} }

View File

@ -686,6 +686,8 @@
<dict> <dict>
<key>POSTINSTALL_PATH</key> <key>POSTINSTALL_PATH</key>
<dict> <dict>
<key>PATH</key>
<string>Installer/pkgPostInstall.sh</string>
<key>PATH_TYPE</key> <key>PATH_TYPE</key>
<integer>1</integer> <integer>1</integer>
</dict> </dict>
@ -724,7 +726,7 @@
<key>USE_HFS+_COMPRESSION</key> <key>USE_HFS+_COMPRESSION</key>
<false/> <false/>
<key>VERSION</key> <key>VERSION</key>
<string>1.4.0</string> <string>1.4.1</string>
</dict> </dict>
<key>TYPE</key> <key>TYPE</key>
<integer>0</integer> <integer>0</integer>

View File

@ -1179,7 +1179,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1940; CURRENT_PROJECT_VERSION = 1941;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
@ -1202,7 +1202,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.4.0; MARKETING_VERSION = 1.4.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor;
@ -1235,7 +1235,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1940; CURRENT_PROJECT_VERSION = 1941;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
@ -1254,7 +1254,7 @@
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
MACOSX_DEPLOYMENT_TARGET = 10.11.5; MACOSX_DEPLOYMENT_TARGET = 10.11.5;
MARKETING_VERSION = 1.4.0; MARKETING_VERSION = 1.4.1;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor; PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.vChewing.vChewingPhraseEditor;