├── .github └── workflows │ └── gh-pages.yml ├── .gitignore ├── .gitmodules ├── .travis.yml ├── README.md ├── blog ├── .gitignore ├── _config.yml ├── package-lock.json ├── package.json ├── scaffolds │ ├── draft.md │ ├── page.md │ ├── photo.md │ └── post.md ├── source │ ├── .nojekyll │ ├── CNAME │ ├── _data │ │ ├── downloads.yaml │ │ ├── features.yaml │ │ └── user_quotes.yaml │ ├── _posts │ │ ├── hello-world.md │ │ ├── luna-pinyin.md │ │ ├── qna-in-mtvu.md │ │ ├── rime-configuration-manager.md │ │ ├── screencasts.md │ │ ├── spelling-algebra-debugger.md │ │ ├── theme-music.md │ │ └── weasel-release-0-11.md │ ├── categories │ │ └── index.md │ ├── code │ │ └── index.md │ ├── discuss │ │ └── index.md │ ├── docs │ │ └── index.md │ ├── donate │ │ └── index.md │ ├── download │ │ └── index.md │ ├── favicon.png │ ├── i-rime-with-fool │ │ └── index.md │ ├── images │ │ ├── gongdexiang.jpg │ │ ├── home-feature-1.png │ │ ├── home-feature-1.svg │ │ ├── home-feature-2.png │ │ ├── home-feature-2.svg │ │ ├── home-feature-3.png │ │ ├── home-feature-3.svg │ │ ├── home-feature-4.png │ │ ├── home-feature-4.svg │ │ ├── home-slogan.png │ │ ├── home-slogan.svg │ │ ├── home-title.png │ │ ├── home-title.svg │ │ ├── home-watermarks.png │ │ ├── home-watermarks.svg │ │ ├── logo.png │ │ ├── logo.svg │ │ ├── mingyue-pinyin-2013-09-19.png │ │ ├── mingyue-pinyin-sep-2011.jpg │ │ ├── mingyue-pinyin.jpg │ │ ├── qr-donate.jpg │ │ ├── rime-recipes.jpg │ │ ├── rimekit-00.png │ │ ├── sadebugger-01.png │ │ ├── sadebugger-02.png │ │ ├── sadebugger-03.png │ │ ├── sadebugger-04.png │ │ ├── sadebugger-05.png │ │ ├── sadebugger-06.png │ │ └── wechatpay.jpg │ ├── media │ │ ├── RIME_主題曲.mp3 │ │ ├── 中州韻.mp3 │ │ ├── 小狼毫.mp3 │ │ └── 鼠鬚管.mp3 │ ├── online │ │ └── index.md │ ├── recipes │ │ └── index.md │ ├── release │ │ ├── squirrel │ │ │ ├── appcast.xml │ │ │ └── index.md │ │ └── weasel │ │ │ ├── appcast.xml │ │ │ └── index.md │ ├── tags │ │ └── index.md │ └── testing │ │ ├── squirrel │ │ ├── appcast.xml │ │ └── index.md │ │ └── weasel │ │ ├── appcast.xml │ │ └── index.md ├── themes │ └── freewill │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── _config.yml │ │ ├── languages │ │ ├── default.yml │ │ ├── zh-CN.yml │ │ └── zh-TW.yml │ │ ├── layout │ │ ├── _partial │ │ │ ├── after_footer.ejs │ │ │ ├── archive.ejs │ │ │ ├── article.ejs │ │ │ ├── footer.ejs │ │ │ ├── front_matter.ejs │ │ │ ├── head.ejs │ │ │ ├── index.ejs │ │ │ ├── index_pagination.ejs │ │ │ ├── navigation.ejs │ │ │ ├── post │ │ │ │ ├── category.ejs │ │ │ │ ├── comment.ejs │ │ │ │ ├── entry.ejs │ │ │ │ ├── google_analytics.ejs │ │ │ │ ├── meta.ejs │ │ │ │ ├── pagination.ejs │ │ │ │ ├── share.ejs │ │ │ │ ├── slogan.ejs │ │ │ │ ├── tag.ejs │ │ │ │ └── title.ejs │ │ │ └── sidebar.ejs │ │ ├── _widget │ │ │ ├── category.ejs │ │ │ ├── links.ejs │ │ │ ├── recent_posts.ejs │ │ │ ├── search.ejs │ │ │ └── tagcloud.ejs │ │ ├── archive.ejs │ │ ├── categories.ejs │ │ ├── category.ejs │ │ ├── index.ejs │ │ ├── layout.ejs │ │ ├── page.ejs │ │ ├── post.ejs │ │ ├── tag.ejs │ │ └── tags.ejs │ │ ├── package.json │ │ └── source │ │ ├── css │ │ ├── bootstrap-responsive.css │ │ ├── bootstrap.amelia.min.css │ │ ├── bootstrap.cerulean.min.css │ │ ├── bootstrap.cosmo.min.css │ │ ├── bootstrap.cyborg.min.css │ │ ├── bootstrap.darkly.min.css │ │ ├── bootstrap.flatly.min.css │ │ ├── bootstrap.journal.min.css │ │ ├── bootstrap.lumen.min.css │ │ ├── bootstrap.min.css │ │ ├── bootstrap.readable.min.css │ │ ├── bootstrap.simplex.min.css │ │ ├── bootstrap.slate.min.css │ │ ├── bootstrap.spacelab.min.css │ │ ├── bootstrap.superhero.min.css │ │ ├── bootstrap.united.min.css │ │ ├── bootstrap.yeti.min.css │ │ ├── darktheme.css │ │ ├── font-awesome.css │ │ ├── google-fonts.css │ │ ├── highlight.css │ │ ├── style.css │ │ └── style.old.css │ │ ├── fancybox │ │ ├── blank.gif │ │ ├── fancybox_loading.gif │ │ ├── fancybox_loading@2x.gif │ │ ├── fancybox_overlay.png │ │ ├── fancybox_sprite.png │ │ ├── fancybox_sprite@2x.png │ │ ├── jquery.fancybox.css │ │ └── jquery.fancybox.pack.js │ │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ └── fontawesome-webfont.woff │ │ ├── img │ │ ├── example │ │ │ ├── bootstrap.png │ │ │ ├── cerulean.png │ │ │ ├── flatly.png │ │ │ ├── journal.png │ │ │ ├── lumen.png │ │ │ ├── readable.png │ │ │ ├── simplex.png │ │ │ ├── spacelab.png │ │ │ ├── united.png │ │ │ └── yeti.png │ │ ├── github-sprite.png │ │ ├── glyphicons-halflings-white.png │ │ └── glyphicons-halflings.png │ │ └── js │ │ ├── bootstrap.min.js │ │ ├── gallery.js │ │ ├── jquery-1.12.4.min.js │ │ ├── jquery.cookie.js │ │ ├── jquery.imagesloaded.min.js │ │ ├── jquery.t2s.js │ │ ├── main.js │ │ ├── modernizr.js │ │ └── notice.js └── update_weasel_appcast.py ├── images ├── combo-pinyin-kbcon-amj40.jpg ├── combo-pinyin-kbcon-chicory-relabeled.jpg ├── combo-pinyin-v3 │ ├── combo-pinyin-a-ia-ua.png │ ├── combo-pinyin-ai-ao-an.png │ ├── combo-pinyin-ang.png │ ├── combo-pinyin-chords.png │ ├── combo-pinyin-ei-uen.png │ ├── combo-pinyin-i-u-yu-er-en-o-e.png │ ├── combo-pinyin-iang-uang.png │ ├── combo-pinyin-iao-yuan.png │ ├── combo-pinyin-ing-ong.png │ ├── combo-pinyin-io-yue.png │ ├── combo-pinyin-iong.png │ ├── combo-pinyin-j-q-x-iou-yun.png │ ├── combo-pinyin-layout.png │ ├── combo-pinyin-logo.png │ ├── combo-pinyin-m-n-r-uei-in.png │ ├── combo-pinyin-space.png │ ├── combo-pinyin-touch-typing.png │ ├── combo-pinyin-uai-ian.png │ ├── combo-pinyin-uan.png │ ├── combo-pinyin-uo-ie.png │ └── combo-pinyin-zh-ch-sh-ou-eng.png ├── emoji-chart.png ├── rime-install-select.png ├── squirrel-vertical-text-dark.png ├── squirrel-vertical-text-light.png └── user-quotes │ ├── rime-starcraft-player.jpg │ ├── rime-users-quotes.jpg │ ├── rime-users-story.jpg │ ├── rime-users-test.jpg │ ├── rime-users-uncertainty.jpg │ ├── rime-wubi-user.jpg │ ├── squirrel-in-azure.jpg │ └── weasel-in-lost-temple.jpg └── manual ├── combo-pinyin-cheatsheet.pdf ├── 執鍵人宮保拼音鍵盤圖解.pdf └── 大衆式宮保拼音鍵盤圖解.pdf /.github/workflows/gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: GitHub Pages 2 | 3 | on: 4 | workflow_dispatch: 5 | push: 6 | branches: 7 | - ci 8 | - master 9 | pull_request: 10 | 11 | jobs: 12 | deploy: 13 | runs-on: ubuntu-24.04 14 | concurrency: 15 | group: ${{ github.workflow }}-${{ github.ref }} 16 | defaults: 17 | run: 18 | working-directory: blog 19 | env: 20 | TZ: Asia/Shanghai 21 | steps: 22 | - uses: actions/checkout@v4 23 | 24 | - name: Setup Node 25 | uses: actions/setup-node@v4 26 | with: 27 | node-version: '22' 28 | 29 | - name: Cache dependencies 30 | uses: actions/cache@v4 31 | with: 32 | path: ~/.npm 33 | key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} 34 | restore-keys: | 35 | ${{ runner.os }}-node- 36 | 37 | - run: npm ci 38 | 39 | - run: | 40 | pip install ruamel.yaml 41 | python ./update_weasel_appcast.py 42 | 43 | - name: Deploy luna pinyin and stroke 44 | uses: rimeinn/deploy-schema@master 45 | with: 46 | user-recipe-list: |- 47 | luna-pinyin 48 | stroke 49 | schema-list: |- 50 | luna_pinyin 51 | stroke 52 | 53 | - name: Install fcitx5-rime.js 54 | run: | 55 | wget -P /tmp https://github.com/rimeinn/fcitx5-rime.js/releases/download/0.2.3/fcitx5-rime.tgz 56 | tar xf /tmp/fcitx5-rime.tgz -C /tmp 57 | mv /tmp/package/dist/* source/online 58 | rm -f source/online/Fcitx5.d.ts 59 | 60 | - name: Generate site 61 | run: | 62 | mv /tmp/deploy-schema/artifact.zip source/online/rime.zip 63 | npx hexo clean 64 | npx hexo generate 65 | 66 | - name: Upload artifact 67 | uses: actions/upload-artifact@v4 68 | with: 69 | name: public 70 | path: | 71 | blog/public 72 | 73 | - name: Deploy 74 | uses: peaceiris/actions-gh-pages@v4 75 | if: ${{ github.ref == 'refs/heads/master' }} 76 | with: 77 | deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} 78 | external_repository: rime/rime.github.io 79 | publish_branch: master 80 | publish_dir: ./blog/public 81 | cname: rime.im 82 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | # fcitx5-rime.js 3 | Fcitx5.* 4 | libFcitx5* 5 | *.zip 6 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "wiki"] 2 | path = wiki 3 | url = https://github.com/rime/home.wiki.git 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: lts/* 3 | branches: 4 | only: 5 | - master 6 | cache: npm 7 | before_script: 8 | - export TZ='Asia/Shanghai' 9 | - npm install -g hexo-cli 10 | install: 11 | - cd blog 12 | - npm install 13 | script: 14 | - hexo clean 15 | - hexo generate 16 | deploy: 17 | provider: pages 18 | strategy: git 19 | edge: true 20 | local_dir: public 21 | repo: rime/rime.github.io 22 | target_branch: master 23 | keep_history: false 24 | fqdn: rime.im 25 | cleanup: false 26 | token: $GITHUB_TOKEN 27 | on: 28 | branch: master 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Rime::Home 2 | 3 | Rime 代碼之家 4 | 5 | [![Discussions](https://img.shields.io/github/discussions/rime/home.svg)](https://github.com/rime/home/discussions) 6 | 7 | ## Project home page 8 | 9 | 10 | 11 | ## Docs 12 | 13 | [Rime Wiki](https://github.com/rime/home/wiki) 14 | 15 | ## Bug Report 16 | 17 | Submit general issues about Rime to [Rime::Home](https://github.com/rime/home/issues) for triage. 18 | 19 | [![Issues](https://img.shields.io/github/issues/rime/home.svg)](https://github.com/rime/home/issues) 20 | 21 | This also includes bug reports and feature requests specific to the project site, docs or Rime::Home itself. 22 | -------------------------------------------------------------------------------- /blog/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Thumbs.db 3 | db.json 4 | *.log 5 | node_modules/ 6 | public/ 7 | .deploy*/ 8 | -------------------------------------------------------------------------------- /blog/_config.yml: -------------------------------------------------------------------------------- 1 | # Hexo Configuration 2 | ## Docs: http://hexo.io/docs/configuration.html 3 | ## Source: https://github.com/hexojs/hexo/ 4 | 5 | # Site 6 | title: RIME | 中州韻輸入法引擎 7 | subtitle: 中州韻輸入法 思想用鍵盤表達 8 | description: Le blog de la Rime 9 | author: 佛振@式恕堂 10 | language: default 11 | timezone: 12 | 13 | # URL 14 | ## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' 15 | url: https://rime.im 16 | root: / 17 | permalink: blog/:year/:month/:day/:title/ 18 | permalink_defaults: 19 | 20 | # Directory 21 | source_dir: source 22 | public_dir: public 23 | tag_dir: tags 24 | archive_dir: blog 25 | category_dir: categories 26 | code_dir: downloads/code 27 | i18n_dir: :lang 28 | skip_render: 29 | - '{release,testing}/*/appcast.xml' 30 | - '{release,testing}/*/release-notes.html' 31 | 32 | # Writing 33 | new_post_name: :title.md # File name of new posts 34 | default_layout: post 35 | titlecase: false # Transform title into titlecase 36 | external_link: true # Open external links in new tab 37 | filename_case: 0 38 | render_drafts: false 39 | post_asset_folder: false 40 | relative_link: false 41 | future: true 42 | highlight: 43 | enable: true 44 | line_number: true 45 | tab_replace: 46 | 47 | # Category & Tag 48 | default_category: uncategorized 49 | category_map: 50 | tag_map: 51 | 52 | # Date / Time format 53 | ## Hexo uses Moment.js to parse and display date 54 | ## You can customize the date format as defined in 55 | ## http://momentjs.com/docs/#/displaying/format/ 56 | date_format: YYYY-MM-DD 57 | time_format: HH:mm:ss 58 | 59 | # Pagination 60 | ## Set per_page to 0 to disable pagination 61 | per_page: 10 62 | pagination_dir: page 63 | 64 | # Disqus 65 | #disqus_shortname: rimeime 66 | 67 | # Duoshuo 68 | #duoshuo_shortname: rime 69 | 70 | # Extensions 71 | ## Plugins: http://hexo.io/plugins/ 72 | ## Themes: http://hexo.io/themes/ 73 | theme: freewill 74 | 75 | # Deployment 76 | ## Docs: http://hexo.io/docs/deployment.html 77 | deploy: 78 | type: git 79 | repo: https://github.com/rime/rime.github.io.git 80 | branch: master 81 | ignore_hidden: false 82 | 83 | include: 84 | - .nojekyll 85 | -------------------------------------------------------------------------------- /blog/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rime-site", 3 | "version": "1.0.0", 4 | "private": true, 5 | "hexo": { 6 | "version": "7.3.0" 7 | }, 8 | "dependencies": { 9 | "hexo": "^7.3.0", 10 | "hexo-deployer-git": "^4.0.0", 11 | "hexo-generator-archive": "^2.0.0", 12 | "hexo-generator-category": "^2.0.0", 13 | "hexo-generator-index": "^4.0.0", 14 | "hexo-generator-tag": "^2.0.0", 15 | "hexo-renderer-ejs": "^2.0.0", 16 | "hexo-renderer-marked": "^6.3.0", 17 | "hexo-renderer-stylus": "^3.0.0", 18 | "hexo-server": "^3.0.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /blog/scaffolds/draft.md: -------------------------------------------------------------------------------- 1 | title: {{ title }} 2 | tags: 3 | --- 4 | -------------------------------------------------------------------------------- /blog/scaffolds/page.md: -------------------------------------------------------------------------------- 1 | title: {{ title }} 2 | date: {{ date }} 3 | --- 4 | -------------------------------------------------------------------------------- /blog/scaffolds/photo.md: -------------------------------------------------------------------------------- 1 | layout: {{ layout }} 2 | title: {{ title }} 3 | date: {{ date }} 4 | tags: 5 | --- 6 | -------------------------------------------------------------------------------- /blog/scaffolds/post.md: -------------------------------------------------------------------------------- 1 | title: {{ title }} 2 | date: {{ date }} 3 | tags: 4 | --- 5 | -------------------------------------------------------------------------------- /blog/source/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/.nojekyll -------------------------------------------------------------------------------- /blog/source/CNAME: -------------------------------------------------------------------------------- 1 | rime.im 2 | -------------------------------------------------------------------------------- /blog/source/_data/downloads.yaml: -------------------------------------------------------------------------------- 1 | footnote: | 2 | 支持 Windows 8.1+, macOS 13.0+, Linux (IBus, Fcitx) 3 | 4 | fcitx-rime: 5 | name: fcitx-rime 6 | repo: https://github.com/fcitx/fcitx-rime 7 | 8 | ibus-rime: 9 | name: ibus-rime 10 | repo: https://github.com/rime/ibus-rime 11 | url: download#tarball 12 | 13 | librime: 14 | name: librime 15 | repo: https://github.com/rime/librime 16 | url: download#tarball 17 | 18 | squirrel: 19 | name: 鼠鬚管 20 | version: '1.0.3' 21 | repo: https://github.com/rime/squirrel 22 | url: https://github.com/rime/squirrel/releases/download/1.0.3/Squirrel-1.0.3.pkg 23 | 24 | weasel: 25 | name: 小狼毫 26 | version: '0.17.0' 27 | repo: https://github.com/rime/weasel 28 | url: https://github.com/rime/weasel/releases/download/0.17.0/weasel-0.17.0.0-installer.exe 29 | -------------------------------------------------------------------------------- /blog/source/_data/features.yaml: -------------------------------------------------------------------------------- 1 | beginner: 2 | title: 擊響中文之韻 3 | subtitle: Rime Input Method Engine, rimes with your keystrokes. 4 | description: | 5 | 下載、安裝完成後,切換到 Rime 輸入法,立即擊響中文之韻。 6 | 按組合鍵 Ctrl+`F4 鍵喚出輸入方案選單,由此切換到朙月拼音、注音、倉頡等已啓用的輸入方案。 7 | 亦可調整 Rime 輸入法最常用的選項。〔[說明書](https://github.com/rime/home/wiki/UserGuide)〕 8 | 9 | intermediate: 10 | title: 設計輸入方案 11 | subtitle: Rime with input schemata, and innovate. 12 | description: | 13 | Rime 輸入方案貴在原創。 14 | 不止於拼音、注音、倉頡、速成、五筆、雙拼、宮保拼音、粵拼、吳語、中古漢語拼音、五筆畫、Emoji、國際音標等[庫藏配方](/recipes)。 15 | 讀《[方案設計書](https://github.com/rime/home/wiki/RimeWithSchemata)》,親手來創作,把輸入法變成理想的模樣。 16 | 17 | advanced: 18 | title: 破解源碼 19 | subtitle: Rime with the code, and contribute. 20 | description: | 21 | [瞭解](https://github.com/rime/home/wiki/RimeWithTheDesign) Rime 解決已知輸入難題的技術方案; 22 | 動手 [複刻源碼](code),增益其所不能。 23 | 合力打造功能更完備、擴展更容易的開源輸入法框架。 24 | 25 | -------------------------------------------------------------------------------- /blog/source/_data/user_quotes.yaml: -------------------------------------------------------------------------------- 1 | - header: | 2 | BYVoid 神牛在 [博客](http://www.byvoid.com/blog/recommend-rime/) 裏寫道: 3 | content: | 4 | 「真可謂神級輸入法!」 5 | - header: | 6 | 爱范儿([www.ifanr.com](http://www.ifanr.com/156409)): 7 | content: | 8 | 「这真是一个让你有惊喜的软件」 9 | - header: | 10 | 〔中州韻 QQ 羣〕P - 溝渠拼音: 11 | content: | 12 | 新的一天开始了 又可以用心爱的rime写字了 13 | - header: | 14 | 〔中州韻 QQ 羣〕Super - 五笔: 15 | content: | 16 | 好吧,确实又激发了我打字的欲望,哈:D 17 | -------------------------------------------------------------------------------- /blog/source/_posts/hello-world.md: -------------------------------------------------------------------------------- 1 | title: 中州韻輸入法 思想用鍵盤表達 2 | date: 2013-04-28 15:01:49 3 | tags: 4 | --- 5 | 6 | 寫輸入法的目的是更舒服地用鍵盤寫字。 7 | 而今博客開張了。[Rime](https://rime.im) 終於有了用武之地。 8 | -------------------------------------------------------------------------------- /blog/source/_posts/luna-pinyin.md: -------------------------------------------------------------------------------- 1 | title: 中秋與朙月拼音 2 | date: 2013-09-19 21:25:33 3 | tags: 4 | --- 5 | 6 | 中秋之夜,可想在部落格上寫二句。 7 | 8 | 於是 `vim ~/Library/Rime/squirrel.custom.yaml` 寫下 9 | 10 | ```YAML 11 | patch: 12 | style/color_scheme: luna 13 | ``` 14 | 15 | 部署後,按 `Control+~` 切換到【朙月拼音】。 16 | 17 | ![此刻正在寫字的朙月拼音](/images/mingyue-pinyin-2013-09-19.png) 18 | 19 | 20 | 21 | 兩年前的中秋,【朙月拼音】[第一個版本](https://code.google.com/p/rimeime/downloads/detail?name=luna-pinyin-dev-251.zip)開發完成。 22 | 23 | 當此時,用 C++ 重寫的 librime 剛剛具備輸入法基礎框架及詞表查詢部份,搭配定名爲【小狼毫】的 Windows 輸入法前端程序,竟然真的可以打字了。 24 | 25 | ![早期的朙月拼音](/images/mingyue-pinyin-sep-2011.jpg) 26 | 27 | 當此時,一輪明月,寄託了這小小的一份激動。 28 | 29 | 每當深夜裏將鍵盤收入行囊,匆匆踏過月明地,映入眼中的卻是滿滿的希望。 30 | 31 | ![《究極筆記》記錄着最初的朙月拼音](/images/mingyue-pinyin.jpg) 32 | -------------------------------------------------------------------------------- /blog/source/_posts/qna-in-mtvu.md: -------------------------------------------------------------------------------- 1 | title: 山景答問 2 | date: 2016-04-14 04:44:00 3 | tags: QnA 4 | --- 5 | 6 | ## 問與答 7 | 8 | ——「RIME」這個名字,還有「中州韻」「小狼毫」和「鼠鬚管」這些有趣的稱呼都是怎麼想出來的呢?方便的話可否講講這裏面的故事? 9 | 10 | ——不起個好名,寫碼興致索然。 11 | 12 | 13 | 14 | 原題:https://rime.im/discuss/#comment-2620725368 15 | 16 | ## 立意 17 | 18 | 本項目的立意是:造一架通用的中文輸入法平臺,使得各種音韻方言都可以用來高效地輸入中文(目標是支持用戶自定義的音碼,結果因爲用到相似的技術,形碼也順便支持了)。於是起了「Rime」這個名字。 19 | 20 | 我以爲「中州韻」這個名詞會比「廣韻」「切韻」「平水韻」等更廣爲人知,而事實是現在很多人並不學寫格律詩也不聽戲了。 21 | 不過這名字裏面還包含一層意思:不同於那些朝廷頒行的用來定義「標準音」的韻書,如今各種地方戲曲中「中州韻」只是一個象徵着「正音」的概念;曾經的標準語音,經過漫長歷史,在不同曲種中已經演化出衆多的「方言」;地方戲的唱家,念唱都以各自傳承下來的「中州韻」爲準。 22 | 有點兒意思。很貼近拙作所主張的,要做一件人性化的工具。我相信,以母語爲拼音輸入的標準音會成就更自然、更生動的表達。 23 | 24 | 二一個選取這個名字的正當理由爲,該軟件最初是在中原設計和創作的,故名「中州」; 25 | 英文、法文之「 rime 」譯爲「韻」,故名「韻」。 26 | 27 | ## 重命名 28 | 29 | 又則西洋的自由軟件命名,流行「GNU」式的[遞歸縮寫](https://zh.wikipedia.org/zh/%E9%80%92%E5%BD%92%E7%BC%A9%E5%86%99)體,不才我於是放棄了剛纔起好的名字「Rime」,重新造一個時髦的。 30 | 31 | 輸入法慣稱「IME」,因此要遞歸縮寫,格式爲「某IME」;其中「某」爲「某IME」這個單詞的首字母。如果所用之「某」只滿足遞歸縮寫卻不是有意義的單詞,那也不夠高明。所以可代入的不過「dime, lime, mime, rime, time」數例而已。時下另有一案桌輸入法平臺名曰「LIME」,大概命名屬同一體裁。 32 | 33 | 根據本項目的立意,從中選取「rime」的首字母「R」代入既定格式,即得「RIME」,全稱「Rime Input Method Engine」。巧合得很,竟然又用回了原來取的名字。(我笑話講得好嘛:) 34 | 35 | 再把英文全稱譯爲中文——中文輸入法怎能沒有中文名吶——稱做「中州韻輸入法引擎」。所謂「引擎」,乃音譯「engine」一詞。該輸入法程序設計爲,由數據(用戶定義的輸入方案)驅動彼此相連接的組件,處理輸入法的數據流。彷彿一部實體機械引擎,是用戶介面之下,爲工具運行提供動力的部分。 36 | 37 | ## 定位 38 | 39 | 說到這裏,Rime 究竟是啥?發起這個項目,主旨是造一副定製輸入法的框架。其目標用戶是無輸入法可用、需要自製輸入法的人——具體情況可能是有困難通過學習掌握時下流行的輸入法,需要基於已有的知識來創造(比如利用「母語」這項已習得技能);也可能是長期使用的小衆輸入法已無人維護,需要自己動手升級、移植軟件;還包括一直在遷就一件不合適的工具而不自知,需要藉助更靈活的工具發現和創造屬於自己的習慣用法。 40 | 41 | 總結住以上討論,Rime 是**小衆軟件**。他存在的意義,是填補輸入法軟件的空缺:號稱力圖讓所有用戶輸入更簡單、更有效率的主流輸入法軟件未能做到滿足*所有*用戶的需求——因爲其做法是把爲大多數人所使用的工具打磨成其設想中更符合用戶期望的模樣,這也許照顧不到輸入需求與衆不同的少數用戶。 42 | 回想中文輸入法曾經萬「碼」奔騰的時代,我等可瞭解到兩件事實:由於目標文字和輸入設備不存在簡明的對應關係,中文輸入法無法迴避建立一套中間編碼所帶來的複雜性;在爲衆多漢字編碼的嘗試中,有巨大的想象空間,並且有人樂於從事這看似無盡的探索。 43 | 沒有任何一種現存的輸入法可爲中文輸入的難題蓋棺定論,或許在輸入媒介不發生重大變革的條件下,碼家力求改進和創新的努力永不會終結。輸入法的發展,不能僅僅指望業界在現有解決方案上的技術深耕,還應有簡易且靈活的工具幫助更廣範圍的參與者探索新方向和新技術。 44 | 45 | ## 你們跑題 46 | 47 | 離譜的是,難道 Rime 在其核心目標之外表現出什麼優秀的素質? 48 | (懷疑肇端於 K.C.P. 神嚴重誤導輿論……[報導](https://www.byvoid.com/blog/recommend-rime)有偏差誰來負責) 49 | 很多用戶使用 Rime 竟是出於不在算計之中的理由,並且對某些方面的品質有更高的追求。 50 | 51 | 作爲一款開源軟件,在尚未形成成熟社區、不具備足夠高參與度和一定規模開發團隊、而目前資源極爲有限的條件下,在某個獨立方向上過多地投入,會不斷使項目偏離其初始目標。 52 | 53 | 例如平臺支持以及針對應用的兼容性,實乃一項無止境且無比複雜的工作。 54 | 與主流輸入法相比,其意義對 Rime 而言是不同的: 55 | 如果強調輸入法的兼容性,用戶已經有多種更好的選擇,Rime 未能在用戶關注的方面提供獨特的價值; 56 | 所有投入都只不過在重複勞動、解決前人解決過的問題,而非承擔起那些長期被業界忽視、亟需有所投入的任務; 57 | 並且還會無端地加入與已有成熟產品的競爭,而失去與其他產品形成補充的積極意義。 58 | 59 | ## 我策 60 | 61 | 因此在這些問題上採取的策略是,選做其中爲實現最基本的可用性而不得不完成的部分,用最小的成本保證其他主要工作得以繼續展開。 62 | 例如 ibus-rime 只是將引擎植入 IBus 輸入法框架,甚至全盤採用 IBus 提供的基本選字介面。 63 | 64 | 設想中,「小狼毫」和「鼠鬚管」屬於先後將 Rime 移植到 Windows 和 Mac OS X 的兩個里程碑。 65 | 皆主張用較小成本讓輸入法引擎得以在這兩座平臺上運行。 66 | 67 | ## 文具 68 | 69 | 起初是借鑑他山用鳥獸或點心命名版本的習俗,爲兩者分別起了同屬知名文具系列的開發代號。 70 | 狼毫大約是用黃鼠狼的尾巴搓製的(吧),那就 `weasel` 好了;鼠鬚傳說很玄,姑且用 `squirrel` 好了。 71 | 72 | 然而在「小狼毫」實作中,發現 Windows 輸入法還怪麻煩的,最終需要自製一副輸入法前端框架,實現與系統 API 交互、進程間通信以及選字介面等,相當於 Linux 上 [IBus](https://github.com/ibus/ibus/wiki) 所起的作用。麻煩到這個前端框架不宜作爲一項平臺綁定留在 Rime 代碼中,而應該重新組織爲獨立的項目。 73 | 74 | 於是「[小狼毫](https://github.com/rime/weasel)」就不再指稱 Rime 一個支持了新平臺的版本,而固化爲該 Windows 輸入法前端的項目名。 75 | 與其對應的是 librime 庫,純粹是跨平臺的輸入法引擎代碼。 76 | 77 | 「[鼠鬚管](https://github.com/rime/squirrel)」亦然。名出歐陽修詩《[奉送原甫侍讀出守永興](https://rime.im/blog/2013/11/24/screencasts/#rime-middle-chinese)》。 78 | 79 | ## 點名 80 | 81 | 還有一些數據項目和輸入方案的命名: 82 | 83 | * [**東風破**](https://github.com/rime/plum):一份 Rime 輸入方案集,得名於《[韻畧易通](https://zh.wikipedia.org/wiki/%E9%9F%BB%E7%95%A7%E6%98%93%E9%80%9A)》開篇的《[早梅詩](https://zh.wikipedia.org/wiki/%E6%97%A9%E6%A2%85%E8%A9%A9)》,詩中明代官話二十字母排列爲「東風破早梅」 84 | * **八股文**:一份詞彙表和簡陋的語言模型 85 | * [**朙月拼音**](https://rime.im/blog/2013/09/19/luna-pinyin/):與 Rime 同時開發的傳統字形的拼音輸入方案,爲致敬他山「昇陽拼音」,即 Mac / Linux 平臺的知名開源拼音輸入法 [SunPinyin](http://sunpinyin.org) 86 | * **地球拼音**:地球人學的用的都是包括聲調的《[漢語拼音](http://www.zdic.net/appendix/f8.htm)》。打倒聲調失傳的(僞)[全拼](https://zh.wikipedia.org/wiki/%E5%85%A8%E6%8B%BC) 87 | * [**宮保拼音**](https://github.com/rime/home/wiki/ComboPinyin):利用標準 PC 鍵盤的多鍵並擊(chord)輸入法。以拼音輸入法爲基礎,融合了速錄鍵盤的操作方式。「宮保」爲「Combo」的音譯,可能包含着私廚祕製的意味 88 | 89 | ## 答語 90 | 91 | 不起個好名,寫碼興致索然。 92 | -------------------------------------------------------------------------------- /blog/source/_posts/rime-configuration-manager.md: -------------------------------------------------------------------------------- 1 | title: 新譜的 Rime 輸入法配置管理器 2 | date: 2018-04-22 22:28:54 3 | tags: 4 | - plum 5 | --- 6 | 7 | 〔首發於 [V2EX](https://www.v2ex.com/t/445778)〕 8 | 9 | 某最近的一個小作品,分享給 Rime 用家。 10 | 11 | [東風破 /plum/](https://github.com/rime/plum) 是個輕量級的、由 bash 腳本開發的 Rime 輸入法配置管理工具。 12 | 有望通過提供單行安裝腳本,收集、包裝「配方」,解決 Rime 用家通過統一介面、簡便地獲取輸入方案這個難題。 13 | 並爲積累了一定經驗的用家提供了一個管理和分享配置的渠道。 14 | 15 | 16 | 17 | ## 背景 18 | 19 | [Rime 輸入法](https://rime.im) 用 YAML 格式的配置文件完成程序的配置。用來實現一種特定輸入法的配置稱爲「輸入方案」。 20 | 無論鼠鬚管還是小狼毫,至今都沒有一個圖形化配置工具能完成大部份配置作業。Rime 用家分享輸入方案、管理個人配置不便的問題也一直未妥善解決。 21 | 22 | 之前的不少嘗試,結果都不夠滿意。如小狼毫的「輸入法設定」程序、[SCU](https://github.com/neolee/SCU) 將常用配置圖形化,然而能夠控制的配置範圍有限; 23 | [Rime Kit](https://github.com/lotem/rimekit) 構想了一個面向社區的開放式配置分享/分發工具,但因初期開發工程艱鉅、運行環境太笨重等原因而擱淺。 24 | 25 | ## 出品 26 | 27 | 趁這次清明假期,閉門造車,終於寫成了這套腳本,並將原本隨輸入法軟件發佈的輸入方案納入這一體系。 28 | 目前該工具只設按「配方」從 GitHub 獲取代碼的功能,和一個命令行介面的交互菜單。 29 | 30 | 初始安裝: `curl -fsSL https://git.io/rime-install | bash` 31 | 32 | 命令行示例: `bash rime-install :preset combo-pinyin jyutping wubi` 33 | 34 | 交互菜單用例截圖: 35 | https://github.com/rime/home/raw/master/images/rime-install-select.png 36 | 37 | ## 前景 38 | 39 | 照例先畫個大餅。但這次看上去比較現實,計劃中的功能都可以用腳本完成: 40 | 例如「配方」可以用類似 ebuild、PKGBUILD 的 bash 腳本來配置安裝內容和步驟; 41 | 參數化「配方」,比如給某個指定的輸入方案打補靪。 42 | 43 | (按:打補靪,指通過修改配置文件中的部份配置項添加功能或改變輸入法的行爲。) 44 | 45 | 終極效果是用家只須維護一份配方列表,就能按照配方一一抓取輸入方案、補靪、個人配置等,繼而部署整套用戶數據。 46 | 今後若有能人,在此基礎上製做以配方爲操作單位的圖形化配置介面,也將事倍功半… 47 | 48 | (…事半功倍?)事半功倍! 49 | -------------------------------------------------------------------------------- /blog/source/_posts/screencasts.md: -------------------------------------------------------------------------------- 1 | title: Rime Screencasts 2 | date: 2013-11-24 11:25:24 3 | tags: 4 | --- 5 | 6 | 最近錄製了一些[Rime 輸入法](https://rime.im)的打字視頻: 7 | 8 | * [重度輸入法控](#rime-con) 9 | * [中古漢語拼音輸入「鼠鬚管」](#rime-middle-chinese) 10 | * [粵拼輸入 馬德鐘《江山》](#rime-jyutping-gongsaan) 11 | * [注音並擊輸入 周杰倫《煙花易冷》](#rime-chord-typing-yanhuayileng) 12 | * [地球拼音輸入 顧念之《運去殊途》](#rime-terra-pinyin-yunqushutu) 13 | * [宮保拼音並擊輸入《精忠傳奇》](#rime-combo-pinyin-jingzhongchuanqi) 14 | 15 | 菜鳥俺用了這幾樣工具完成以上視頻的製作: 16 | 17 | * QuickTime Player 用於 OS X 上的屏幕錄像、錄音,以及簡單的視頻剪輯 18 | * Open Broadcaster Software 用於 Windows 上的屏幕錄像、錄音 19 | * GoldWave 用於編輯音頻、混音 20 | * VirtualDub 用於編輯視頻、轉碼 21 | 22 | 哈,純粹地用於學習和研究輸入法。音樂的神碼版權問題,看官都莫要深究啦。 23 | 24 | 25 | 26 | # 重度輸入法控 27 | 28 | 演示如何用 Rime 輸入法打字,以及基本的定製操作,包括: 29 | 30 | * 啓用新的輸入方案 31 | * 更改橫/直排及配色 32 | * 使用特殊符號和自定義短語 33 | 34 | 演示中用到的輸入方案有: 35 | 36 | * 倉頡五代 37 | * 朙月拼音 38 | * 地球拼音 39 | * 自定義方案 [東風破](https://github.com/lotem/rime-forge/tree/master/dungfungpuo) 40 | 41 | ## 在線播放 42 | 43 | 44 | ## 原畫質視頻 45 | * [百度網盤](http://pan.baidu.com/s/1otdUW) 46 | * [Google Drive](https://drive.google.com/file/d/0B27t6vT9fgezZnhwY01qN0JTdDA/edit?usp=sharing) 47 | 48 | ## 演職員表 49 | * 錄入:佛振 50 | * 輸入法:【鼠鬚管】0.9 51 | * 鍵盤兄:KBC Poker 2 ♦青軸 52 | * 背景音樂: 53 | * Flower Dance/DJ OKAWARI 54 | * Croatian Rhapsody/Maksim Mrvica 55 | * 克羅地亞第三號狂想曲/ELLOCZ 56 | * 克羅地亞第四號狂想曲/ELLOCZ 57 | 58 | # 中古漢語拼音輸入「鼠鬚管」 59 | 60 | 錄 歐陽修詩《奉送原甫侍讀出守永興》 61 | 62 | 全文: 63 | 64 | 奉送原甫侍讀出守永興 65 | 嘉祐五年 66 | 歐陽修 67 | 68 | 酌君以荊州魚枕之蕉 69 | 贈君以宣城鼠鬚之管 70 | 酒如長虹飲滄海 71 | 筆若駿馬馳平坂 72 | 受君尚少力方豪 73 | 嗟我久衰歡漸鮮 74 | 文章驚世知名早 75 | 意氣論交相得晩 76 | 魚枕蕉 77 | 一舉十分當覆盞 78 | 鼠鬚管 79 | 爲物雖微情不淺 80 | 新詩醉墨時一揮 81 | 別後寄我無辭遠 82 | 83 | 由[Polyhedron古韻](http://i.youku.com/u/UMTcwNzA5NjM2)創造的[中古漢語拼音](http://zh.wikipedia.org/wiki/User:Polyhedron/%E4%B8%AD%E5%8F%A4%E6%BC%A2%E8%AA%9E%E6%8B%BC%E9%9F%B3),適用於[《廣韻》](http://ytenx.org/kyonh/)音系。 84 | 85 | [雪齋](https://github.com/LEOYoon-Tsaw)在此基礎上製作了[廣韻查詢](https://gist.github.com/lotem/7129e5e6da70b53a5828)輸入方案,可以使用多種編碼輸入漢字,查閱其對應的中古音。 86 | 87 | ## 在線播放 88 | 89 | 90 | ## 原畫質視頻 91 | * [百度網盤](http://pan.baidu.com/s/1quVtJ) 92 | * [Google Drive](https://drive.google.com/file/d/0B27t6vT9fgezRDJJMzA1ZTdnRjg/edit?usp=sharing) 93 | 94 | ## 演職員表 95 | * 錄入:佛振 96 | * 輸入法:【鼠鬚管】0.9 97 | * 鍵盤兄:KBC Poker 2 ♦青軸 98 | * 背景音樂:風居住的街道/磯村由紀子 99 | 100 | # 粵拼輸入 馬德鐘《江山》 101 | 102 | 錄《洪武三十二》主題曲《江山》。 103 | 104 | 輸入方案爲[粵拼](http://zh.wikipedia.org/wiki/%E9%A6%99%E6%B8%AF%E8%AA%9E%E8%A8%80%E5%AD%B8%E5%AD%B8%E6%9C%83%E7%B2%B5%E8%AA%9E%E6%8B%BC%E9%9F%B3%E6%96%B9%E6%A1%88)。 105 | 106 | 視頻播放速度:4X 107 | 108 | ## 在線播放 109 | 110 | 111 | ## 原畫質視頻 112 | * [百度網盤](http://pan.baidu.com/s/1h72or) 113 | * [Google Drive](https://drive.google.com/file/d/0B27t6vT9fgezWmpXR3lvdVUyX2M/edit?usp=sharing) 114 | 115 | ## 演職員表 116 | * 作詞:張美賢 117 | * 作曲:鄧智偉、葉肇中 118 | * 演唱:馬德鐘 119 | * 錄入:佛振 120 | * 輸入法:【小狼毫】0.9 121 | * 鍵盤兄:KBC Poker 2 ♦青軸 122 | 123 | # 注音並擊輸入 周杰倫《煙花易冷》 124 | 125 | 輸入方案爲[佛振](https://github.com/lotem)製作的[中州注音法](https://github.com/lotem/rime-zhung),中原官話注音結合[宮保拼音](https://github.com/rime/home/wiki/ComboPinyin)的並擊輸入方式。 126 | 127 | 視頻播放速度:4X 128 | 129 | ## 在線播放 130 | 131 | 132 | ## 原畫質視頻 133 | * [百度網盤](http://pan.baidu.com/s/1rGQgr) 134 | * [Google Drive](https://drive.google.com/file/d/0B27t6vT9fgezY1BCZ1RtY0dZZ2M/edit?usp=sharing) 135 | 136 | ## 演職員表 137 | * 作詞:方文山 138 | * 作曲:周杰倫 139 | * 演唱:周杰倫 140 | * 錄入:佛振 141 | * 輸入法:【小狼毫】0.9 142 | * 鍵盤兄:KBC Poker 2 ♦青軸 143 | 144 | # 地球拼音輸入 顧念之《運去殊途》 145 | 146 | 地球拼音/Terra Pinyin,命名延續昇陽拼音/SunPinyin 和朙月拼音/Luna Pinyin,是按照現實世界中《漢語拼音方案》設計的輸入法。 147 | 148 | 與網絡空間中的大多數「拼音」輸入法不同是:地球拼音支持輸入完整包含聲、韻、調的全拼,亦支持省略聲調的簡拼,以及聲母、首字母簡拼。 149 | 150 | [《運去殊途》](http://fc.5sing.com/7568970.html),是一首[《虎狼》](http://book.zongheng.com/book/40721.html)同人翻唱歌曲。 151 | 152 | 視頻播放速度:4X 153 | 154 | ## 在線播放 155 | 156 | 157 | ## 原畫質視頻 158 | * [百度網盤](http://pan.baidu.com/s/148fD2) 159 | * [Google Drive](https://drive.google.com/file/d/0B27t6vT9fgezTE95dndyWVo3S00/edit?usp=sharing) 160 | 161 | ## 演職員表 162 | * 演唱:依穆炎 163 | * 填詞:顧念之 164 | * 原唱:謝安琪《鍾無豔》 165 | * 作曲:Christopher Chak 166 | * 錄入:佛振 167 | * 輸入法:【小狼毫】0.9 168 | * 鍵盤兄:KBC Poker 2 ♦青軸 169 | 170 | # 宮保拼音並擊輸入《精忠傳奇》 171 | 172 | 錄《精忠岳飛》主題曲《精忠傳奇》。 173 | 174 | [宮保拼音](https://github.com/rime/home/wiki/ComboPinyin) 是一種用電腦鍵盤多鍵並擊輸入拼音的方法。 175 | 176 | 視頻播放速度:2X 177 | 178 | ## 在線播放 179 | 180 | 181 | ## 原畫質視頻 182 | * [百度網盤](http://pan.baidu.com/s/1b2cXt) 183 | * [Google Drive](https://drive.google.com/file/d/0B27t6vT9fgezMnJXVGs3X3hGcTg/edit?usp=sharing) 184 | 185 | ## 演職員表 186 | * 演唱:黃曉明、譚晶 187 | * 作詞:何其玲 188 | * 作曲:阿琨、唐季禮 189 | * 錄入:佛振 190 | * 輸入法:【鼠鬚管】0.9 191 | * 鍵盤兄:KBC Poker 2 ♦青軸 192 | 193 | # 練習屏幕錄像 194 | 195 | 《心湖雨又風》,一首慢歌用來練習錄製打字視頻。 196 | 197 | 輸入方案爲佛振自家釀造的中州注音法(羅馬字轉寫式)。 198 | 199 | 視頻播放速度:4X 200 | 201 | 由於佛振打字速度較慢,跟打歌詞的視頻是按照以下步驟錄製的: 202 | 203 | 1. 通過時間扭曲將歌曲放慢到50%或25%不等 204 | 2. 播放慢速的歌曲音頻,同步跟打歌詞,錄製視頻和打字音頻 205 | 3. 提取打字音頻,通過時間扭曲將速度調整到200%或400% 206 | 4. 混音,使快放的鍵盤音效融入原速的音樂 207 | 5. 編輯視頻,調高幀率使其匹配歌曲速度;導入上一步合成的音頻 208 | 6. 輸出 209 | 210 | ## 原畫質視頻 211 | * [百度網盤](http://pan.baidu.com/s/1otdUD) 212 | * [Google Drive](https://drive.google.com/file/d/0B27t6vT9fgezeU9vdFFnZnZSUmc/edit?usp=sharing) 213 | 214 | # 倉頡轉世賦 215 | 216 | 嘆我平生不得志,只盼倉頡公再世。 217 | 218 | 較早錄製的這段 Rime 輸入法演示視頻,一併收錄於此。 219 | 220 | 全文: 221 | 222 | 倉頡轉世賦 223 | 224 | 倉頡公轉世 巧匠出河陰 225 | 修此中州韻 豈言是凡品 226 | 且大道至簡 亦玄奧高深 227 | 運用之妙法 但存乎一心 228 | 229 | 縱情漁獵字海詞林 230 | 會不會某天穿越古今 231 | 口中言語是華夏正音 232 | 怎教我肯將主流放任 233 | 234 | 苦執一念 終不得瀟灑 235 | 難於講明了心裏真話 236 | 寄情編碼 用千萬次敲打 237 | 學會思想在鍵盤上表達 238 | 239 | ## 在線播放 240 | 241 | 242 | ## 原畫質視頻 243 | * [百度網盤](http://pan.baidu.com/s/1Dwi9D) 244 | * [Google Drive](https://drive.google.com/file/d/0B27t6vT9fgezUTYwTEpaZ3N3Wjg/edit?usp=sharing) 245 | 246 | ## 演職員表 247 | * 腳本創作:佛振 248 | * 錄入:佛振 249 | * 輸入法:【小狼毫】0.9 250 | * 輸入方案:(按出場順序)倉頡五代、粵拼、地球拼音、朙月拼音·語句流、中州注音法、中州羅馬字 251 | * 背景音樂:克羅地亞三號狂想曲 作曲:陳哲ellocz 252 | * 字體:[【明蘭·終】](http://code.google.com/p/ifont/) 字體渲染:MacType 253 | * 鍵盤兄:KBC Poker ♥紅軸 254 | -------------------------------------------------------------------------------- /blog/source/_posts/spelling-algebra-debugger.md: -------------------------------------------------------------------------------- 1 | title: 拼寫運算調試器 2 | date: 2013-08-28 20:01:17 3 | tags: 4 | --- 5 | 6 | # 問題 7 | 8 | 拼音類輸入法,都有一個由固定數目音節碼組成的的音節表。 9 | 如漢語拼音以數百音節表達萬餘漢字。 10 | 11 | Rime 希望用家能自定義音節表,以及音節碼與文字的對應關係。 12 | 這通過編寫 Rime 詞典中的碼表來實現。如粵語、吳語等方言拼音的詞典,音節碼採用特定於該方言的拼寫方式。 13 | 14 | 在使用中,可以通過不同的按鍵序列鍵入這些音節。 15 | 如拼音輸入法以音節中的聲母或首字母略代整個音節,稱「簡拼」;將聲、韻各以一字母代之,稱「雙拼」。 16 | 17 | Rime 希望這些不同的輸入形式是用家可以自定義的。如每一種雙拼方案,將按鍵映射到音節碼的方式皆不同。 18 | 19 | # 方案 20 | 21 | [拼寫運算/Spelling Algebra](https://github.com/rime/home/wiki/SpellingAlgebra) 是 Rime 輸入法的一項獨創技術。 22 | 其思想是用一組規則描述輸入碼到音節碼的對應關係。 23 | 24 | 拼寫運算規則基於正則表達式/regular expression,基本運算有轉寫、變形、派生、消除等。通過組合這幾種操作,完成由音節碼集合到輸入碼集合的投影。 25 | 26 | 雖然有[文檔](https://github.com/rime/home/wiki/SpellingAlgebra) 對算法作了解釋,又有 Rime 預設的輸入方案提供了多個用例,但是因爲算法本身十分複雜和抽象,編制拼寫運算規則及除錯仍有不小難度。 27 | 28 | # 工具 29 | 30 | 早早便發願,做一臺「拼寫運算調試器」。 31 | 32 | 用他來演繹拼寫運算的過程,輸入碼如何推導出來便可一目瞭然。 33 | 又可用來做演示,幫助大家直觀地理解拼寫運算的原理和功用。 34 | 35 | 近日,「拼寫運算調試器」預覽版出爐,預備將其納入「Rime 工具箱」,與輸入法設定工具一同發佈。 36 | 37 | 38 | 39 | [下載預覽版](http://pan.baidu.com/share/link?shareid=3588770550&uk=2550415312) 40 | 41 | * __node-webkit-v0.7.1-win-ia32.zip__ : node-webkit Windows 版本,或由 [node-webkit 主頁](https://github.com/rogerwang/node-webkit#downloads) 下載其他版本 42 | * __rimekit-1.0-preview20130827.nw__ : 用 node-webkit 的 `nw` 程序打開 43 | 44 | ![Rime 工具箱](/images/rimekit-00.png) 45 | 46 | # 用法 47 | 48 | 以下一組屏幕截圖,演示本品常見的使用場景。 49 | 50 | ![從輸入方案載入拼寫運算規則](/images/sadebugger-01.png) 51 | 52 | ![用於格式化編碼行](/images/sadebugger-02.png) 53 | 54 | ![音節表上的投影運算](/images/sadebugger-03.png) 55 | 56 | ![高亮顯示當前運算產生的變更](/images/sadebugger-04.png) 57 | 58 | ![碼表式輸入法通常不做拼寫運算](/images/sadebugger-05.png) 59 | 60 | ![回顯按鍵字符與倉頡字母並列](/images/sadebugger-06.png) 61 | 62 | # 技術 63 | 64 | Rime Kit 源代碼: 65 | https://github.com/lotem/rimekit 66 | 67 | 開源許可證:MIT 68 | 69 | 本品使用的開發技術有: 70 | 71 | * [AngularJS](http://angularjs.org) 72 | * [CoffeeScript](http://coffeescript.org/) 73 | * [Grunt](http://gruntjs.com/) 74 | * HTML & CSS 75 | * [Node.js](http://nodejs.org/) 76 | * [node-webkit](https://github.com/rogerwang/node-webkit) 77 | 78 | 還引用了以下第三方程序庫: 79 | 80 | * [Bootstrap CSS](http://getbootstrap.com/) 81 | * [UI Bootstrap](http://angular-ui.github.io/bootstrap/) 82 | * [jsdiff](https://github.com/kpdecker/jsdiff) 83 | * [yaml.js](https://github.com/jeremyfa/yaml.js) 84 | 85 | 實現拼寫運算的代碼參考了 [librime](https://github.com/lotem/librime) 。 86 | 87 | 由於 node-webkit 應用容器具有跨平臺的特點,本品亦可用於 Mac, Linux 和 Windows 操作系統。 88 | -------------------------------------------------------------------------------- /blog/source/_posts/theme-music.md: -------------------------------------------------------------------------------- 1 | title: Rime 主題曲 2 | date: 2025-03-01 00:00:00 3 | tags: 4 | --- 5 | 6 | Rime 三部曲——中州韻、小狼毫、鼠鬚管。 7 | 8 | 某有幸發起了 [Rime 輸入法][1] 這款開源軟件,十幾年來備受用家關愛; 9 | 衆多編程高手和語文專家積極參與開發維護,方能持續更新、代碼不鏽。 10 | 11 | 甲辰年末,某決計爲 Rime 輸入法題寫一首主題曲, 12 | 紀念這一來之不易的成就,勉勵輸入法開發者再譜新篇。 13 | 14 |
15 |

中州韻輸入法主題曲

16 |

17 |
18 | 19 | 若本站播放不流暢,請移步 [B 站備份][3]。 20 | 21 | 曲調早有構思,無奈某是門外漢,全憑直覺在打譜軟件中點選,勉強拼湊成曲,但願拋磚引玉。 22 | 將曲譜上傳 [開源網站][2],以期行家裏手指點,修改潤色些許,哪敢奢求演繹續寫? 23 | 24 | 25 | 26 | ## Rime 三部曲 27 | 28 | 歌詞選自歐陽脩詩[《奉送原甫侍讀出守永興》][4]和[《Rime 心情集》][5]。 29 | 不會唱;本意是用作輸入法跟打演示。 30 | 31 | ### 其一 中州韻 32 | 33 |
34 |

35 |
36 | 37 | 中州韻 38 | 作詞 作曲:居戎氏 39 | 40 | 揮毫擊鍵 殊途同歸 41 | 文字精妙 機巧生輝 42 | 書法程式 不蹈陳規 43 | 今音古韻 演繹類推 44 | 45 | 寄思中土 心懷主義 46 | 迭代寒暑 打造神器 47 | 代碼不羈 指令犀利 48 | 開彼源兮 斯流永繼 49 | 50 | ### 其二 小狼毫 51 | 52 |
53 |

54 |
55 | 56 | 小狼毫 57 | 蒼頡轉世賦 58 | 作詞 作曲:居戎氏 59 | 60 | 蒼頡公轉世 巧匠出河陰 61 | 中州韻豈言是凡品 62 | 大道至簡亦玄奧高深 63 | 運用妙法存乎一心 64 | 65 | 縱情漁獵字海詞林 66 | 會不會某天穿越古今 67 | 口中言語是華夏正音 68 | 我怎肯將主流放任 69 | 70 | 苦執一念終不得瀟灑 71 | 難於講明了心裏真話 72 | 寄情編碼用千萬次敲打 73 | 學會思想在鍵盤上表達 74 | 75 | ### 其三 鼠鬚管 76 | 77 |
78 |

79 |
80 | 81 | 鼠鬚管 82 | 奉送原甫侍讀出守永興 83 | 作詞:〔宋〕歐陽脩 84 | 作曲:居戎氏 85 | 86 | 酌君以荊州魚枕之蕉 87 | 贈君以宣城䑕須之管 88 | 酒如長虹飲滄海 89 | 筆若駿馬馳平坂 90 | 91 | 愛君尚少力方豪 92 | 嗟我久衰歡漸鮮 93 | 文章驚世知名早 94 | 意氣論交相得晚 95 | 96 | 魚枕蕉 一舉十分當覆盞 97 | 䑕須管 為物雖㣲情不淺 98 | 新詩醉墨時一揮 99 | 別後寄我無辭逺 100 | 101 | [1]: https://rime.im 102 | [2]: https://github.com/lotem/rime-theme-music 103 | [3]: https://www.bilibili.com/audio/am33746732 104 | [4]: https://zh.wikisource.org/zh-hant/文忠集_(歐陽修,_四庫全書本)/卷008#奉送原甫侍讀出守永興 105 | [5]: https://github.com/rime/home/wiki/MoodCollection 106 | -------------------------------------------------------------------------------- /blog/source/_posts/weasel-release-0-11.md: -------------------------------------------------------------------------------- 1 | title: 「小狼毫」輸入法更新,發佈 0.11 版 2 | date: 2018-04-22 22:28:11 3 | tags: 4 | - weasel 5 | - release 6 | --- 7 | 8 | 〔首發於 [V2EX](https://www.v2ex.com/t/445523)〕 9 | 10 | 感謝 [@Prcuvu](https://github.com/Prcuvu) 和 [@nameoverflow](https://github.com/nameoverflow) 兩位開發者的給力大修,以及 [道滿](https://github.com/zhtw2013)、[佛振](https://github.com/lotem), [@osfans](https://github.com/osfans) 等新老通字的配合,[小狼毫](https://rime.im/download/#windows) 輸入法現已支持 Windows 8 ~ Windows 10 的「現代介面」,並添加了語言欄狀態圖標,完成多項兼容性改進,集成了 [Rime 配置管理器](https://github.com/rime/plum),還完善了工程配置、自動構建流程等開源協作的關鍵設施。 11 | 12 | 雖然這軟件仍有諸多不足,可期待的是漸將朽壞的代碼重煥生機,開源社區的努力推動項目繼續演進,我等愛用者不由精神爲之一振。 13 | 14 | 某身爲與「小狼毫」有不解之緣的初創者、[Rime](https://rime.im) 執鍵人兼資深玩家,難掩激動之情,連忙奔走相告。 15 | -------------------------------------------------------------------------------- /blog/source/categories/index.md: -------------------------------------------------------------------------------- 1 | title: 分類 2 | layout: categories 3 | --- 4 | -------------------------------------------------------------------------------- /blog/source/code/index.md: -------------------------------------------------------------------------------- 1 | title: How Do I Rime with the Code 2 | icon: fa fa-code 3 | comments: false 4 | content_class: nofancybox 5 | date: 2015-03-14 17:34:02 6 | --- 7 | 8 | Fork Rime on [GitHub](https://github.com/rime): 9 | 10 | * __La rime__ - the core library - 11 | [![GitHub issues](https://img.shields.io/github/issues/rime/librime.svg)](https://github.com/rime/librime/issues)[![GitHub forks](https://img.shields.io/github/forks/rime/librime.svg)](https://github.com/rime/librime)[![GitHub stars](https://img.shields.io/github/stars/rime/librime.svg)](https://github.com/rime/librime) 12 | 13 | * __/plum/__ - Rime configuration manager and input schema repository - 14 | [![GitHub issues](https://img.shields.io/github/issues/rime/plum.svg)](https://github.com/rime/plum/issues)[![GitHub forks](https://img.shields.io/github/forks/rime/plum.svg)](https://github.com/rime/plum)[![GitHub stars](https://img.shields.io/github/stars/rime/plum.svg)](https://github.com/rime/plum) 15 | 16 | * __ibus-rime__ - Linux client powered by IBus - 17 | [![GitHub issues](https://img.shields.io/github/issues/rime/ibus-rime.svg)](https://github.com/rime/ibus-rime/issues)[![GitHub forks](https://img.shields.io/github/forks/rime/ibus-rime.svg)](https://github.com/rime/ibus-rime)[![GitHub stars](https://img.shields.io/github/stars/rime/ibus-rime.svg)](https://github.com/rime/ibus-rime) 18 | [Build and install](https://github.com/rime/home/wiki/RimeWithIBus) ibus-rime 19 | 20 | * __Weasel__ - Windows client - 21 | [![GitHub issues](https://img.shields.io/github/issues/rime/weasel.svg)](https://github.com/rime/weasel/issues)[![GitHub forks](https://img.shields.io/github/forks/rime/weasel.svg)](https://github.com/rime/weasel)[![GitHub stars](https://img.shields.io/github/stars/rime/weasel.svg)](https://github.com/rime/weasel) 22 | [Build instructions](https://github.com/rime/weasel/blob/master/INSTALL.md) for Weasel 23 | 24 | * __Squirrel__ - Mac OS client - 25 | [![GitHub issues](https://img.shields.io/github/issues/rime/squirrel.svg)](https://github.com/rime/squirrel/issues)[![GitHub forks](https://img.shields.io/github/forks/rime/squirrel.svg)](https://github.com/rime/squirrel)[![GitHub stars](https://img.shields.io/github/stars/rime/squirrel.svg)](https://github.com/rime/squirrel) 26 | [Build instructions](https://github.com/rime/squirrel/blob/master/INSTALL.md) for Squirrel 27 | -------------------------------------------------------------------------------- /blog/source/discuss/index.md: -------------------------------------------------------------------------------- 1 | title: 參加討論 2 | icon: fa fa-comments-o 3 | comments: true 4 | content_class: nofancybox 5 | date: 2015-04-01 21:43:48 6 | --- 7 | 8 | 人家說這輸入法中用。人家說這輸入法不中用。你怎麼看。 9 | 10 | ### 求解 ? 11 | 請移步 [幫助與反饋](/docs) : 12 | 13 | ### 技術話題 ? 14 | 上「Rime 代碼之家」[討論區](https://github.com/rime/home/discussions)(已連通葉面底部的留言板塊) 15 | [![討論](https://img.shields.io/github/discussions/rime/home.svg)](https://github.com/rime/home/discussions) 16 | 17 | 參加問答、分享心得、吟一首詩, 18 | 抑或圍繞 Rime 輸入法作一番發散討論 ; 19 | -------------------------------------------------------------------------------- /blog/source/docs/index.md: -------------------------------------------------------------------------------- 1 | title: 幫助與反饋 2 | comments: false 3 | content_class: nofancybox 4 | date: 2015-03-14 17:33:46 5 | --- 6 | 7 | # 幫助文檔 8 | 9 | * [打字入門](https://github.com/rime/home/wiki/GettingStarted):新手須知的使用方法和技巧 10 | * [定製指南](https://github.com/rime/home/wiki/CustomizationGuide)(初階) 11 | * [方案設計](https://github.com/rime/home/wiki/RimeWithSchemata)(中階) 12 | * [程序開發](/code)(高階) 13 | * [常見問題](https://github.com/rime/home/wiki/FAQ) 14 | 15 | [查閱全部文檔 »](https://github.com/rime/home/wiki) 16 | 17 | # 反饋個小問題 18 | 19 | 如能粗略定位問題所牽涉的代碼,請到相應的 [GitHub 代碼庫](/code) 提交議題; 20 | 若已有解決方案,歡迎復刻代碼、發起拉取請求。 21 | 22 | 無法確切分類的、或有關項目網站及文檔的問題,請 [提交議題](https://github.com/rime/home/issues/new) 到 Rime 代碼之家: 23 | [![議題](https://img.shields.io/github/issues/rime/home.svg)](https://github.com/rime/home/issues) 24 | 25 | 或在討論區,問罪開發者、與 Rime 用家交流打字經驗: 26 | [![討論](https://img.shields.io/github/discussions/rime/home.svg)](https://github.com/rime/home/discussions) 27 | 28 | 43 | -------------------------------------------------------------------------------- /blog/source/donate/index.md: -------------------------------------------------------------------------------- 1 | title: 小額贊助 2 | icon: fa fa-gift 3 | content_class: nofancybox 4 | date: 2015-04-26 18:00:00 5 | --- 6 | 7 | ![功德箱](/images/gongdexiang.jpg "哎呀、使不得") 8 | 9 | 很高興 Rime 輸入法也能幫到您。 10 | 時有用家寄來對本品開發工作的支持和鼓勵。謝謝你們! 11 | 物質獎勵大可不必。如果用家執意佈施,贊助款會用於添置開發工具、維護網站域名,以及答謝部分積極的開源貢獻者。 12 | 13 | ### 捐贈方式 14 | 15 | 用 [手機支付寶](https://mobile.alipay.com/) 掃描二維碼,捐款到支付寶賬號 chen.sst@gmail.com 16 | ![掃描二維碼捐贈](/images/qr-donate.jpg) 17 | 18 | 用微信掃描二維碼支付善款 19 | ![掃描二維碼捐贈](/images/wechatpay.jpg) 20 | 21 | 或付款至開發者的PayPal帳號 https://paypal.me/kiung 22 | 23 | ### 捐贈記錄 24 | 25 | (節選) 26 | 27 | |日期|施主|捐贈金額|寄語| 28 | |--------------------| 29 | |2012-09-19|张施主|10.00|一直使用鼠须管输入法,略表心意| 30 | |2012-09-21|颜施主|50.00|希望你能坚持你的理念| 31 | |2012-09-24|赖施主|5.00|小孩刚出生,手头紧啊,略表心意| 32 | |2012-10-21|向施主|15.00|rime| 33 | |2012-12-26|施施主|10.00|加油!| 34 | |2013-01-31|傅施主|10.00|感谢开发出这么好的输入法,尽我微薄所能,支持!| 35 | |2013-02-07|严施主|500.00|ta zsiah| 36 | |2013-02-09|丁施主|5.00|还是学生,只能出这么多钱以表心意| 37 | |2013-02-21|黄施主|16.00|加油!| 38 | |2013-03-03|杨施主|50.00|rime| 39 | |2013-03-08|陈施主|+1|感謝開發 Rime 輸入法| 40 | |2013-03-14|葛施主|+1|鼠须管的使用者| 41 | |2013-03-16|黄施主|100.00|必须得支持| 42 | |2013-03-21|杨施主|20.00|感谢开发Rime| 43 | |2013-03-21|赵施主|1.00|谢谢| 44 | |2013-03-21|魏施主|20.00|感謝你開發了這款好用的輸入法| 45 | |2013-03-21|陈施主|10.00|支持一下| 46 | |2013-03-21|朱施主|50.00|鼠鬚管,我喜欢这款输入法。| 47 | |2013-03-21|李施主|50.00|谢谢| 48 | |2013-03-23|陈施主|10.00|Rime非常好用,谢谢| 49 | |2013-04-07|吕施主|10.00|象征一下……| 50 | |2013-04-09|罗施主|20.00|感谢,算一元一万字起。暂时我够用了。| 51 | |2013-04-29|张施主|+1|rime| 52 | |2013-05-12|张施主|+1|中州韵输入法引擎,思想用键盘表达也行| 53 | |2013-05-26|周施主|1.00|加油| 54 | |2013-06-10|黄施主|37.00|在Windows下有个问题,没有安装到所有用户,换个用户就…| 55 | |2013-06-22|张施主|20.00|开彼源兮斯流永继| 56 | |2013-07-04|蔡施主|1000.00|感謝輸入法的支持| 57 | |2013-07-05|李施主|5.00|非常感謝您的輸入法,非常好用,略表心意。| 58 | |2013-07-06|管施主|20.00|略表心意| 59 | |2013-07-25|毕施主|10.00|学生表示感谢| 60 | |2013-08-05|張施主|100.00|支持公子| 61 | |2013-08-05|李施主|20.00|略表心意,小狼毫好處不多說,希望詞庫早日能實現同步| 62 | |2013-08-30|成施主|5.00|支持一下| 63 | |2013-09-26|张施主|20.00|开彼源兮斯流永继| 64 | |2013-10-08|陳施主|50.00|感謝佛振兄的付出| 65 | |2013-10-14|宋施主|30.00|在使用鼠须管时,能感觉到对中文严谨的态度。| 66 | |2013-10-16|冯施主|10.00|真是Mac上好用到哭的输入法,感谢作者,学生党只能略表心意。| 67 | |2013-11-16|张施主|50.00|鼠须管不错,希望能增加设置界面| 68 | |2013-11-20|林施主、莫施主|2000.00|曠世鉅作千變萬化,神器也。| 69 | |2014-01-07|高施主|20.00|聊表心意| 70 | |2014-01-28|杨施主|50.00|學生聊表寸心了| 71 | |2014-02-07|蔡施主|10.00|中州韵| 72 | |2014-02-19|黄施主|100.00|聊表心意以支持開發者| 73 | |2014-02-22|赵施主|9.99|感謝您的付出!這是我用過的最好的輸入法了!| 74 | |2014-03-27|Wu 施主|NT$ 100| | 75 | |2014-04-01|胡施主|10.00|感谢你们的分享| 76 | |2014-04-03|王施主|10.00|RimeIME五笔86版用户| 77 | |2014-06-16|张施主|20.00| | 78 | |2014-06-17|王施主|+1| | 79 | |2014-06-18|陈施主|10.00| | 80 | |2014-07-18|李施主|50.00| | 81 | |2014-07-23|丁施主|5.00| | 82 | |2014-07-28|管施主|30.00| | 83 | |2014-08-29|夏施主|5.00| | 84 | |2014-08-31|张施主|100.00|viva la rime| 85 | |2014-09-11|黄施主|50.00| | 86 | |2014-09-19|吕施主|10.00| | 87 | |2014-10-07|郭施主|10.00| | 88 | |2014-12-08|戚施主|100.00| | 89 | |2014-12-17|杜施主|10.00| | 90 | |2015-01-07|杜施主|10.00| | 91 | |2015-01-12|张施主|100.00|願公子早日發佈新版小狼豪~| 92 | |2015-02-01|康施主|10.00| | 93 | |2015-02-04|龚施主|10.00| | 94 | |2015-02-05|吴施主|10.00| | 95 | |2015-02-11|杜施主|10.00| | 96 | |2015-02-12|任施主|100.00| | 97 | |2015-02-28|曹施主|39.47| | 98 | |2015-03-05|曹施主|50.00| | 99 | |2015-03-09|陶施主|10.00| | 100 | |2015-03-10|杜施主|10.00| | 101 | |2015-03-13|郭施主|20.00| | 102 | |2015-03-15|窦施主|10.00| | 103 | |2015-03-20|万施主|20.00| | 104 | |2015-03-25|王施主|100.00| | 105 | |2015-03-25|郑施主|20.00| | 106 | |2015-03-26|程施主|10.00| | 107 | |2015-03-29|王施主|5.00| | 108 | |2015-03-29|张施主|16.00| | 109 | |2015-03-30|朱施主|0.10| | 110 | |2015-04-03|陈施主|10.00| | 111 | |2015-04-04|梁施主|10.00| | 112 | |2015-04-06|管施主|100.00| | 113 | |2015-04-06|刘施主|288.00| | 114 | |2015-04-10|宋施主|20.00| | 115 | |2015-04-11|胡施主|+1| | 116 | |2015-04-14|张施主|1.00| | 117 | |2015-04-16|张施主|1.00| | 118 | |2015-04-16|夏施主|8.00| | 119 | |2015-04-17|张施主|1.00| | 120 | |2015-04-18|赵施主|200.00| | 121 | |2015-04-18|张施主|1.00| | 122 | |2015-04-18|王施主|10.00| | 123 | |2015-04-19|张施主|1.00| | 124 | |2015-04-20|张施主|1.00| | 125 | |2015-04-20|周施主|+1| | 126 | |2015-04-21|吴施主|30.00| | 127 | |2015-04-22|张施主|2.00| | 128 | |2015-04-23|张施主|1.00| | 129 | |2015-04-23|张施主|10.00| | 130 | |2015-04-24|黄施主|100.00| | 131 | 132 | …… 133 | 篇幅所限,後續受贈記錄未能全部列出。再次感謝大家! 134 | -------------------------------------------------------------------------------- /blog/source/download/index.md: -------------------------------------------------------------------------------- 1 | title: 下載及安裝 2 | comments: false 3 | icon: fa fa-download 4 | date: 2024-06-01 00:00:00 5 | s: download 6 | --- 7 | 8 | RIME/中州韻輸入法引擎,是一個跨平臺的輸入法算法框架。 9 | 基於這一框架,Rime 開發者與其他開源社區的參與者在 Windows、macOS、Linux、Android 等平臺上創造了不同的輸入法前端實現。 10 | 11 | # Windows 12 | 13 | ## 小狼毫 Weasel 14 | 15 | * [小狼毫 0.17.0](https://github.com/rime/weasel/releases/latest)〔[下載](https://github.com/rime/weasel/releases/download/0.17.0/weasel-0.17.0.0-installer.exe)〕〔[更新日誌](/release/weasel/)〕〔[歷史版本](https://github.com/rime/weasel/releases)〕 16 | 適用於 Windows 8.1, Windows 10, Windows 11 17 | 18 | * [小狼毫 0.14.3](https://github.com/rime/weasel/releases/tag/0.14.3)〔[下載](https://github.com/rime/weasel/releases/download/0.14.3/weasel-0.14.3.0-installer.exe)〕 19 | 適用於 Windows 7, Windows 8/8.1, Windows 10(不再更新) 20 | 21 | * [小狼毫 0.9.30](https://github.com/rime/weasel/releases/tag/0.9.30)〔[下載](https://github.com/rime/weasel/releases/download/0.9.30/weasel-0.9.30.0-installer.exe)〕 22 | 適用於 Windows XP SP3(不再更新) 23 | 24 | # macOS 25 | 26 | ## 鼠鬚管 Squirrel 27 | 28 | * [鼠鬚管 1.0.3](https://github.com/rime/squirrel/releases/latest)〔[下載](https://github.com/rime/squirrel/releases/download/1.0.3/Squirrel-1.0.3.pkg)〕〔[更新日誌](/release/squirrel/)〕〔[歷史版本](https://github.com/rime/squirrel/releases)〕 29 | 適用於 macOS 13.0+ 30 | 31 | * [鼠鬚管 0.16.2](https://github.com/rime/squirrel/releases/0.16.2)〔[下載](https://github.com/rime/squirrel/releases/download/0.16.2/Squirrel-0.16.2.zip)〕 32 | 適用於 macOS 10.9+ (不再更新) 33 | 34 | 其他安裝方式: 35 | 36 | * Install via [Homebrew](https://brew.sh): `brew install --cask squirrel` 37 | 38 | 相關軟件: 39 | 40 | * *(第三方軟件)* [neolee/SCU](https://github.com/neolee/SCU) 是由 [Neo Lee](https://github.com/neolee) 開發的圖形化配置工具。(可能不匹配鼠鬚管的最新版本) 41 | 42 | 43 | ## 小企鹅 fcitx5-macos 44 | 45 | *(第三方軟件)* [fcitx5-macos](https://github.com/fcitx-contrib/fcitx5-macos) 是 Fcitx 輸入法的 macOS 移植。〔[下載傳送門](https://github.com/fcitx-contrib/fcitx5-macos-installer/blob/master/README.zh-CN.md)〕需要下載中州韻版安裝器。 46 | 47 | 48 | ## XIME XIME Input Method Editor 49 | 50 | *(第三方軟件)* [stackia/XIME](https://github.com/stackia/XIME) 是由 [Stackie Jia](https://github.com/stackia) 創作的基於 Rime 引擎的 macOS 輸入法。 51 | 52 | # Linux 53 | 54 | ## ibus-rime 55 | 56 | 基於 IBus 輸入法框架。 57 | 請 [查看](https://github.com/rime/home/wiki/RimeWithIBus) 各 Linux 發行版安裝說明,或從源碼編譯安裝。 58 | 59 | ## fcitx-rime 60 | 61 | *(第三方軟件)* 基於 Fcitx 輸入法框架的 [fcitx-rime](https://github.com/fcitx/fcitx-rime),由 Fcitx 團隊開發和維護。 62 | 63 | ## fcitx5-rime 64 | 65 | *(第三方軟件)* 基於 Fcitx5 輸入法框架的 [fcitx5-rime](https://github.com/fcitx/fcitx5-rime),由 Fcitx 團隊開發和維護。查看 [安裝方式](https://fcitx-im.org/wiki/Install_Fcitx_5/zh-cn) 66 | 67 | # Android 68 | 69 | ## 同文 Tongwen Rime Input Method Editor 70 | 71 | *(第三方軟件)* [同文安卓輸入法平臺](https://github.com/osfans/trime) 是由 [osfans](https://github.com/osfans) 創作的基於 Rime 引擎的 Android 輸入法。〔[下載傳送門](https://github.com/osfans/trime/releases)〕 72 | 73 | ## 小企鹅 fcitx5-android 74 | 75 | *(第三方軟件)* [fcitx5-android](https://github.com/fcitx5-android/fcitx5-android) 是由 Fcitx 團隊製作的 Android 輸入法。〔[下載傳送門](https://github.com/fcitx5-android/fcitx5-android/releases)〕需要下載 app 本體及 plugin.rime 插件。 76 | 77 | # 在線輸入法 78 | 79 | ## My RIME 80 | 81 | *(第三方軟件)* [My RIME](https://github.com/LibreService/my_rime):自由開源在線中文輸入法。 82 | 83 |
84 | 85 | ## 下一步:選擇輸入方案 86 | 87 | ### 使用方案選單 88 | 89 | 下載、安裝完成後,試試: 90 | 按組合鍵 Ctrl+`F4 鍵喚出輸入方案選單,由此調整 Rime 輸入法最常用的選項。 91 | 92 | 您可通過方案選單切換已經安裝的輸入方案。〔[說明書](https://github.com/rime/home/wiki/UserGuide)〕 93 | 94 | ### 安裝更多輸入方案 95 | 96 | 通過 [/plum/](https://github.com/rime/plum) 配置管理器獲取並安裝輸入方案。詳見〔[配方](/recipes)〕。 97 | 98 |
99 | 100 | ## 再一步:學習如何 DIY 101 | 102 | 這篇《[定製指南](https://github.com/rime/home/wiki/CustomizationGuide)》,相信能解答您的不少疑問。 103 | 104 | 熟悉了基本的定製方法以後,如果需要製作自己的輸入方案,請進階閱讀《[Rime 輸入方案設計書](https://github.com/rime/home/wiki/RimeWithSchemata)》。 105 | 106 |
107 | 108 | ## 敬告 Rime 用家 109 | 110 | 請您知曉: 111 | 112 | ※ 本品是按照 GPL 授權條款發佈的自由軟件,您可嘗試按照本站提供的指南自行編譯安裝。 113 | ※ 輸入法是一種有較高權限的系統軟件,所以一些 Windows 安全防護軟件會在輸入法安裝過程中彈出提示,需要選擇「允許繼續操作」方可正確安裝。 114 | ※ 〔小狼毫〕的開發與發佈均在受保護的環境中完成。如果使用過程中,您系統中某種“安全”軟件稱「發現木馬」,那麼此種情形將考驗您的判斷力。 115 | -------------------------------------------------------------------------------- /blog/source/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/favicon.png -------------------------------------------------------------------------------- /blog/source/i-rime-with-fool/index.md: -------------------------------------------------------------------------------- 1 | title: 〔新韻〕 2 | icon: fa fa-download 3 | date: 2016-04-01 14:36:45 4 | tags: Fool 愚者 5 | --- 6 | 7 | Code name: `iRime`WithFool 8 | 9 | 適用機型 iPhone 5c 以上,尚未支持 iPad;系統版本 iOS 12.3 以上 10 | 11 | [下載 iRime](https://rime.im/download/) 並請充分閱讀 [安裝說明](https://github.com/rime/home/wiki/RimeWithTheCode) 12 | 13 | Note: UNSTABLE!! Use at your own risk. 14 | 15 | ## 關於全平臺的 Rime 家族 16 | 17 | RIME/中州韻輸入法引擎,是一個跨平臺的輸入法算法框架。 18 | 基於這一框架,Rime 開發者與其他開源社區的參與者在 Windows、macOS、Linux、Android、iOS 等平臺上創造了不同的輸入法前端實現。 19 | 20 | ## 敬告 Rime 用家 21 | 22 | 請您知曉: 23 | 24 | ※ 本品是按照 GPL 授權條款發佈的自由軟件,您可嘗試按照本站提供的指南自行編譯安裝。 25 | ※ 輸入法是一種有較高權限的系統軟件,所以系統在輸入法安裝過程中彈出提示,需要選擇「允許訪問」方可繼續安裝。 26 | ※ 手動安裝過程較爲複雜,這將考驗您的技術和判斷力。 27 | -------------------------------------------------------------------------------- /blog/source/images/gongdexiang.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/gongdexiang.jpg -------------------------------------------------------------------------------- /blog/source/images/home-feature-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/home-feature-1.png -------------------------------------------------------------------------------- /blog/source/images/home-feature-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/home-feature-2.png -------------------------------------------------------------------------------- /blog/source/images/home-feature-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/home-feature-3.png -------------------------------------------------------------------------------- /blog/source/images/home-feature-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/home-feature-4.png -------------------------------------------------------------------------------- /blog/source/images/home-feature-4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 18 | 20 | 26 | 29 | 30 | 33 | 35 | 37 | 40 | 42 | 43 | 46 | 48 | 50 | 52 | 53 | 54 | 55 | 56 | 57 | 75 | 76 | 77 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 87 | 89 | 91 | 94 | 96 | 98 | 100 | 103 | 105 | 106 | 107 | 108 | 112 | 119 | 124 | 128 | 135 | 139 | 146 | 151 | 158 | 162 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | -------------------------------------------------------------------------------- /blog/source/images/home-slogan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/home-slogan.png -------------------------------------------------------------------------------- /blog/source/images/home-slogan.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 29 | 36 | 44 | 59 | 63 | 71 | 85 | 95 | 100 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /blog/source/images/home-title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/home-title.png -------------------------------------------------------------------------------- /blog/source/images/home-watermarks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/home-watermarks.png -------------------------------------------------------------------------------- /blog/source/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/logo.png -------------------------------------------------------------------------------- /blog/source/images/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /blog/source/images/mingyue-pinyin-2013-09-19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/mingyue-pinyin-2013-09-19.png -------------------------------------------------------------------------------- /blog/source/images/mingyue-pinyin-sep-2011.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/mingyue-pinyin-sep-2011.jpg -------------------------------------------------------------------------------- /blog/source/images/mingyue-pinyin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/mingyue-pinyin.jpg -------------------------------------------------------------------------------- /blog/source/images/qr-donate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/qr-donate.jpg -------------------------------------------------------------------------------- /blog/source/images/rime-recipes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/rime-recipes.jpg -------------------------------------------------------------------------------- /blog/source/images/rimekit-00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/rimekit-00.png -------------------------------------------------------------------------------- /blog/source/images/sadebugger-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/sadebugger-01.png -------------------------------------------------------------------------------- /blog/source/images/sadebugger-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/sadebugger-02.png -------------------------------------------------------------------------------- /blog/source/images/sadebugger-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/sadebugger-03.png -------------------------------------------------------------------------------- /blog/source/images/sadebugger-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/sadebugger-04.png -------------------------------------------------------------------------------- /blog/source/images/sadebugger-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/sadebugger-05.png -------------------------------------------------------------------------------- /blog/source/images/sadebugger-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/sadebugger-06.png -------------------------------------------------------------------------------- /blog/source/images/wechatpay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/images/wechatpay.jpg -------------------------------------------------------------------------------- /blog/source/media/RIME_主題曲.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/media/RIME_主題曲.mp3 -------------------------------------------------------------------------------- /blog/source/media/中州韻.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/media/中州韻.mp3 -------------------------------------------------------------------------------- /blog/source/media/小狼毫.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/media/小狼毫.mp3 -------------------------------------------------------------------------------- /blog/source/media/鼠鬚管.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/source/media/鼠鬚管.mp3 -------------------------------------------------------------------------------- /blog/source/online/index.md: -------------------------------------------------------------------------------- 1 | title: 體驗 2 | comments: false 3 | --- 4 | 5 | [朙月拼音](https://github.com/rime/rime-luna-pinyin)與[五筆畫](https://github.com/rime/rime-stroke)方案,基於 [fcitx5-rime.js](https://github.com/rimeinn/fcitx5-rime.js) 。 6 | 7 | {% raw %} 8 | 12 |
13 | 14 |
15 | {% endraw %} 16 | -------------------------------------------------------------------------------- /blog/source/recipes/index.md: -------------------------------------------------------------------------------- 1 | title: 配方 2 | comments: false 3 | icon: fa fa-flask 4 | date: 2025-01-27 00:00:00 5 | s: recipes 6 | --- 7 | 8 | [配方](https://github.com/rime/home/wiki/Recipes) 也記作 ℞,是由 [東風破 /plum/](https://github.com/rime/plum) 配置管理工具所支持的 Rime 數據分發形式。 9 | 10 | 配方可以用來安裝輸入方案、修改配置、實現自定義功能。 11 | 12 | ![Rime 輸入方案九宮格](/images/rime-recipes.jpg) 13 | 14 | ### 庫藏配方一覽 15 | 16 | - `℞ prelude` [基礎配置](https://github.com/rime/rime-prelude) 17 | - `℞ essay` [八股文](https://github.com/rime/rime-essay)詞彙表 18 | - 現代標準漢語 19 | - `℞ luna-pinyin` [朙月拼音](https://github.com/rime/rime-luna-pinyin) 20 | - `℞ terra-pinyin` [地球拼音](https://github.com/rime/rime-terra-pinyin) 21 | - `℞ bopomofo` [注音](https://github.com/rime/rime-bopomofo) 22 | - 拼音的變體 23 | - `℞ double-pinyin` [雙拼](https://github.com/rime/rime-double-pinyin) 24 | - `℞ stenotype` [打字速記法](https://github.com/rime/rime-stenotype) 25 | - `℞ combo-pinyin` [宮保拼音](https://github.com/rime/rime-combo-pinyin)〔[專題介紹](https://github.com/rime/home/wiki/ComboPinyin)〕 26 | - 漢語方言 27 | - `℞ jyutping` [粵拼](https://github.com/rime/rime-jyutping) 28 | - `℞ wugniu` [吳語上海話](https://github.com/rime/rime-wugniu) 29 | - `℞ soutzoe` [蘇州話](https://github.com/rime/rime-soutzoe) 30 | - 歷史音韻 31 | - `℞ middle-chinese` [中古漢語拼音](https://github.com/rime/rime-middle-chinese) 32 | - 字形輸入 33 | - `℞ stroke` [五筆畫](https://github.com/rime/rime-stroke) 34 | - `℞ cangjie` [倉頡](https://github.com/rime/rime-cangjie) 35 | - `℞ quick` [速成](https://github.com/rime/rime-quick) 36 | - `℞ wubi` [五筆](https://github.com/rime/rime-wubi) 37 | - 符號輸入 38 | - `℞ emoji` [繪文字](https://github.com/rime/rime-emoji) 39 | - `℞ ipa` [國際音標](https://github.com/rime/rime-ipa) 40 | 41 | ### 客製化 42 | 43 | 用家可以用自己的 GitHub 帳號設立配方。舉例如下: 44 | 45 | - `℞ lotem/rime-octagram-data` [八股文](https://github.com/lotem/rime-octagram-data)語言模型 46 | - `℞ lotem/rime-sancang` [三碼蒼頡](https://github.com/lotem/rime-sancang) 47 | - `℞ lotem/rime-wubi98` [五筆 98 版](https://github.com/lotem/rime-wubi98) 48 | - `℞ lotem/rime-zhengma` [鄭碼](https://github.com/lotem/rime-zhengma) 49 | - `℞ lotem/rime-zhung` [中原官話](https://github.com/lotem/rime-zhung) 50 | -------------------------------------------------------------------------------- /blog/source/release/squirrel/appcast.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 【鼠鬚管】輸入法更新頻道 5 | https://rime.github.io/release/squirrel/appcast.xml 6 | 鼠鬚管 Appcast 更新頻道 7 | zh 8 | 9 | 鼠鬚管 1.0.3 10 | https://rime.github.io/release/squirrel/ 11 | 13.0.0 12 | Thu, 23 Jan 2025 09:39:23 -0500 13 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /blog/source/release/weasel/appcast.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 【小狼毫】輸入法更新頻道 5 | http://rime.github.io/release/weasel/appcast.xml 6 | 小狼毫 Appcast 更新頻道 7 | zh 8 | 9 | 小狼毫 0.17.0 10 | http://rime.github.io/release/weasel/ 11 | Sat, 17 May 2025 22:29:58 +0800 12 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /blog/source/tags/index.md: -------------------------------------------------------------------------------- 1 | title: 標籤 2 | layout: tags 3 | --- 4 | -------------------------------------------------------------------------------- /blog/source/testing/squirrel/appcast.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 【鼠鬚管】輸入法測試頻道 5 | https://rime.github.io/testing/squirrel/appcast.xml 6 | 鼠鬚管測試版 Appcast 更新頻道 7 | zh 8 | 9 | 鼠鬚管 1.0.3 10 | https://rime.github.io/testing/squirrel/ 11 | 13.0.0 12 | Thu, 23 Jan 2025 09:39:23 -0500 13 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /blog/source/testing/weasel/appcast.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 【小狼毫】輸入法測試頻道 5 | http://rime.github.io/testing/weasel/appcast.xml 6 | 小狼毫測試版 Appcast 更新頻道 7 | zh 8 | 9 | 小狼毫 0.16.1 10 | http://rime.github.io/testing/weasel/ 11 | Thu, 06 Jun 2024 20:00:00 +0800 12 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /blog/themes/freewill/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | node_modules 4 | -------------------------------------------------------------------------------- /blog/themes/freewill/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013 Joseph Pan 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 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. -------------------------------------------------------------------------------- /blog/themes/freewill/README.md: -------------------------------------------------------------------------------- 1 | # Hexo-Theme-Freewill 2 | 3 | A [Hexo](http://hexo.io/) [bootstrap](http://getbootstrap.com) theme based on [freewill](https://github.com/wzpan/hexo-theme-freewill). [Freewill](https://github.com/yieme/hexo-theme-freewill) aims at fully taking advantages of Bootstrap and the strengths of freewill with an styling adjusted for personal preference. 4 | 5 | ## Features 6 | 7 | * **Bootstrap** - get the power of Twitter Bootstrap with minimal hassle; 8 | * **Bootswatch** - get the ease of Bootswatch 9 | * **Tag plugins** - Bootstrap tag plugins by [hexo-tag-bootstrap](https://github.com/wzpan/hexo-tag-bootstrap), including: 10 | - textcolor - a paragraph of text with specified color; 11 | - button - a button with target links, text and specified color; 12 | - label - a label with text and specified color; 13 | - badge - a badge with text; 14 | - alert - alert messages with text and specified color; 15 | 16 | ## Samples 17 | 18 | Edit **theme/freewill/_config.yml** 19 | 20 | ### Normal Bootstrap (v3.2.0) 21 | 22 | ``` 23 | bootswatch: 24 | ``` 25 | 26 | ![](source/img/example/bootstrap.png) 27 | 28 | --- 29 | 30 | ### Bootswatch Cerulean (v3.2.0) 31 | 32 | ``` 33 | bootswatch: cerulean 34 | ``` 35 | 36 | ![](source/img/example/cerulean.png) 37 | 38 | --- 39 | 40 | ### Bootswatch Flatly (v3.2.0) 41 | 42 | ``` 43 | bootswatch: flatly 44 | ``` 45 | 46 | ![](source/img/example/flatly.png) 47 | 48 | --- 49 | 50 | ### Bootswatch Journal (v3.2.0) 51 | 52 | ``` 53 | bootswatch: journal 54 | ``` 55 | 56 | ![](source/img/example/journal.png) 57 | 58 | --- 59 | 60 | ### Bootswatch Lumen (v3.2.0) 61 | 62 | ``` 63 | bootswatch: lumen 64 | ``` 65 | 66 | ![](source/img/example/lumen.png) 67 | 68 | --- 69 | 70 | ### Bootswatch Readable (v3.2.0) 71 | 72 | ``` 73 | bootswatch: readable 74 | ``` 75 | 76 | ![](source/img/example/readable.png) 77 | 78 | --- 79 | 80 | ### Bootswatch Simplex (v3.2.0) 81 | 82 | ``` 83 | bootswatch: simplex 84 | ``` 85 | 86 | ![](source/img/example/simplex.png) 87 | 88 | --- 89 | 90 | ### Bootswatch Space Lab (v3.2.0) 91 | 92 | ``` 93 | bootswatch: spacelab 94 | ``` 95 | 96 | ![](source/img/example/spacelab.png) 97 | 98 | --- 99 | 100 | ### Bootswatch United (v3.2.0) 101 | 102 | ``` 103 | bootswatch: united 104 | ``` 105 | 106 | ![](source/img/example/united.png) 107 | 108 | --- 109 | 110 | ### Bootswatch Yeti (v3.2.0) 111 | 112 | ``` 113 | bootswatch: yeti 114 | ``` 115 | 116 | ![](source/img/example/yeti.png) 117 | 118 | --- 119 | 120 | ## Install 121 | 122 | 1) install theme: 123 | 124 | ``` sh 125 | $ git clone https://github.com/yieme/hexo-theme-freewill.git themes/freewill 126 | ``` 127 | 128 | 2) install [hexo-tag-bootstrap](https://github.com/wzpan/hexo-tag-bootstrap): 129 | 130 | ``` sh 131 | $ npm install hexo-tag-bootstrap --save 132 | ``` 133 | 134 | 3) Create pages 135 | 136 | freewill offers you the customized Categories, Tags and About pages. But you need to manually create these page at your 'source' folder. 137 | 138 | For example, to create a `Categories` page, you may create a `index.html` file at `source/categories/` folder with the following contents: 139 | 140 | ``` 141 | title: Categories 142 | layout: categories 143 | --- 144 | ``` 145 | 146 | Tags and About pages are created in a similar way, except that the layouts are `tags` and `page` respectively. 147 | 148 | > Some people may argue that I should embed these pages in the theme. This really makes sense, but currently I don't have time to do so. If you know how, **welcome to send me patches**. 149 | 150 | ## Enable 151 | 152 | Modify `theme` setting in your `_config.yml` to `freewill`. 153 | 154 | ## Update 155 | 156 | ``` sh 157 | $ cd themes/freewill 158 | $ git pull 159 | ``` 160 | 161 | ## Configuration 162 | 163 | ``` 164 | slogan: Yet another bootstrap theme. 165 | 166 | menu: 167 | - title: Archives 168 | url: archives 169 | intro: All the articles. 170 | icon: fa fa-archive 171 | - title: Categories 172 | url: categories 173 | intro: All the categories. 174 | icon: fa fa-folder 175 | - title: Tags 176 | url: tags 177 | intro: All the tags. 178 | icon: fa fa-tags 179 | - title: About 180 | url: about 181 | intro: About me. 182 | icon: fa fa-user 183 | 184 | links: 185 | - title: My Github 186 | url: http://www.github.com/wzpan 187 | intro: My Github account. 188 | icon: fa fa-github 189 | - title: My LinkedIn 190 | url: http://www.linkedin.com/pub/weizhou-pan/5b/8a0/161 191 | intro: My Linkin account. 192 | icon: fa fa-linkedin 193 | 194 | widgets: 195 | - search 196 | - category 197 | - tagcloud 198 | - recent_posts 199 | - links 200 | 201 | rss: atom.xml 202 | favicon: favicon.png 203 | fancybox: true 204 | google_analytics: 205 | ``` 206 | 207 | * **slogan** - slogan display at the index page 208 | * **menu** - Navigation menu 209 | * **links** - reference links at the links widget 210 | * **widgets** - Widgets displaying in sidebar 211 | * **rss** - RSS link 212 | * **fancybox** - Enable [Fancybox](http://fancyapps.com/fancybox/) 213 | * **google_analytics** - Google Analytics ID 214 | 215 | ## Front-Matter 216 | 217 | There are some new front-matter settings in freewill that you can use to decorate your articles. 218 | 219 | * **description** - a short description about the articles that will be display at the top of the post 220 | * **feature** - sets a feature image that will be show at the index page 221 | * **toc** - renders a table of contents 222 | 223 | For example: 224 | 225 | ``` 226 | title: Tag Plugins 227 | date: 2014-03-16 10:17:16 228 | tags: plugins 229 | categories: Docs 230 | description: Introduce tag plugins in freewill. 231 | feature: images/tag-plugins/plugins.jpg 232 | toc: true 233 | --- 234 | ``` 235 | 236 | ## License 237 | 238 | This theme is provided under [MIT License](http://opensource.org/licenses/MIT). 239 | 240 | 243 | -------------------------------------------------------------------------------- /blog/themes/freewill/_config.yml: -------------------------------------------------------------------------------- 1 | bootswatch: flatly 2 | 3 | slogan: 思想用鍵盤表達 4 | 5 | menu: 6 | - title: 下載 7 | url: download 8 | icon: "fa fa-arrow-down" 9 | - title: 配方 10 | url: recipes 11 | icon: "fa fa-flask" 12 | - title: 幫助 13 | url: docs 14 | icon: "fa fa-question-circle" 15 | - title: 源碼 16 | url: code 17 | icon: "fa fa-github" 18 | - title: 捐贈 19 | url: donate 20 | icon: "fa fa-heart" 21 | - title: 討論 22 | url: discuss 23 | icon: "fa fa-comments" 24 | - title: 網誌 25 | url: blog 26 | intro: "Rime::Blog" 27 | icon: "fa fa-pencil-square-o" 28 | - title: 體驗 29 | url: online 30 | icon: "fa fa-cloud" 31 | # - title: 分類 32 | # url: categories 33 | # intro: "所有分類" 34 | # icon: "fa fa-folder" 35 | # - title: 標籤 36 | # url: tags 37 | # intro: "所有標籤" 38 | # icon: "fa fa-tags" 39 | 40 | links: 41 | - title: Rime Wiki 42 | url: https://github.com/rime/home/wiki 43 | icon: "fa fa-github" 44 | - title: "Rime @ Github" 45 | url: https://github.com/rime 46 | intro: Rime 開發者社區 47 | icon: "fa fa-github" 48 | - title: "佛振 @ Github" 49 | url: https://github.com/lotem 50 | intro: Rime 初創開發者佛振 51 | icon: "fa fa-github" 52 | 53 | widgets: 54 | - search 55 | - category 56 | - tagcloud 57 | - recent_posts 58 | - links 59 | 60 | rss: true 61 | fancybox: true 62 | favicon: favicon.png 63 | google_analytics: 64 | -------------------------------------------------------------------------------- /blog/themes/freewill/languages/default.yml: -------------------------------------------------------------------------------- 1 | categories: 分類 2 | search: 檢索 3 | tags: 標籤 4 | tagcloud: 標籤雲 5 | tweets: 推文 6 | prev: 後一篇 7 | next: 前一篇 8 | comment: 留言 9 | archive_a: 網誌 10 | archive_b: "存檔:%s" 11 | page: "第 %d 頁" 12 | recent_posts: 新作 13 | links: 鏈接 14 | description: 描述 15 | read_more: 全文 16 | -------------------------------------------------------------------------------- /blog/themes/freewill/languages/zh-CN.yml: -------------------------------------------------------------------------------- 1 | categories: 分类 2 | search: 搜索 3 | tags: 标签 4 | tagcloud: 标签云 5 | tweets: 推文 6 | prev: 上一页 7 | next: 下一页 8 | comment: 留言 9 | archive_a: 归档 10 | archive_b: "归档:%s" 11 | page: "第 %d 页" 12 | recent_posts: 最新文章 13 | description: 摘要 14 | read_more: 阅读此文 -------------------------------------------------------------------------------- /blog/themes/freewill/languages/zh-TW.yml: -------------------------------------------------------------------------------- 1 | categories: 分類 2 | search: 搜尋 3 | tags: 標籤 4 | tagcloud: 標籤雲 5 | tweets: 推文 6 | prev: 上一頁 7 | next: 下一頁 8 | comment: 留言 9 | archive_a: 彙整 10 | archive_b: "彙整:%s" 11 | page: "第 %d 頁" 12 | recent_posts: 最新文章 13 | description: 描述 14 | read_more: 閱讀本文 -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/after_footer.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | <% if (page.comments) { %> 11 | 26 | <% } %> 27 | <% if (theme.fancybox){ %> 28 | 29 | 30 | 35 | <% } %> 36 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/archive.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% 3 | var title = ''; 4 | if (page.category) title = page.category; 5 | if (page.tag) title = page.tag; 6 | if (page.archive){ 7 | if (page.year) title = page.year + (page.month ? '/' + page.month : ''); 8 | else title = __('archive_a'); 9 | } 10 | var year, month; 11 | var last_year = 1970; 12 | var is_first_year = 1; 13 | %> 14 | 15 | 16 | 22 | 23 |
24 | 25 | <% if (theme.widgets.length) { %> 26 |
27 | <% } else { %> 28 |
29 | <% } %> 30 | 31 | <% if (pagination == 2){ %> 32 | 33 |
34 | <% page.posts.each(function(item){ %> 35 | <%- partial('post/title', {item: item, index: true}) %> 36 | <%- partial('post/entry', {item: item, index: true}) %> 37 | <% }); %> 38 |
39 |
40 |
41 | <%- partial('index_pagination') %> 42 |
43 |
44 | 45 | <% } else { %> 46 | 47 |
48 | <% page.posts.each(function(item){ %> 49 | <% 50 | year = item.date.toDate().getFullYear(); 51 | month = item.date.toDate().getMonth(); 52 | %> 53 | <% if (year != last_year){ %> 54 | <% if (!is_first_year) { %> 55 | 56 | <% } %> 57 | <% is_first_year = 0 %> 58 |

<%= year %>

59 | 76 |
77 | <% } %> 78 | 79 |
80 | 81 | <% if (theme.widgets.length) { %> 82 | <%- partial('sidebar') %> 83 | <% } %> 84 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/article.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%- partial('post/title', {item: item, index: false}) %> 4 | 5 |
6 | 7 | <% if (post) { %> 8 |
9 | <% } else { %> 10 |
11 | <% } %> 12 | 13 | <% if (item.description) { %> 14 |
15 | <%- markdown(item.description) %> 16 |
17 | <% } %> 18 | 19 | 20 |
21 | <%- item.content %> 22 |
23 | 24 | <% if (post) { %> 25 |
26 |
27 | <%- partial('post/pagination', {page: item}) %> 28 |
29 |
30 | <% } %> 31 | 32 | 33 | <%- partial('post/comment', {page: item}) %> 34 | 35 |
36 | 37 | <% if (post) { %> 38 | <%- partial('post/meta', {item: item}) %> 39 | <% } %> 40 | 41 |
42 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/footer.ejs: -------------------------------------------------------------------------------- 1 | 2 |

<% if (config.author){ %> 3 | © <%= new Date().getFullYear() %> by <%= config.author %> 4 | <% } else { %> 5 | © <%= new Date().getFullYear() %> <%= config.title %> 6 | <% } %>  7 | Powered by: 8 | Hexo, 9 | Freewill 10 | & 11 | Bootswatch v3.2 12 | 13 |

14 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/front_matter.ejs: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/head.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <% 5 | var title = []; 6 | if (page.current > 1) title.push(__('page', page.current)); 7 | if (page.title) title.push(page.title); 8 | if (page.category) title.push(page.category); 9 | if (page.tag) title.push(page.tag); 10 | if (page.archive){ 11 | if (page.year) title.push(__('archive_b', page.year + (page.month ? '/' + page.month : ''))); 12 | else title.push(__('archive_a')); 13 | } 14 | title.push(config.title); 15 | %> 16 | <%= title.join(' | ') %> 17 | <% if (config.author){ %><% } %> 18 | <% if (page.description){ %> 19 | 20 | <% } else if (config.description){ %> 21 | 22 | <% } else if (page.excerpt){ %> 23 | 24 | <% } else if (page.content){ %> 25 | 26 | <% } %> 27 | <% if (page.keywords){ %><% } %> 28 | 29 | 30 | <% if (page.title){ %><% } %> 31 | 32 | 33 | <% if(page.cover) { %> 34 | 35 | <% } else { %> 36 | 37 | <% } %> 38 | 39 | <% if (theme.rss){ %> 40 | 41 | <% } %> 42 | <% if (theme.favicon){ %> 43 | 44 | <% } %> 45 | 46 | <% if (theme.bootswatch){ %> 47 | 48 | <% } else { %> 49 | 50 | <% } %> 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | <%- partial('post/google_analytics') %> 64 | 65 | 66 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/index.ejs: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | <% if (theme.widgets.length) { %> 5 |
6 | <% } else { %> 7 |
8 | <% } %> 9 | 10 |
11 | 12 | 13 |
14 | <% page.posts.each(function(item){ %> 15 | <%- partial('post/title', {item: item, index: index}) %> 16 | <%- partial('post/entry', {item: item, index: index}) %> 17 | <% }); %> 18 | 19 |
20 | 21 | 22 |
23 |
24 | <%- partial('index_pagination') %> 25 |
26 |
27 |
28 | 29 |
30 | 31 | <% if (theme.widgets.length) { %> 32 | <%- partial('sidebar') %> 33 | <% } %> 34 | 35 |
36 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/index_pagination.ejs: -------------------------------------------------------------------------------- 1 | 2 | 21 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/navigation.ejs: -------------------------------------------------------------------------------- 1 | 2 | 25 |
26 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/post/category.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% 3 | var cats = []; 4 | item.categories.forEach(function(cat){ 5 | cats.push('
  • ' + cat.name + '' + cat.length + '
  • '); 6 | }); 7 | %> 8 |
  • 9 | <%- cats.join(' ') %> 10 |
  • 11 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/post/comment.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if (page.comments){ %> 3 |
    4 | 19 |
    20 | <% } %> 21 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/post/entry.ejs: -------------------------------------------------------------------------------- 1 | 2 |
    3 |
    4 | <% if (item.feature ) { %> 5 |
    6 | <% } else { %> 7 |
    8 | <% } %> 9 | <% if (item.excerpt && index) { %> 10 | <%- item.excerpt %> 11 | <% } else { %> 12 | <%- item.content %> 13 | <% } %> 14 |
    15 | <% if (item.feature ) { %> 16 |
    17 |
    <%= item.title %>
    18 |
    19 | <% } %> 20 | 21 |
    22 | <%= __('read_more') %> 23 |
    24 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/post/google_analytics.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if (theme.google_analytics){ %> 3 | 15 | <% } %> 16 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/post/meta.ejs: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 4 | 5 | <% if (item.date) { %> 6 |
    7 | 8 | <%= item.date.format(config.date_format) %> 9 |
    10 | 16 | <% } %> 17 | 18 | 19 | <% if (item.categories && item.categories.length ) { %> 20 |
    21 | 22 |
      23 | <%- partial('category') %> 24 |
    25 |
    26 | <% } %> 27 | 28 | 29 | <% if(item.tags && item.tags.length ){ %> 30 |
    31 | 32 |
      33 | <%- partial('tag') %> 34 |
    35 |
    36 | <% } %> 37 | 38 | 39 |
    40 | <% if(item.toc){ %> 41 | 42 |
    43 | <%- toc(item.content, {class: "toc-article", list_number:false}) %> 44 |
    45 | <% } %> 46 |
    47 | 48 |
    49 | 50 |
    51 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/post/pagination.ejs: -------------------------------------------------------------------------------- 1 | 2 | 21 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/post/share.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if (theme.addthis.enable){ %> 3 |
    4 | <% if (theme.addthis.facebook){ %> 5 | 6 | <% } %> 7 | <% if (theme.addthis.twitter){ %> 8 | 9 | <% } %> 10 | <% if (theme.addthis.google){ %> 11 | 12 | <% } %> 13 | <% if (theme.addthis.pinterest){ %> 14 | 15 | <% } %> 16 | 17 |
    18 | 19 | <% } %> 20 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/post/slogan.ejs: -------------------------------------------------------------------------------- 1 |
    2 | 3 | <%= theme.slogan %> 4 |
    5 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/post/tag.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% 3 | var tags = []; 4 | item.tags.forEach(function(tag){ 5 | tags.push('
  • ' + tag.name + '' + tag.length + '
  • '); 6 | }); 7 | %> 8 | <%- tags.join(' ') %> 9 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/post/title.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% 3 | if (!item.icon) { 4 | let subpath = item.path.replace(/\/index\.html$/, ''); 5 | let result = theme.menu.find(function(m) { 6 | return (m.url == subpath); 7 | }); 8 | item.icon = result === undefined ? '' : result.icon; 9 | } 10 | %> 11 |
    12 | <% if (item.link) { %> 13 | <% if (item.title){ %> 14 |

    <%= item.title %>

    15 | <% } else { %> 16 |

    <%= item.link %>

    17 | <% } %> 18 | <% } else { %> 19 | <% if (index) { %> 20 | 21 |

    22 | title="<%= item.description %>"<% } %>><%= item.title %> 23 | 24 | <%= item.date.format(config.date_format) %> 25 | <%= __('comment') %> 26 | 27 |

    28 | <% } else { %> 29 | 30 | 33 | <% } %> 34 | <% } %> 35 |
    36 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_partial/sidebar.ejs: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 8 |
    9 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_widget/category.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if (site.categories.length){ %> 3 |
    4 |

    <%= __('categories') %>

    5 | 10 |
    11 | <% } %> 12 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_widget/links.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if (theme.links.length){ %> 3 |
    4 |

    <%= __('links') %>

    5 | 10 |
    11 | <% } %> 12 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_widget/recent_posts.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if (site.posts.length){ %> 3 |
    4 |

    <%= __('recent_posts') %>

    5 | 12 |
    13 | <% } %> 14 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_widget/search.ejs: -------------------------------------------------------------------------------- 1 | 2 |
    3 |
    4 | 5 | 6 |
    7 |
    8 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/_widget/tagcloud.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% if (site.tags.length){ %> 3 |
    4 |

    <%= __('tagcloud') %>

    5 | 13 |
    14 | <% } %> 15 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/archive.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% 3 | page.title = theme.slogan; 4 | page.icon = 'fa fa-keyboard-o'; 5 | %> 6 | <%- partial('_partial/post/title', {item: page, index: false}) %> 7 | 8 | <%- partial('_partial/index', {index: true}) %> 9 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/categories.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 |
    8 | 9 | <% if (theme.widgets.length) { %> 10 |
    11 | <% } else { %> 12 |
    13 | <% } %> 14 | 15 | <% if (site.categories.length){ %> 16 |
    17 | 22 |
    23 | 24 |
    25 | <% site.categories.sort('name').each(function(item){ %> 26 | 27 |

    <%= item.name %>

    28 | 37 | <% }); %> 38 | 39 |
    40 | 41 | <% } %> 42 | 43 |
    44 | 45 | <% if (theme.widgets.length) { %> 46 | <%- partial('_partial/sidebar') %> 47 | <% } %> 48 | 49 |
    50 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/category.ejs: -------------------------------------------------------------------------------- 1 | 2 | <%- partial('_partial/archive', {pagination: config.category}) %> 3 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% page.comments = false; %> 3 | 27 |
    28 |
    29 |
    30 |
    31 |
    32 |

    33 | <%= site.data.features.beginner.title %>
    34 | <%= site.data.features.beginner.subtitle %> 35 |

    36 | <%- markdown(site.data.features.beginner.description) %> 37 |
    38 |
    39 |
    40 |
    41 |
    42 |

    43 | <%= site.data.features.intermediate.title %>
    44 | <%= site.data.features.intermediate.subtitle %> 45 |

    46 | <%- markdown(site.data.features.intermediate.description) %> 47 |
    48 |
    49 |
    50 |
    51 |
    52 |
    53 |
    54 |

    55 | <%= site.data.features.advanced.title %>
    56 | <%= site.data.features.advanced.subtitle %> 57 |

    58 | <%- markdown(site.data.features.advanced.description) %> 59 |
    60 |
    61 |
    62 |
    63 |
    64 |
    65 |
    66 | <% for (var i in site.data.user_quotes) { %> 67 |
    68 |
    <%- markdown(site.data.user_quotes[i].header) %>
    69 |
    <%- markdown(site.data.user_quotes[i].content) %>
    70 |
    71 | <% } %> 72 |
    73 | 更多說法 74 |    75 | 參加討論 76 |
    77 |
    78 |
    79 |
    80 |
    81 |
    82 |
    83 | 86 |

    今天不想打字?一賞 Rime 主題曲,一閱《Rime 心情集》。

    87 |

    純粹地喜歡?您可以通過 小額贊助,支持開發者爲 Rime 投入更大的努力。

    88 |
    89 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/layout.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%- partial('_partial/head') %> 4 | 5 | <%- partial('_partial/navigation') %> 6 | <% if (is_home()) { %> 7 | <%- partial('_partial/front_matter') %> 8 |
    9 | <%- body %> 10 |
    11 | <% } %> 12 |
    13 | <% if (!is_home()) { %> 14 |
    15 | <%- body %> 16 |
    17 | <% } %> 18 | <%- partial('_partial/footer') %> 19 |
    20 | <%- partial('_partial/after_footer') %> 21 | 22 | 23 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/page.ejs: -------------------------------------------------------------------------------- 1 | 2 | <%- partial('_partial/article', {item: page, post: false}) %> 3 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/post.ejs: -------------------------------------------------------------------------------- 1 | 2 | <% page.comments = true; %> 3 | 4 | <%- partial('_partial/article', {item: page, post: true}) %> 5 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/tag.ejs: -------------------------------------------------------------------------------- 1 | 2 | <%- partial('_partial/archive', {pagination: config.tag}) %> 3 | -------------------------------------------------------------------------------- /blog/themes/freewill/layout/tags.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 |
    8 | 9 | <% if (theme.widgets.length) { %> 10 |
    11 | <% } else { %> 12 |
    13 | <% } %> 14 | 15 | <% if (site.tags.length){ %> 16 |
    17 | 22 |
    23 | 24 |
    25 | <% site.tags.sort('name').each(function(item){ %> 26 | 27 |

    <%= item.name %>

    28 | 37 | <% }); %> 38 | 39 |
    40 | 41 | <% } %> 42 | 43 |
    44 | 45 | <% if (theme.widgets.length) { %> 46 | <%- partial('_partial/sidebar') %> 47 | <% } %> 48 | 49 |
    50 | -------------------------------------------------------------------------------- /blog/themes/freewill/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexo-theme-freewill", 3 | "version": "0.1.1", 4 | "description": "Hexo Freewill Theme" 5 | } 6 | -------------------------------------------------------------------------------- /blog/themes/freewill/source/css/darktheme.css: -------------------------------------------------------------------------------- 1 | @media (prefers-color-scheme: dark) { 2 | body { 3 | background-color: #000; 4 | color: #b4bcc2; 5 | } 6 | .downloads { 7 | background-color: #0f0f0f; 8 | } 9 | .user-quotes { 10 | background-color: #0f0f0f; 11 | } 12 | .home hr { 13 | border-color: #0f0f0f; 14 | } 15 | #sidebar { 16 | border-left: 1px solid #1f1f1f; 17 | } 18 | .widget { 19 | border-bottom: 1px solid #1f1f1f; 20 | } 21 | .has-success .form-control, 22 | .has-success .form-control:focus { 23 | background-color: #000; 24 | } 25 | 26 | table tr { border-top: 1px solid #333333; background-color: black; margin: 0; padding: 0; } 27 | table tr:nth-child(2n) { background-color: #080808; } 28 | table tr th { font-weight: bold; border: 1px solid #333333; margin: 0; padding: 6px 13px; } 29 | table tr td { border: 1px solid #333333; margin: 0; padding: 6px 13px; } 30 | 31 | code { 32 | background: #111; 33 | border: 1px solid #1a1a1a; 34 | color: #ff4f7c; 35 | text-shadow: 0 1px #000; 36 | } 37 | 38 | h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small { 39 | color: #767c80; 40 | } 41 | 42 | .panel { 43 | background-color: #000 !important; 44 | } 45 | .panel-default { 46 | border-color: #0e1013 !important; 47 | } 48 | .mypage > .panel-default > .panel-heading { 49 | border-bottom: 1px solid #0e1013 !important; 50 | } 51 | .mypage > .panel-default > .panel-heading:not(:first-child) { 52 | border-top: 1px solid #0e1013 !important; 53 | } 54 | 55 | textarea.form-control { 56 | color: white; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /blog/themes/freewill/source/css/google-fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Droid Serif'; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: local('Droid Serif'), local('DroidSerif'), url('../fonts/google-fonts/0AKsP294HTD-nvJgucYTaIbN6UDyHWBl620a-IRfuBk.woff') format('woff'); 6 | } 7 | @font-face { 8 | font-family: 'Droid Serif'; 9 | font-style: italic; 10 | font-weight: 400; 11 | src: local('Droid Serif Italic'), local('DroidSerif-Italic'), url('../fonts/google-fonts/cj2hUnSRBhwmSPr9kS5899kZXW4sYc4BjuAIFc1SXII.woff') format('woff'); 12 | } 13 | @font-face { 14 | font-family: 'PT Sans'; 15 | font-style: normal; 16 | font-weight: 400; 17 | src: local('PT Sans'), local('PTSans-Regular'), url('../fonts/google-fonts/LKf8nhXsWg5ybwEGXk8UBQ.woff') format('woff'); 18 | } 19 | @font-face { 20 | font-family: 'PT Sans'; 21 | font-style: normal; 22 | font-weight: 700; 23 | src: local('PT Sans Bold'), local('PTSans-Bold'), url('../fonts/google-fonts/0XxGQsSc1g4rdRdjJKZrNBsxEYwM7FgeyaSgU71cLG0.woff') format('woff'); 24 | } 25 | @font-face { 26 | font-family: 'PT Sans'; 27 | font-style: italic; 28 | font-weight: 400; 29 | src: local('PT Sans Italic'), local('PTSans-Italic'), url('../fonts/google-fonts/PIPMHY90P7jtyjpXuZ2cLD8E0i7KZn-EPnyo3HZu7kw.woff') format('woff'); 30 | } 31 | @font-face { 32 | font-family: 'PT Sans'; 33 | font-style: italic; 34 | font-weight: 700; 35 | src: local('PT Sans Bold Italic'), local('PTSans-BoldItalic'), url('../fonts/google-fonts/lILlYDvubYemzYzN7GbLkHhCUOGz7vYGh680lGh-uXM.woff') format('woff'); 36 | } 37 | @font-face { 38 | font-family: 'PT Sans Narrow'; 39 | font-style: normal; 40 | font-weight: 400; 41 | src: local('PT Sans Narrow'), local('PTSans-Narrow'), url('../fonts/google-fonts/UyYrYy3ltEffJV9QueSi4RdbPw3QSf9R-kE0EsQUn2A.woff') format('woff'); 42 | } 43 | @font-face { 44 | font-family: 'Roboto'; 45 | font-style: normal; 46 | font-weight: 400; 47 | src: local('Roboto Regular'), local('Roboto-Regular'), url('../fonts/google-fonts/2UX7WLTfW3W8TclTUvlFyQ.woff') format('woff'); 48 | } -------------------------------------------------------------------------------- /blog/themes/freewill/source/css/highlight.css: -------------------------------------------------------------------------------- 1 | /* Code, Pre [landscape](http://goo.gl/hnwXeD) */ 2 | 3 | /* highlight */ 4 | 5 | pre, .highlight, .gist { 6 | background: #333; 7 | margin: 0.5em 0; 8 | padding: 1em 2%; 9 | overflow: auto; 10 | color: #ccc; 11 | font-size: 14px; 12 | text-shadow: none; 13 | -webkit-border-radius: 4px; 14 | -moz-border-radius: 4px; 15 | border-radius: 4px; 16 | border-style: solid; 17 | border-color: #ddd; 18 | border-width: 1px 0; 19 | line-height: 22.400000000000002px; 20 | } 21 | 22 | code { 23 | background: #eee; 24 | border: 1px solid #d6d6d6; 25 | padding: 0 5px; 26 | margin: 0 2px; 27 | font-size: 90%; 28 | text-shadow: 0 1px #fff; 29 | word-break: break-all; 30 | word-wrap: break-word; 31 | white-space: normal; 32 | } 33 | 34 | .highlight .gutter pre{ 35 | text-align: left; 36 | padding-right: 20px; 37 | width: 100%; 38 | color: #666; 39 | } 40 | 41 | pre, 42 | code { 43 | /* font-family: Menlo, "Bitstream Vera Sans Mono", "DejaVu Sans Mono", Monaco, Consolas, monospace; */ 44 | } 45 | 46 | pre code { 47 | background: none; 48 | text-shadow: none; 49 | padding: 0; 50 | } 51 | 52 | .highlight pre { 53 | border: none; 54 | margin: 0; 55 | padding: 0; 56 | white-space: pre; 57 | } 58 | 59 | .highlight table { 60 | margin: 0; 61 | width: auto; 62 | } 63 | 64 | .highlight td { 65 | border: none; 66 | padding: 0; 67 | } 68 | 69 | /* gist */ 70 | 71 | .container .gist .gist-file { 72 | border: none; 73 | /* font-family: Menlo, "Bitstream Vera Sans Mono", "DejaVu Sans Mono", Monaco, Consolas, monospace; */ 74 | margin: 0; 75 | } 76 | .container .gist .gist-file .gist-data { 77 | background: none; 78 | border: none; 79 | } 80 | .container .gist .gist-file .gist-data .line-numbers { 81 | background: none; 82 | border: none; 83 | padding-right: 20px; 84 | color: #666; 85 | text-align: left; 86 | } 87 | .container .gist .gist-file .gist-data .line-data { 88 | padding: 0 !important; 89 | } 90 | .container .gist .gist-file .highlight { 91 | margin: 0; 92 | padding: 0; 93 | border: none; 94 | } 95 | .container .gist .gist-file .gist-meta { 96 | background: #333; 97 | color: #999; 98 | font: 0.85em "Helvetica Neue", Helvetica, Arial, sans-serif; 99 | text-shadow: 0 0; 100 | padding: 0; 101 | margin-top: 1em; 102 | margin-left: 20px; 103 | } 104 | .container .gist .gist-file .gist-meta a { 105 | color: #258fb8; 106 | font-weight: normal; 107 | } 108 | .container .gist .gist-file .gist-meta a:hover { 109 | text-decoration: underline; 110 | } 111 | 112 | /* figcaption */ 113 | 114 | .highlight figcaption { 115 | zoom: 1; 116 | font-size: 0.85em; 117 | color: #999; 118 | line-height: 1em; 119 | margin-bottom: 1em; 120 | } 121 | .highlight figcaption:before, 122 | .highlight figcaption:after { 123 | content: ""; 124 | display: table; 125 | } 126 | .highlight figcaption:after { 127 | clear: both; 128 | } 129 | .highlight figcaption a { 130 | float: right; 131 | } 132 | 133 | pre .comment, 134 | pre .title { 135 | color: #999; 136 | } 137 | pre .variable, 138 | pre .attribute, 139 | pre .tag, 140 | pre .regexp, 141 | pre .ruby .constant, 142 | pre .xml .tag .title, 143 | pre .xml .pi, 144 | pre .xml .doctype, 145 | pre .html .doctype, 146 | pre .css .id, 147 | pre .css .class, 148 | pre .css .pseudo { 149 | color: #f2777a; 150 | } 151 | pre .number, 152 | pre .preprocessor, 153 | pre .built_in, 154 | pre .literal, 155 | pre .params, 156 | pre .constant { 157 | color: #f99157; 158 | } 159 | pre .class, 160 | pre .ruby .class .title, 161 | pre .css .rules .attribute { 162 | color: #9c9; 163 | } 164 | pre .string, 165 | pre .value, 166 | pre .inheritance, 167 | pre .header, 168 | pre .ruby .symbol, 169 | pre .xml .cdata { 170 | color: #9c9; 171 | } 172 | pre .css .hexcolor { 173 | color: #6cc; 174 | } 175 | pre .function, 176 | pre .python .decorator, 177 | pre .python .title, 178 | pre .ruby .function .title, 179 | pre .ruby .title .keyword, 180 | pre .perl .sub, 181 | pre .javascript .title, 182 | pre .coffeescript .title { 183 | color: #69c; 184 | } 185 | pre .keyword, 186 | pre .javascript .function { 187 | color: #c9c; 188 | } 189 | -------------------------------------------------------------------------------- /blog/themes/freewill/source/css/style.old.css: -------------------------------------------------------------------------------- 1 | /* ============================================================================= 2 | container 3 | ========================================================================== */ 4 | 5 | .container-narrow { 6 | margin: 0 auto; 7 | max-width:970px; 8 | } 9 | 10 | .container-narrow > footer { 11 | margin-top: 20px; 12 | text-align: center; 13 | } 14 | .container-narrow > footer p { 15 | background-color: rgba(245,245,245,0.75); 16 | padding: 5px; 17 | display: inline-block; 18 | -webkit-border-radius: 6px; 19 | -moz-border-radius: 6px; 20 | border-radius: 6px; 21 | } 22 | 23 | /* ============================================================================= 24 | Body and structure 25 | ========================================================================== */ 26 | 27 | body { 28 | position: relative; 29 | padding-top: 40px; 30 | background-color: #fff; 31 | background-repeat: repeat-x; 32 | background-position: 0 40px; 33 | padding-bottom: 70px; 34 | } 35 | 36 | .content { 37 | padding: 20px; 38 | margin: 20px -20px; /* negative indent the amount of the padding to maintain the grid system */ 39 | -webkit-border-radius: 6px 6px 6px 6px; 40 | -moz-border-radius: 6px 6px 6px 6px; 41 | border-radius: 6px 6px 6px 6px; 42 | -webkit-box-shadow: 0 2px 10px rgba(0,0,0,.75); 43 | -moz-box-shadow: 0 2px 102px rgba(0,0,0,.75); 44 | box-shadow: 0 2px 10px rgba(0,0,0,.75); 45 | } 46 | 47 | #sidebar { 48 | margin-left: 5px; 49 | padding-left: 15px; 50 | border-left: 1px solid #e0e0e0; 51 | font-size: 0.9em; 52 | } 53 | 54 | /* ============================================================================= 55 | page, post 56 | ========================================================================== */ 57 | 58 | .post{ 59 | font-size: 1.2em; 60 | } 61 | 62 | .page{ 63 | font-size: 16px; 64 | } 65 | 66 | .page, .post{ 67 | line-height: 1.5em; 68 | } 69 | 70 | .page .more { 71 | text-pull: right; 72 | } 73 | 74 | .post .date { 75 | margin-bottom:20px; 76 | font-weight:bold; 77 | } 78 | 79 | .mypage { 80 | padding-bottom: 30px; 81 | border-bottom: 1px solid #ccc; 82 | } 83 | 84 | /* ============================================================================= 85 | navbar 86 | ========================================================================== */ 87 | 88 | .navbar-brand { 89 | text-shadow: 0 1px 0 rgba(255,255,255,.1), 0 0 30px rgba(255,255,255,.125); 90 | -webkit-transition: all .2s linear; 91 | -moz-transition: all .2s linear; 92 | transition: all .2s linear; 93 | } 94 | 95 | .navbar-brand:hover { 96 | text-decoration: none; 97 | text-shadow: 0 1px 0 rgba(255,255,255,.1), 0 0 30px rgba(255,255,255,.4); 98 | } 99 | 100 | 101 | /* ============================================================================= 102 | pagination 103 | ========================================================================== */ 104 | 105 | .pagination { 106 | margin: 10px 0; 107 | } 108 | 109 | .pagination a{ 110 | color:#555; 111 | } 112 | 113 | 114 | /* ============================================================================= 115 | List 116 | ========================================================================== */ 117 | 118 | li i { 119 | margin-right: 5px; 120 | margin-left: 5px; 121 | } 122 | 123 | .listing-item { 124 | line-height: 24px; 125 | } 126 | 127 | /* ============================================================================= 128 | widget and tag box 129 | ========================================================================== */ 130 | 131 | .meta-widget { 132 | margin: 10px 0; 133 | } 134 | 135 | .meta-widget a{ 136 | color:#555; 137 | } 138 | 139 | .tag_box { 140 | margin:0; 141 | overflow:hidden; 142 | } 143 | .tag_box li { 144 | line-height:28px; 145 | } 146 | .tag_box li i { 147 | opacity:0.9; 148 | } 149 | .tag_box.inline li { 150 | float:left; 151 | } 152 | .tag_box a { 153 | padding: 2px 6px; 154 | margin: 2px; 155 | background: #e5e5e5; 156 | color:#555; 157 | border-radius: 3px; 158 | text-decoration:none; 159 | border:1px dashed #bbb; 160 | } 161 | .tag_box a span{ 162 | vertical-align:super; 163 | font-size:0.8em; 164 | } 165 | .tag_box a:hover { 166 | background-color:#397bdd; 167 | color:#FFF; 168 | } 169 | .tag_box a.active { 170 | background:#57A957; 171 | border:1px solid #4C964D; 172 | color:#FFF; 173 | } 174 | 175 | .widget { 176 | padding-bottom: 25px; 177 | border-bottom: 1px solid #e0e0e0; 178 | } 179 | 180 | .tagcloud .entry{ 181 | width: 100%; 182 | } 183 | 184 | .archive-title:before { 185 | font-family: FontAwesome; 186 | content: '\f187 '; 187 | } 188 | 189 | .archive-title-tag:before { 190 | font-family: FontAwesome; 191 | content: '\f02c '; 192 | } 193 | 194 | .archive-title-category:before { 195 | font-family: FontAwesome; 196 | content: '\f07b '; 197 | } 198 | 199 | /* ============================================================================= 200 | hyper links 201 | ========================================================================== */ 202 | 203 | a{color:#1863a1} 204 | a:focus{color:#0181eb} 205 | a:hover{color:#0181eb} 206 | a:active{color:#01579f} 207 | 208 | a.label-anchor { 209 | position: relative; 210 | display: block; 211 | text-align: right; 212 | width: 200px; 213 | left: -210px; 214 | font-family: 'PT Sans', sans-serif; 215 | } 216 | a.label-anchor:target span { 217 | background-color: #b94a48; 218 | } 219 | a.label-anchor:hover { 220 | text-decoration: none; 221 | } 222 | a.label-anchor span { 223 | font-weight: bold; 224 | line-height: 0px; 225 | color: #ffffff; 226 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 227 | white-space: nowrap; 228 | background-color: #666; 229 | padding: 1px 4px 2px; 230 | -webkit-border-radius: 3px; 231 | -moz-border-radius: 3px; 232 | border-radius: 3px; 233 | } 234 | 235 | a.inline-ref { 236 | border-bottom: dotted 1px #333; 237 | color: black; 238 | } 239 | a.inline-ref:hover { 240 | text-decoration: none; 241 | border-bottom: solid 1px #000; 242 | } 243 | 244 | /* ============================================================================= 245 | blockquote 246 | ========================================================================== */ 247 | 248 | blockquote { 249 | border-left:5px solid #cccccc; 250 | font-size: 1em; 251 | background-color: #fff; 252 | } 253 | 254 | blockquote p, blockquote ol, blockquote ul, blockquote li, .slogan{ 255 | font-family: 'Open Sans',"Helvetica Neue", Helvetica, "Segoe UI", Ubuntu, "Hiragino Sans GB", '楷体', 'STKaiti'; 256 | } 257 | 258 | /* ============================================================================= 259 | img 260 | ========================================================================== */ 261 | 262 | img { 263 | max-width: 97.5%; 264 | margin: 15px auto; 265 | display: block; 266 | width: auto; 267 | height: auto; 268 | } 269 | 270 | /* ============================================================================= 271 | slogan 272 | ========================================================================== */ 273 | 274 | .slogan .icon-heart{ 275 | opacity: 0.5; 276 | margin-right: 5px; 277 | margin-top: 3px; 278 | } 279 | 280 | .slogan .icon-heart:hover{ 281 | opacity: 1; 282 | } 283 | 284 | .slogan{ 285 | font-size: 1.2em; 286 | color: #888; 287 | display:block; 288 | margin-bottom: 1em; 289 | } 290 | 291 | /* ============================================================================= 292 | scroll to top 293 | ========================================================================== */ 294 | 295 | #gotop{ 296 | display:block; 297 | width:36px; 298 | height:36px; 299 | position:fixed; 300 | bottom:40px; 301 | right:30px; 302 | border-radius:7px; 303 | text-decoration:none; 304 | display:none; 305 | background-color:#999999; 306 | } 307 | #gotop span{ 308 | display:block; 309 | color:#dddddd; 310 | } 311 | #gotop span:hover{ 312 | color:#cccccc; 313 | } 314 | #gotop span{ 315 | font-size:24px; 316 | text-align:center; 317 | } 318 | 319 | /* ============================================================================= 320 | Headers 321 | ========================================================================== */ 322 | 323 | header h1{ 324 | font-weight:normal; 325 | line-height:1.2em; 326 | margin-bottom:0.6667em; 327 | } 328 | 329 | h1{ 330 | font-size:2.6em; 331 | line-height:1.2em; 332 | margin-bottom:0.6667em; 333 | } 334 | 335 | h1,h2,h3,h4,h5,h6{ 336 | text-rendering:optimizelegibility; 337 | font-weight:bold; 338 | /* font-family: 'Open Sans', "Helvetica Neue", "Helvetica","Microsoft YaHei", "WenQuanYi Micro Hei",Arial, sans-serif; 339 | } 340 | 341 | h2{ 342 | margin: 0.83em 0; 343 | color: green; 344 | padding-top: 40px; 345 | margin-top: -25px; 346 | } 347 | 348 | h3 { 349 | color: #9C4C17; 350 | } 351 | 352 | h4 { 353 | color: #B94A48; 354 | } 355 | 356 | .page-header { 357 | -webkit-background-clip: border-box; 358 | -webkit-background-origin: padding-box; 359 | -webkit-background-size: cover; 360 | /* background-color: #f5f5f5; */ 361 | padding: 10px 20px 0px 20px; 362 | margin: -20px -20px 20px; 363 | /* background: #333; 364 | background: -moz-linear-gradient(top, #222, #000 50%); 365 | background: -webkit-gradient(linear, 0 0, 0 50%, from(#222), to(#000)); 366 | color: #e9e9e9; */ 367 | border-bottom-left-radius: 0px; 368 | border-bottom-right-radius: 0px; 369 | border-top-left-radius: 6px; 370 | border-top-right-radius: 6px; 371 | } 372 | 373 | /* ============================================================================= 374 | entry 375 | ========================================================================== */ 376 | 377 | .page .entry{ 378 | padding-top: 10px 0; 379 | } 380 | 381 | .page .entry h2{ 382 | display:block; overflow: hidden; width: 0; height: 0; 383 | margin: -20px 0; 384 | } 385 | 386 | .page .entry h3{ 387 | display:block; overflow: hidden; width: 0; height: 0; 388 | } 389 | 390 | .page .entry .col-md-8{ 391 | margin: 10px 0; 392 | } 393 | 394 | .page h3.title { 395 | position:relative; 396 | padding: 2px 5px 5px 5px; 397 | border-top:3px solid #ccc; 398 | font-size: 1.9em; 399 | font-weight: normal; 400 | /* font-family: 'PT Sans Narrow', '雅黑', '文泉驿微米黑', '黑体', sans-serif; */ 401 | background-color: #e5e5e5; 402 | } 403 | 404 | .page h3.title a { 405 | color: black; 406 | } 407 | 408 | .page h3.title span.date { 409 | position:absolute; 410 | right:5px; 411 | /* font-size:0.7em; */ 412 | color: #777; 413 | } 414 | 415 | 416 | /* ============================================================================= 417 | Archives list 418 | ========================================================================== */ 419 | 420 | .archive-ul > .caret { 421 | vertical-align: 7px; 422 | margin-left: 5px; 423 | opacity: 0.3; 424 | } 425 | 426 | .archive-ul:hover > .caret { 427 | opacity: 1; 428 | } 429 | 430 | /* ============================================================================= 431 | ToC 432 | ========================================================================== */ 433 | 434 | .toc{ 435 | font-size:10pt; 436 | width:auto; 437 | padding:10px; 438 | background: #eee; 439 | border:solid 1px #ccc; 440 | } 441 | 442 | .toc .toc-title{ 443 | font-weight:bold; 444 | font-size:125% 445 | } 446 | 447 | .toc-article{ 448 | list-style:circle; 449 | line-height: 1em; 450 | margin-bottom: 0px; 451 | padding: 10px 20px; 452 | } 453 | 454 | .toc-article li{ 455 | margin-left:5px !important; 456 | padding:0 !important 457 | } 458 | 459 | .toc-article ol{ 460 | list-style:square; 461 | padding: 5px 20px; 462 | } 463 | 464 | .toc-article ol ol{ 465 | list-style:circle; 466 | padding: 5px 20px; 467 | } 468 | 469 | /* ============================================================================= 470 | Tables 471 | ========================================================================== */ 472 | 473 | table { 474 | border-collapse: separate; 475 | border-spacing: 0; 476 | vertical-align: middle; 477 | } 478 | 479 | th { 480 | padding: 12px 10px 12px 10px; 481 | border-bottom: 1px dashed #4088b8; 482 | } 483 | 484 | td { 485 | padding: 7px 10px 7px 10px; 486 | text-align: left; 487 | font-weight: normal; 488 | vertical-align: middle; 489 | } 490 | 491 | /** 492 | * 493 | * For modern browsers 494 | * 1. The space content is one way to avoid an Opera bug when the 495 | * contenteditable attribute is included anywhere else in the document. 496 | * Otherwise it causes space to appear at the top and bottom of elements 497 | * that are clearfixed. 498 | * 2. The use of `table` rather than `block` is only necessary if using 499 | * `:before` to contain the top-margins of child elements. 500 | */ 501 | .cf:before, 502 | .cf:after { 503 | content: ""; /* 1 */ 504 | display: table; /* 2 */ 505 | } 506 | 507 | .cf:after { 508 | clear: both; 509 | } 510 | 511 | /** 512 | * For IE 6/7 only 513 | * Include this rule to trigger hasLayout and contain floats. 514 | */ 515 | .cf { 516 | *zoom: 1; 517 | } 518 | -------------------------------------------------------------------------------- /blog/themes/freewill/source/fancybox/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/fancybox/blank.gif -------------------------------------------------------------------------------- /blog/themes/freewill/source/fancybox/fancybox_loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/fancybox/fancybox_loading.gif -------------------------------------------------------------------------------- /blog/themes/freewill/source/fancybox/fancybox_loading@2x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/fancybox/fancybox_loading@2x.gif -------------------------------------------------------------------------------- /blog/themes/freewill/source/fancybox/fancybox_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/fancybox/fancybox_overlay.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/fancybox/fancybox_sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/fancybox/fancybox_sprite.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/fancybox/fancybox_sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/fancybox/fancybox_sprite@2x.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/fancybox/jquery.fancybox.css: -------------------------------------------------------------------------------- 1 | /*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ 2 | .fancybox-wrap, 3 | .fancybox-skin, 4 | .fancybox-outer, 5 | .fancybox-inner, 6 | .fancybox-image, 7 | .fancybox-wrap iframe, 8 | .fancybox-wrap object, 9 | .fancybox-nav, 10 | .fancybox-nav span, 11 | .fancybox-tmp 12 | { 13 | padding: 0; 14 | margin: 0; 15 | border: 0; 16 | outline: none; 17 | vertical-align: top; 18 | } 19 | 20 | .fancybox-wrap { 21 | position: absolute; 22 | top: 0; 23 | left: 0; 24 | z-index: 8020; 25 | } 26 | 27 | .fancybox-skin { 28 | position: relative; 29 | background: #f9f9f9; 30 | color: #444; 31 | text-shadow: none; 32 | -webkit-border-radius: 4px; 33 | -moz-border-radius: 4px; 34 | border-radius: 4px; 35 | } 36 | 37 | .fancybox-opened { 38 | z-index: 8030; 39 | } 40 | 41 | .fancybox-opened .fancybox-skin { 42 | -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 43 | -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 44 | box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 45 | } 46 | 47 | .fancybox-outer, .fancybox-inner { 48 | position: relative; 49 | } 50 | 51 | .fancybox-inner { 52 | overflow: hidden; 53 | } 54 | 55 | .fancybox-type-iframe .fancybox-inner { 56 | -webkit-overflow-scrolling: touch; 57 | } 58 | 59 | .fancybox-error { 60 | color: #444; 61 | font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; 62 | margin: 0; 63 | padding: 15px; 64 | white-space: nowrap; 65 | } 66 | 67 | .fancybox-image, .fancybox-iframe { 68 | display: block; 69 | width: 100%; 70 | height: 100%; 71 | } 72 | 73 | .fancybox-image { 74 | max-width: 100%; 75 | max-height: 100%; 76 | } 77 | 78 | #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { 79 | background-image: url('fancybox_sprite.png'); 80 | } 81 | 82 | #fancybox-loading { 83 | position: fixed; 84 | top: 50%; 85 | left: 50%; 86 | margin-top: -22px; 87 | margin-left: -22px; 88 | background-position: 0 -108px; 89 | opacity: 0.8; 90 | cursor: pointer; 91 | z-index: 8060; 92 | } 93 | 94 | #fancybox-loading div { 95 | width: 44px; 96 | height: 44px; 97 | background: url('fancybox_loading.gif') center center no-repeat; 98 | } 99 | 100 | .fancybox-close { 101 | position: absolute; 102 | top: -18px; 103 | right: -18px; 104 | width: 36px; 105 | height: 36px; 106 | cursor: pointer; 107 | z-index: 8040; 108 | } 109 | 110 | .fancybox-nav { 111 | position: absolute; 112 | top: 0; 113 | width: 40%; 114 | height: 100%; 115 | cursor: pointer; 116 | text-decoration: none; 117 | background: transparent url('blank.gif'); /* helps IE */ 118 | -webkit-tap-highlight-color: rgba(0,0,0,0); 119 | z-index: 8040; 120 | } 121 | 122 | .fancybox-prev { 123 | left: 0; 124 | } 125 | 126 | .fancybox-next { 127 | right: 0; 128 | } 129 | 130 | .fancybox-nav span { 131 | position: absolute; 132 | top: 50%; 133 | width: 36px; 134 | height: 34px; 135 | margin-top: -18px; 136 | cursor: pointer; 137 | z-index: 8040; 138 | visibility: hidden; 139 | } 140 | 141 | .fancybox-prev span { 142 | left: 10px; 143 | background-position: 0 -36px; 144 | } 145 | 146 | .fancybox-next span { 147 | right: 10px; 148 | background-position: 0 -72px; 149 | } 150 | 151 | .fancybox-nav:hover span { 152 | visibility: visible; 153 | } 154 | 155 | .fancybox-tmp { 156 | position: absolute; 157 | top: -99999px; 158 | left: -99999px; 159 | visibility: hidden; 160 | max-width: 99999px; 161 | max-height: 99999px; 162 | overflow: visible !important; 163 | } 164 | 165 | /* Overlay helper */ 166 | 167 | .fancybox-lock { 168 | overflow: hidden !important; 169 | width: auto; 170 | } 171 | 172 | .fancybox-lock body { 173 | overflow: hidden !important; 174 | } 175 | 176 | .fancybox-lock-test { 177 | overflow-y: hidden !important; 178 | } 179 | 180 | .fancybox-overlay { 181 | position: absolute; 182 | top: 0; 183 | left: 0; 184 | overflow: hidden; 185 | display: none; 186 | z-index: 8010; 187 | background: url('fancybox_overlay.png'); 188 | } 189 | 190 | .fancybox-overlay-fixed { 191 | position: fixed; 192 | bottom: 0; 193 | right: 0; 194 | } 195 | 196 | .fancybox-lock .fancybox-overlay { 197 | overflow: auto; 198 | overflow-y: scroll; 199 | } 200 | 201 | /* Title helper */ 202 | 203 | .fancybox-title { 204 | visibility: hidden; 205 | font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; 206 | position: relative; 207 | text-shadow: none; 208 | z-index: 8050; 209 | } 210 | 211 | .fancybox-opened .fancybox-title { 212 | visibility: visible; 213 | } 214 | 215 | .fancybox-title-float-wrap { 216 | position: absolute; 217 | bottom: 0; 218 | right: 50%; 219 | margin-bottom: -35px; 220 | z-index: 8050; 221 | text-align: center; 222 | } 223 | 224 | .fancybox-title-float-wrap .child { 225 | display: inline-block; 226 | margin-right: -100%; 227 | padding: 2px 20px; 228 | background: transparent; /* Fallback for web browsers that doesn't support RGBa */ 229 | background: rgba(0, 0, 0, 0.8); 230 | -webkit-border-radius: 15px; 231 | -moz-border-radius: 15px; 232 | border-radius: 15px; 233 | text-shadow: 0 1px 2px #222; 234 | color: #FFF; 235 | font-weight: bold; 236 | line-height: 24px; 237 | white-space: nowrap; 238 | } 239 | 240 | .fancybox-title-outside-wrap { 241 | position: relative; 242 | margin-top: 10px; 243 | color: #fff; 244 | } 245 | 246 | .fancybox-title-inside-wrap { 247 | padding-top: 10px; 248 | } 249 | 250 | .fancybox-title-over-wrap { 251 | position: absolute; 252 | bottom: 0; 253 | left: 0; 254 | color: #fff; 255 | padding: 10px; 256 | background: #000; 257 | background: rgba(0, 0, 0, .8); 258 | } 259 | 260 | /*Retina graphics!*/ 261 | @media only screen and (-webkit-min-device-pixel-ratio: 1.5), 262 | only screen and (min--moz-device-pixel-ratio: 1.5), 263 | only screen and (min-device-pixel-ratio: 1.5){ 264 | 265 | #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { 266 | background-image: url('fancybox_sprite@2x.png'); 267 | background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/ 268 | } 269 | 270 | #fancybox-loading div { 271 | background-image: url('fancybox_loading@2x.gif'); 272 | background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/ 273 | } 274 | } -------------------------------------------------------------------------------- /blog/themes/freewill/source/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /blog/themes/freewill/source/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /blog/themes/freewill/source/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /blog/themes/freewill/source/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/example/bootstrap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/example/bootstrap.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/example/cerulean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/example/cerulean.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/example/flatly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/example/flatly.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/example/journal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/example/journal.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/example/lumen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/example/lumen.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/example/readable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/example/readable.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/example/simplex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/example/simplex.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/example/spacelab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/example/spacelab.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/example/united.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/example/united.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/example/yeti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/example/yeti.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/github-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/github-sprite.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/blog/themes/freewill/source/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /blog/themes/freewill/source/js/gallery.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | // Caption 3 | $('.content:not(.nofancybox)').each(function(i){ 4 | $(this).find('img').each(function(){ 5 | if (!$(this).hasClass('nofancybox')){ 6 | var alt = this.alt; 7 | if (alt){ 8 | $(this).wrap(''); 9 | } else { 10 | $(this).wrap(''); 11 | } 12 | } 13 | }); 14 | }); 15 | 16 | // Gallery 17 | var play = function(parent, item, callback){ 18 | var width = parent.width(); 19 | 20 | item.imagesLoaded(function(){ 21 | var _this = this[0], 22 | nWidth = _this.naturalWidth, 23 | nHeight = _this.naturalHeight; 24 | 25 | callback(); 26 | this.animate({opacity: 1}, 500); 27 | parent.animate({height: width * nHeight / nWidth}, 500); 28 | }); 29 | }; 30 | 31 | $('.gallery').each(function(){ 32 | var $this = $(this), 33 | current = 0, 34 | photoset = $this.children('.photoset').children(), 35 | all = photoset.length, 36 | loading = true; 37 | 38 | play($this, photoset.eq(0), function(){ 39 | loading = false; 40 | }); 41 | 42 | $this.on('click', '.prev', function(){ 43 | if (!loading){ 44 | var next = (current - 1) % all; 45 | loading = true; 46 | 47 | play($this, photoset.eq(next), function(){ 48 | photoset.eq(current).animate({opacity: 0}, 500); 49 | loading = false; 50 | current = next; 51 | }); 52 | } 53 | }).on('click', '.next', function(){ 54 | if (!loading){ 55 | var next = (current + 1) % all; 56 | loading = true; 57 | 58 | play($this, photoset.eq(next), function(){ 59 | photoset.eq(current).animate({opacity: 0}, 500); 60 | loading = false; 61 | current = next; 62 | }); 63 | } 64 | }); 65 | }); 66 | })(jQuery); 67 | -------------------------------------------------------------------------------- /blog/themes/freewill/source/js/jquery.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.4.1 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2006, 2014 Klaus Hartl 6 | * Released under the MIT license 7 | */ 8 | (function (factory) { 9 | if (typeof define === 'function' && define.amd) { 10 | // AMD (Register as an anonymous module) 11 | define(['jquery'], factory); 12 | } else if (typeof exports === 'object') { 13 | // Node/CommonJS 14 | module.exports = factory(require('jquery')); 15 | } else { 16 | // Browser globals 17 | factory(jQuery); 18 | } 19 | }(function ($) { 20 | 21 | var pluses = /\+/g; 22 | 23 | function encode(s) { 24 | return config.raw ? s : encodeURIComponent(s); 25 | } 26 | 27 | function decode(s) { 28 | return config.raw ? s : decodeURIComponent(s); 29 | } 30 | 31 | function stringifyCookieValue(value) { 32 | return encode(config.json ? JSON.stringify(value) : String(value)); 33 | } 34 | 35 | function parseCookieValue(s) { 36 | if (s.indexOf('"') === 0) { 37 | // This is a quoted cookie as according to RFC2068, unescape... 38 | s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); 39 | } 40 | 41 | try { 42 | // Replace server-side written pluses with spaces. 43 | // If we can't decode the cookie, ignore it, it's unusable. 44 | // If we can't parse the cookie, ignore it, it's unusable. 45 | s = decodeURIComponent(s.replace(pluses, ' ')); 46 | return config.json ? JSON.parse(s) : s; 47 | } catch(e) {} 48 | } 49 | 50 | function read(s, converter) { 51 | var value = config.raw ? s : parseCookieValue(s); 52 | return $.isFunction(converter) ? converter(value) : value; 53 | } 54 | 55 | var config = $.cookie = function (key, value, options) { 56 | 57 | // Write 58 | 59 | if (arguments.length > 1 && !$.isFunction(value)) { 60 | options = $.extend({}, config.defaults, options); 61 | 62 | if (typeof options.expires === 'number') { 63 | var days = options.expires, t = options.expires = new Date(); 64 | t.setMilliseconds(t.getMilliseconds() + days * 864e+5); 65 | } 66 | 67 | return (document.cookie = [ 68 | encode(key), '=', stringifyCookieValue(value), 69 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 70 | options.path ? '; path=' + options.path : '', 71 | options.domain ? '; domain=' + options.domain : '', 72 | options.secure ? '; secure' : '' 73 | ].join('')); 74 | } 75 | 76 | // Read 77 | 78 | var result = key ? undefined : {}, 79 | // To prevent the for loop in the first place assign an empty array 80 | // in case there are no cookies at all. Also prevents odd result when 81 | // calling $.cookie(). 82 | cookies = document.cookie ? document.cookie.split('; ') : [], 83 | i = 0, 84 | l = cookies.length; 85 | 86 | for (; i < l; i++) { 87 | var parts = cookies[i].split('='), 88 | name = decode(parts.shift()), 89 | cookie = parts.join('='); 90 | 91 | if (key === name) { 92 | // If second argument (value) is a function it's a converter... 93 | result = read(cookie, value); 94 | break; 95 | } 96 | 97 | // Prevent storing a cookie that we couldn't decode. 98 | if (!key && (cookie = read(cookie)) !== undefined) { 99 | result[name] = cookie; 100 | } 101 | } 102 | 103 | return result; 104 | }; 105 | 106 | config.defaults = {}; 107 | 108 | $.removeCookie = function (key, options) { 109 | // Must not alter options, thus extending a fresh object... 110 | $.cookie(key, '', $.extend({}, options, { expires: -1 })); 111 | return !$.cookie(key); 112 | }; 113 | 114 | })); 115 | -------------------------------------------------------------------------------- /blog/themes/freewill/source/js/jquery.imagesloaded.min.js: -------------------------------------------------------------------------------- 1 | (function(d,b){var a="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";d.fn.imagesLoaded=function(t){function l(){var e=d(q),f=d(r);v&&(r.length?v.reject(u,e,f):v.resolve(u));d.isFunction(t)&&t.call(s,u,e,f)}function p(e,f){e.src===a||-1!==d.inArray(e,n)||(n.push(e),f?r.push(e):q.push(e),d.data(e,"imagesLoaded",{isBroken:f,src:e.src}),c&&v.notifyWith(d(e),[f,u,d(q),d(r)]),u.length===n.length&&(setTimeout(l),u.unbind(".imagesLoaded")))}var s=this,v=d.isFunction(d.Deferred)?d.Deferred():0,c=d.isFunction(v.notify),u=s.find("img").add(s.filter("img")),n=[],q=[],r=[];d.isPlainObject(t)&&d.each(t,function(e,f){if("callback"===e){t=f}else{if(v){v[e](f)}}});u.length?u.bind("load.imagesLoaded error.imagesLoaded",function(e){p(e.target,"error"===e.type)}).each(function(f,g){var i=g.src,h=d.data(g,"imagesLoaded");if(h&&h.src===i){p(g,h.isBroken)}else{if(g.complete&&g.naturalWidth!==b){p(g,0===g.naturalWidth||0===g.naturalHeight)}else{if(g.readyState||g.complete){g.src=a,g.src=i}}}}):l();return v?v.promise(s):s}})(jQuery); -------------------------------------------------------------------------------- /blog/themes/freewill/source/js/jquery.t2s.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jquery.t2s.js 3 | * 4 | * A Traditional Chinese to Simplified Chinese conversion library based on jquery-s2t and OpenCC data. 5 | * Copyright Rime Developers 6 | * --- 7 | * jquery-s2t v0.1.0 8 | * 9 | * https://github.com/hustlzp/jquery-s2t 10 | * A jQuery plugin to convert between Simplified Chinese and Traditional Chinese. 11 | * Tested in IE6+, Chrome, Firefox. 12 | * 13 | * Copyright 2013-2014 hustlzp 14 | * Released under the MIT license 15 | */ 16 | 17 | (function($) { 18 | 19 | /** 20 | * 简体字 21 | * @const 22 | */ 23 | var S = '㑔㑇㐹刾㗷㘎㚯㛣㟆㤘㨫㧐擜䀥䌶䌺䌻䌿䌾䍠䎬䙌䜧䞍䦂䥾䦶䦷䯅鲃䲣䲝鳚鳤鹮丢并乱亘亚伫布占并来仑侣局俣系伣侠伡私伥俩俫仓个们幸伦㑈伟㐽侧侦伪㐷杰伧伞备家佣偬传伛债伤倾偻仅佥侨仆伪侥偾雇价仪俊侬亿侩俭傤傧俦侪尽偿优储俪㑩傩傥俨凶兑儿兖内两册胄幂净冻凛凯别删刭则克刹刬刚剥剐剀创铲划剧刘刽刿剑㓥剂㔉劲动务勋胜劳势勚劢勋励劝匀匦汇匮区协恤却即厍厕历厌厉厣参叁丛咤吴呐吕呙员呗吣念问启哑启唡㖞唤丧吃乔单哟呛啬唝吗呜唢哔叹喽啯呕啧尝唛哗唠啸叽哓呒啴恶嘘㖊咝哒哝哕嗳哙喷吨当咛吓哜尝噜啮咽呖咙向亸喾严嘤啭嗫嚣冁呓啰苏嘱囱囵国围园圆图团埯垭采执坚垩垴埚尧报场块茔垲埘涂冢坞埙尘堑垫坠堕坛坟垯墙垦坛垱埙压垒圹垆坛坏垄垅坜坝塆壮壶壸寿够梦伙夹奂奥奁夺奖奋姹妆姗奸娱娄妇娅娲妫㛀媪妈袅妪妩娴娴婳妫媭娆婵娇嫱嫒嬷嫔婴婶娘㛤娈孙学孪宫采寝实宁审写宽宠宝将专寻对导尴届尸屃屉屡层屦属冈峰岘岛峡崃昆岗仑峥岽岚岁㟥嵝崭岖嵚崂峤峣峄峃崄岙嵘岭屿岳岿峦巅岩巯卺帅师帐带帧帏㡎帼帻帜币帮帱干几库厕厢厩厦庼荫厨厮庙厂庑废广廪庐厅弑吊弪张强别弹弥弯录汇彝彟彦雕彨佛后径从徕复彻恒耻悦悮怅闷凄恶恼恽恻爱惬悫怆恺忾栗态愠惨惭恸惯悫怄怂虑悭庆㥪戚欲忧惫怜凭愦慭惮愤悯怃宪忆恳应怿懔蒙怼懑㤽恹惩懒怀悬忏惧慑恋戆戋戗戬战戯戏户抛捝挲挟舍扪挨卷扫抡㧏挜挣挂采拣扬换挥搄损摇捣揾抢掴掼搂挚抠抟折掺捞挦撑挠㧑挢掸拨抚扑揿挞挝捡拥掳择击挡㧟担据挤抬捣拟摈拧搁掷扩撷摆擞撸㧰扰摅撵拢拦撄搀撺携摄攒挛摊搅揽教敚败叙敌数敛毙敩斓斩断于旗既升时晋昼晕晖旸畅暂晔历昙晓向暧旷昽晒书会胧术东锨拐栅拐查杆栀枧条枭棁弃棋枨枣栋㭎栈栖梾桠㭏杨枫桢业极矩干杩荣榅桤构枪杠梿椠椁椮桨椢椝桩乐枞梁楼标枢㭤样榝㭴桪朴树桦椫桡桥机椭横檩柽档桧槚检樯梼台槟柠槛柜橹榈栉椟橼栎橱槠栌枥橥榇蘖栊榉棂樱栏榉权椤栾榄棂钦叹欧欤欢岁历归殁残殒殇㱮殚僵殓殡㱩歼杀壳壳毁殴毵牦毡氇气氢氩氲泛泛污决没冲况溯泄汹浃泾涚凉凄泪渌净凌沦渊涞浅涣减沨涡测浑凑浈涌汤沩准沟温浉涢湿沧灭涤荥汇沪滞渗卤浒浐滚满渔溇沤汉涟渍涨溆渐浆颍泼洁沩㴋潜润浔溃滗涠涩浇涝沄涧渑泽滪泶浍淀㳠浊浓㳡湿泞溁蒙浕济涛㳔滥潍滨溅泺滤澛滢渎㲿泻沈浏濒泸沥潇潆潴泷濑弥潋澜沣滠洒漓滩灏㳕湾滦滟滟灾为乌烃无炼炜烟茕焕烦炀㶽煴荧炝热颎炽烨灯炖烧烫焖营灿毁烛烩㶶熏烬焘烁炉烂争为爷尔床墙牍牵荦牦犊牺状狭狈狰犹狲犸呆狱狮奖独狯猃狝狞㺍获猎犷兽獭献猕猡现雕珐珲玮玚琐瑶莹玛玱琏琎玑瑷珰㻅环玙瑸玺琼珑璎瓒瓯瓮产产苏宁亩毕画异画当畴叠痉酸疴痖疯疡痪瘗疮疟瘆疭瘘瘘疗痨痫瘅愈疠瘪痴痒疖症疬癞癣瘿瘾痈瘫癫发皂皑疱皲皱杯盗盏尽监盘卢荡真眦众困睁睐睾眍䁖瞒瞆睑蒙眬瞩矫朱硁硖砗砚埼硕砀砜确码䂵硙砖硵碜碛矶硗䃅硚硷础碍矿砺砾矾砻秘禄祸祯祎祃御禅礼祢祷秃籼税秆䅉棱禀种称谷䅟稣积颖秾穑秽稳获穞窝洼穷窑窎窭窥窜窍窦灶窃竖竞笔笋笕䇲个笺筝节范筑箧筼筿笃筛筚箦篓蓑箪简篑箫筜签帘篮筹䉤箓篯箨籁笼签笾簖篱箩吁粤粽糁粪粮团粝籴粜纟纠纪纣约红纡纥纨纫纹纳纽纾纯纰纼纱纮纸级纷纭纴纺䌷扎细绂绁绅纻绍绀绋绐绌终弦组䌹绊绗结绝绦绔绞络绚给绒绖统丝绛绝绢绑绡绠绨绣绤绥䌼捆经综缍绿绸绻线绶维绹绾纲网绷缀彩纶绺绮绽绰绫绵绲缁紧绯绿绪绬绱缃缄缂线缉缎缔缗缘缌编缓缅纬缑缈练缏缇致缊萦缙缢缒绉缣缊缞缚缜缟缛县绦缝缡缩纵缧䌸纤缦絷缕缥总绩绷缫缪穗缯织缮缭绕绣缋绳绘系茧缰缳缲缴䍁绎继缤缱䍀颣缬纩续累缠缨才纤缵缆钵䓨坛罂坛罚骂罢罗罴羁芈群羟羡义膻习翚翘翙耧耢圣闻联聪声耸聩聂职聍听聋肃胁脉胫唇修脱胀肾胨脶脑肿脚肠腽腘肤䏝胶腻胆脍脓脸脐膑腊胪脏脔臜卧临台与兴举旧馆舱舣舰舻艰艳刍苎兹荆庄茎荚苋芲华庵烟苌莱万荝莴叶荭荮苇药荤搜莼莳蒀莅苍荪席盖莲苁莼荜卜参蒌蒋葱茑荫荨蒇荞荬芸莸荛蒉荡芜萧蓣蕰荟蓟芗姜蔷荙莶荐萨䓕苧䓓苔荠蓝荩艺药薮䓖蕴苈蔼蔺萚蕲芦苏蕴苹藓蔹茏兰蓠萝蔂处虚虏号亏虬蛱蜕蚬蚀猬虾虱蜗蛳蚂萤䗖蝼螀蛰蝈螨虮蝉蛲虫蛏蚁蚃蝇虿蝎蛴蝾蚝蜡蛎蟏蛊蚕蛮众蔑术同胡卫冲衮袅里补装里制复裈袆裤裢褛亵幞裥裥袯袄裣裆褴袜摆衬袭襕核见觃规觅视觇觋觍觎亲觊觏觐觑觉览觌观觞觯触讠订讣计讯讧讨讦讱训讪讫托记讹讶讼䜣诀讷讻访设许诉诃诊注证诂诋讵诈诒诏评诐诇诎诅词咏诩询诣试诗诧诟诡诠诘话该详诜诙诖诔诛诓夸志认诳诶诞诱诮语诚诫诬误诰诵诲说说谁课谇诽谊訚调谄谆谈诿请诤诹诼谅论谂谀谍谞谝谥诨谔谛谐谏谕咨讳谙谌讽诸谚谖诺谋谒谓誊诌谎谜谧谑谡谤谦谥讲谢谣谣谟谪谬谫讴谨谩哗䜧证谲讥谮识谯谭谱噪谵毁译议谴护诪誉谫读谉变詟䜩雠谗让谰谶赞谠谳岂竖丰艳猪豮猫䝙贝贞贠负财贡贫货贩贪贯责贮贳赀贰贵贬买贷贶费贴贻贸贺贲赂赁贿赅资贾贼赈赊宾赇赒赉赐赏赔赓贤卖贱赋赕质赍账赌䞐赖赗赚赙购赛赜贽赘赟赠赞赝赡赢赆赃赑赎赝赣赃赪赶赵趋趱迹践逾踊跄跸迹蹒踪跷跶趸踌跻跃䟢踯跞踬蹰跹蹑蹿躜躏躯车轧轨军轪轩轫轭软轷轸轱轴轵轺轲轶轼较辂辁辀载轾辄挽辅轻辆辎辉辋辍辊辇辈轮辌辑辏输辐辒辗舆辒毂辖辕辘转辙轿辚轰辔轹轳办辞辫辩农回迳这连周进游运过达违遥逊递远溯适迟迁选遗辽迈还迩边逻逦郏邮郓乡邹邬郧邓郑邻郸邺郐邝酂郦腌酝丑酝蒏糖医酱酦酿衅酾酽释厘钅钆钇钌钊钉钋针钓钐扣钏钒钗钍钕钎䥺钯钫钘钭钥钚钠钝钩钤钣钑钞钮钧钟钙钬钛钪铌铈钶铃钴钹铍钰钸铀钿钾巨钻铊铉铇铋铂钷钳铆铅钺钵钩钲钼钽锫铏铰铒铬铪银铳铜铚铣铨铢铭铫铦衔铑铷铱铟铵铥铕铯铐铞锐销锈锑锉铝镅锒锌钡铤铗锋铻锊锓铘锄锃锔锇铓铺锐铖锆锂铽锍锯钢锞录锖锫锩铔锥锕锟锤锱铮锛锬锭锜钱锦锚锠锡锢错录锰表铼镎锝锨锪钫钔锴锳炼锅镀锷铡钖锻锽锸锲锘锹锾键锶锗针钟镁锿镅镑镰镕锁镉锤镈镃钨蓥镏铠铩锼镐镇镇镒镋镍镓镌镎镞镟链镆镙镠镝铿锵戚镗镘镛铲镜镖镂錾镚铧镤镪䥽锈铙铴镣铹镦镡锏钟镫镢镨䦅锎锏镄镌镰䦃镯镭铁镮铎铛镱锿铸镬镔鉴鉴镲锧镴铄镳镥镧钥镵镶镊镩锣钻銮凿镢镋旋长门闩闪闫闬闭开闶闳闰闲闲间闵闸阂阁合阀闺闽阃阆闾阅阅阊阉阎阏阍阈阌阒板暗闱阔阕阑阇阗阘闿阖阙闯关阚阓阐辟阛闼陉陕升阵阴陈陆阳陧队阶陨际随险陦隐陇隶只隽虽双雏杂鸡离难云电霡雾霁雳霭叇灵叆靓静靔腼靥鼗巩绱秋鞒缰鞑千鞯韦韧韨韩韪韬鞲韫韵响页顶顷项顺顸须顼颂颀颃预顽颁顿颇领颌颉颐颏头颒颊颋颕颔颈颓频颓颗题额颚颜颙颛颜愿颡颠类颟颢顾颤颥显颦颅颞颧风飐飑飒台刮飓飔飏飖飕飗飘飙飚飞饣饥饤饦饨饪饫饬饭飧饮饴饲饱饰饳饺饸饼饷养饵饹饻饽馁饿馂饾余肴馄馃饯馅馆糊糇饧喂馉馇馎饩馏馊馌馍馒馐馑馓馈馔饥饶飨餍馋馕马驭冯驮驰驯驲驳驻驽驹驵驾骀驸驶驼驷骂骈骇骃骆骎骏骋骍骓骔骒骑骐骛骗骙䯄骞骘骝腾驺骚骟骡蓦骜骖骠骢驱骅骕骁骣骄验惊驿骤驴骧骥骦骊骉肮髅脏体髌髋发松胡须鬓斗闹哄阋阄郁鬶魉魇鱼鱽鱾鲀鲁鲂鱿鲄鲅鲆鲌鲉鲏鲇鲐鲍鲋鲊鲒鲘鲞鲕䲟鲖鲔鲛鲑鲜鲓鲪鲝鲧鲠鲩鲤鲨鲬鲻鲯鲭鲞鲷鲴鲱鲵鲲鲳鲸鲮鲰鲶鲺鳀鲫鳊鳈鲗鳂䲠鲽鳇䲡鳅鲾鳄鳆鳃鳁鳒鳑鳋鲥鳏䲢鳎鳐鳍鳁鲢鳌鳓鳘鲦鲣鲹鳗鳛鳔鳉鳙鳕鳖鳟鳝鳜鳞鲟鲼鲎鲙鳣鳡鳢鲿鲚鳠鳄鲈鲡鸟凫鸠凫鸤凤鸣鸢䴓鸩鸨鸦鸰鸵鸳鸲鸮鸱鸪鸯鸭鸸鸹鸻䴕鸿鸽䴔鸺鸼鹀鹃鹆鹁鹈鹅鹄鹉鹌鹏鹐鹎雕鹊鹓鹍䴖鸫鹑鹒鹋鹙鹕鹗鹖鹛鹜䴗鸧莺鹟鹤鹠鹡鹘鹣鹚鹚鹢鹞鸡䴘䴘鹝鹧鹥鸥鸷鹨鸶鹪鹔鹩鹫鹇鹇鹬鹰鹭鸴䴙㶉鹯䴙鹱鹲鸬鹴鹦鹳鹂鸾卤咸鹾碱盐丽麦麸面面曲曲面么么黄黉点党黪霉黡黩黾鼋鼌鼍冬鼹齄齐斋赍齑齿龀龁龂龅龇龃龆龄出龈啮龊龉龋腭龌龙厐庞䶮龚龛龟'; 24 | 25 | /** 26 | * 繁体字 27 | * @const 28 | */ 29 | var T = '㑯㑳㑶㓨㘔㘚㜄㜏㠏㥮㩜㩳㩵䁻䊷䋙䋚䋹䋻䍦䎱䙡䜀䝼䥇䥱䦛䦟䯀䰾䱷䱽䲁䲘䴉丟並亂亙亞佇佈佔併來侖侶侷俁係俔俠俥俬倀倆倈倉個們倖倫倲偉偑側偵偽傌傑傖傘備傢傭傯傳傴債傷傾僂僅僉僑僕僞僥僨僱價儀儁儂億儈儉儎儐儔儕儘償優儲儷儸儺儻儼兇兌兒兗內兩冊冑冪凈凍凜凱別刪剄則剋剎剗剛剝剮剴創剷劃劇劉劊劌劍劏劑劚勁動務勛勝勞勢勩勱勳勵勸勻匭匯匱區協卹卻卽厙厠厤厭厲厴參叄叢吒吳吶呂咼員唄唚唸問啓啞啟啢喎喚喪喫喬單喲嗆嗇嗊嗎嗚嗩嗶嘆嘍嘓嘔嘖嘗嘜嘩嘮嘯嘰嘵嘸嘽噁噓噚噝噠噥噦噯噲噴噸噹嚀嚇嚌嚐嚕嚙嚥嚦嚨嚮嚲嚳嚴嚶囀囁囂囅囈囉囌囑囪圇國圍園圓圖團垵埡埰執堅堊堖堝堯報場塊塋塏塒塗塚塢塤塵塹墊墜墮墰墳墶墻墾壇壋壎壓壘壙壚壜壞壟壠壢壩壪壯壺壼壽夠夢夥夾奐奧奩奪奬奮奼妝姍姦娛婁婦婭媧媯媰媼媽嫋嫗嫵嫺嫻嫿嬀嬃嬈嬋嬌嬙嬡嬤嬪嬰嬸孃孋孌孫學孿宮寀寢實寧審寫寬寵寶將專尋對導尷屆屍屓屜屢層屨屬岡峯峴島峽崍崑崗崙崢崬嵐嵗嵾嶁嶄嶇嶔嶗嶠嶢嶧嶨嶮嶴嶸嶺嶼嶽巋巒巔巖巰巹帥師帳帶幀幃幓幗幘幟幣幫幬幹幾庫廁廂廄廈廎廕廚廝廟廠廡廢廣廩廬廳弒弔弳張強彆彈彌彎彔彙彞彠彥彫彲彿後徑從徠復徹恆恥悅悞悵悶悽惡惱惲惻愛愜愨愴愷愾慄態慍慘慚慟慣慤慪慫慮慳慶慺慼慾憂憊憐憑憒憖憚憤憫憮憲憶懇應懌懍懞懟懣懤懨懲懶懷懸懺懼懾戀戇戔戧戩戰戱戲戶拋挩挱挾捨捫捱捲掃掄掆掗掙掛採揀揚換揮揯損搖搗搵搶摑摜摟摯摳摶摺摻撈撏撐撓撝撟撣撥撫撲撳撻撾撿擁擄擇擊擋擓擔據擠擡擣擬擯擰擱擲擴擷擺擻擼擽擾攄攆攏攔攖攙攛攜攝攢攣攤攪攬敎敓敗敘敵數斂斃斆斕斬斷於旂旣昇時晉晝暈暉暘暢暫曄曆曇曉曏曖曠曨曬書會朧朮東杴枴柵柺査桿梔梘條梟梲棄棊棖棗棟棡棧棲棶椏椲楊楓楨業極榘榦榪榮榲榿構槍槓槤槧槨槮槳槶槼樁樂樅樑樓標樞樢樣樧樫樳樸樹樺樿橈橋機橢橫檁檉檔檜檟檢檣檮檯檳檸檻櫃櫓櫚櫛櫝櫞櫟櫥櫧櫨櫪櫫櫬櫱櫳櫸櫺櫻欄欅權欏欒欖欞欽歎歐歟歡歲歷歸歿殘殞殤殨殫殭殮殯殰殲殺殻殼毀毆毿氂氈氌氣氫氬氳氾汎汙決沒沖況泝洩洶浹涇涗涼淒淚淥淨淩淪淵淶淺渙減渢渦測渾湊湞湧湯溈準溝溫溮溳溼滄滅滌滎滙滬滯滲滷滸滻滾滿漁漊漚漢漣漬漲漵漸漿潁潑潔潙潚潛潤潯潰潷潿澀澆澇澐澗澠澤澦澩澮澱澾濁濃濄濕濘濚濛濜濟濤濧濫濰濱濺濼濾瀂瀅瀆瀇瀉瀋瀏瀕瀘瀝瀟瀠瀦瀧瀨瀰瀲瀾灃灄灑灕灘灝灡灣灤灧灩災為烏烴無煉煒煙煢煥煩煬煱熅熒熗熱熲熾燁燈燉燒燙燜營燦燬燭燴燶燻燼燾爍爐爛爭爲爺爾牀牆牘牽犖犛犢犧狀狹狽猙猶猻獁獃獄獅獎獨獪獫獮獰獱獲獵獷獸獺獻獼玀現琱琺琿瑋瑒瑣瑤瑩瑪瑲璉璡璣璦璫璯環璵璸璽瓊瓏瓔瓚甌甕產産甦甯畝畢畫異畵當疇疊痙痠痾瘂瘋瘍瘓瘞瘡瘧瘮瘲瘺瘻療癆癇癉癒癘癟癡癢癤癥癧癩癬癭癮癰癱癲發皁皚皰皸皺盃盜盞盡監盤盧盪眞眥眾睏睜睞睪瞘瞜瞞瞶瞼矇矓矚矯硃硜硤硨硯碕碩碭碸確碼碽磑磚磠磣磧磯磽磾礄礆礎礙礦礪礫礬礱祕祿禍禎禕禡禦禪禮禰禱禿秈稅稈稏稜稟種稱穀穇穌積穎穠穡穢穩穫穭窩窪窮窯窵窶窺竄竅竇竈竊竪競筆筍筧筴箇箋箏節範築篋篔篠篤篩篳簀簍簑簞簡簣簫簹簽簾籃籌籔籙籛籜籟籠籤籩籪籬籮籲粵糉糝糞糧糰糲糴糶糹糾紀紂約紅紆紇紈紉紋納紐紓純紕紖紗紘紙級紛紜紝紡紬紮細紱紲紳紵紹紺紼紿絀終絃組絅絆絎結絕絛絝絞絡絢給絨絰統絲絳絶絹綁綃綆綈綉綌綏綐綑經綜綞綠綢綣綫綬維綯綰綱網綳綴綵綸綹綺綻綽綾綿緄緇緊緋緑緒緓緔緗緘緙線緝緞締緡緣緦編緩緬緯緱緲練緶緹緻緼縈縉縊縋縐縑縕縗縛縝縞縟縣縧縫縭縮縱縲縳縴縵縶縷縹總績繃繅繆繐繒織繕繚繞繡繢繩繪繫繭繮繯繰繳繸繹繼繽繾繿纇纈纊續纍纏纓纔纖纘纜缽罃罈罌罎罰罵罷羅羆羈羋羣羥羨義羶習翬翹翽耬耮聖聞聯聰聲聳聵聶職聹聽聾肅脅脈脛脣脩脫脹腎腖腡腦腫腳腸膃膕膚膞膠膩膽膾膿臉臍臏臘臚臟臠臢臥臨臺與興舉舊舘艙艤艦艫艱艷芻苧茲荊莊莖莢莧菕華菴菸萇萊萬萴萵葉葒葤葦葯葷蒐蒓蒔蒕蒞蒼蓀蓆蓋蓮蓯蓴蓽蔔蔘蔞蔣蔥蔦蔭蕁蕆蕎蕒蕓蕕蕘蕢蕩蕪蕭蕷薀薈薊薌薑薔薘薟薦薩薳薴薵薹薺藍藎藝藥藪藭藴藶藹藺蘀蘄蘆蘇蘊蘋蘚蘞蘢蘭蘺蘿虆處虛虜號虧虯蛺蛻蜆蝕蝟蝦蝨蝸螄螞螢螮螻螿蟄蟈蟎蟣蟬蟯蟲蟶蟻蠁蠅蠆蠍蠐蠑蠔蠟蠣蠨蠱蠶蠻衆衊術衕衚衛衝袞裊裏補裝裡製複褌褘褲褳褸褻襆襇襉襏襖襝襠襤襪襬襯襲襴覈見覎規覓視覘覡覥覦親覬覯覲覷覺覽覿觀觴觶觸訁訂訃計訊訌討訐訒訓訕訖託記訛訝訟訢訣訥訩訪設許訴訶診註証詁詆詎詐詒詔評詖詗詘詛詞詠詡詢詣試詩詫詬詭詮詰話該詳詵詼詿誄誅誆誇誌認誑誒誕誘誚語誠誡誣誤誥誦誨說説誰課誶誹誼誾調諂諄談諉請諍諏諑諒論諗諛諜諝諞諡諢諤諦諧諫諭諮諱諳諶諷諸諺諼諾謀謁謂謄謅謊謎謐謔謖謗謙謚講謝謠謡謨謫謬謭謳謹謾譁譅證譎譏譖識譙譚譜譟譫譭譯議譴護譸譽譾讀讅變讋讌讎讒讓讕讖讚讜讞豈豎豐豔豬豶貓貙貝貞貟負財貢貧貨販貪貫責貯貰貲貳貴貶買貸貺費貼貽貿賀賁賂賃賄賅資賈賊賑賒賓賕賙賚賜賞賠賡賢賣賤賦賧質賫賬賭賰賴賵賺賻購賽賾贄贅贇贈贊贋贍贏贐贓贔贖贗贛贜赬趕趙趨趲跡踐踰踴蹌蹕蹟蹣蹤蹺躂躉躊躋躍躎躑躒躓躕躚躡躥躦躪軀車軋軌軍軑軒軔軛軟軤軫軲軸軹軺軻軼軾較輅輇輈載輊輒輓輔輕輛輜輝輞輟輥輦輩輪輬輯輳輸輻輼輾輿轀轂轄轅轆轉轍轎轔轟轡轢轤辦辭辮辯農迴逕這連週進遊運過達違遙遜遞遠遡適遲遷選遺遼邁還邇邊邏邐郟郵鄆鄉鄒鄔鄖鄧鄭鄰鄲鄴鄶鄺酇酈醃醖醜醞醟醣醫醬醱釀釁釃釅釋釐釒釓釔釕釗釘釙針釣釤釦釧釩釵釷釹釺釾鈀鈁鈃鈄鈅鈈鈉鈍鈎鈐鈑鈒鈔鈕鈞鈡鈣鈥鈦鈧鈮鈰鈳鈴鈷鈸鈹鈺鈽鈾鈿鉀鉅鉆鉈鉉鉋鉍鉑鉕鉗鉚鉛鉞鉢鉤鉦鉬鉭鉳鉶鉸鉺鉻鉿銀銃銅銍銑銓銖銘銚銛銜銠銣銥銦銨銩銪銫銬銱銳銷銹銻銼鋁鋂鋃鋅鋇鋌鋏鋒鋙鋝鋟鋣鋤鋥鋦鋨鋩鋪鋭鋮鋯鋰鋱鋶鋸鋼錁錄錆錇錈錏錐錒錕錘錙錚錛錟錠錡錢錦錨錩錫錮錯録錳錶錸錼鍀鍁鍃鍅鍆鍇鍈鍊鍋鍍鍔鍘鍚鍛鍠鍤鍥鍩鍬鍰鍵鍶鍺鍼鍾鎂鎄鎇鎊鎌鎔鎖鎘鎚鎛鎡鎢鎣鎦鎧鎩鎪鎬鎭鎮鎰鎲鎳鎵鎸鎿鏃鏇鏈鏌鏍鏐鏑鏗鏘鏚鏜鏝鏞鏟鏡鏢鏤鏨鏰鏵鏷鏹鏺鏽鐃鐋鐐鐒鐓鐔鐗鐘鐙鐝鐠鐥鐦鐧鐨鐫鐮鐯鐲鐳鐵鐶鐸鐺鐿鑀鑄鑊鑌鑑鑒鑔鑕鑞鑠鑣鑥鑭鑰鑱鑲鑷鑹鑼鑽鑾鑿钁钂镟長門閂閃閆閈閉開閌閎閏閑閒間閔閘閡閣閤閥閨閩閫閬閭閱閲閶閹閻閼閽閾閿闃闆闇闈闊闋闌闍闐闒闓闔闕闖關闞闠闡闢闤闥陘陝陞陣陰陳陸陽隉隊階隕際隨險隯隱隴隸隻雋雖雙雛雜雞離難雲電霢霧霽靂靄靆靈靉靚靜靝靦靨鞀鞏鞝鞦鞽韁韃韆韉韋韌韍韓韙韜韝韞韻響頁頂頃項順頇須頊頌頎頏預頑頒頓頗領頜頡頤頦頭頮頰頲頴頷頸頹頻頽顆題額顎顏顒顓顔願顙顛類顢顥顧顫顬顯顰顱顳顴風颭颮颯颱颳颶颸颺颻颼飀飄飆飈飛飠飢飣飥飩飪飫飭飯飱飲飴飼飽飾飿餃餄餅餉養餌餎餏餑餒餓餕餖餘餚餛餜餞餡館餬餱餳餵餶餷餺餼餾餿饁饃饅饈饉饊饋饌饑饒饗饜饞饢馬馭馮馱馳馴馹駁駐駑駒駔駕駘駙駛駝駟駡駢駭駰駱駸駿騁騂騅騌騍騎騏騖騙騤騧騫騭騮騰騶騷騸騾驀驁驂驃驄驅驊驌驍驏驕驗驚驛驟驢驤驥驦驪驫骯髏髒體髕髖髮鬆鬍鬚鬢鬥鬧鬨鬩鬮鬱鬹魎魘魚魛魢魨魯魴魷魺鮁鮃鮊鮋鮍鮎鮐鮑鮒鮓鮚鮜鮝鮞鮣鮦鮪鮫鮭鮮鮳鮶鮺鯀鯁鯇鯉鯊鯒鯔鯕鯖鯗鯛鯝鯡鯢鯤鯧鯨鯪鯫鯰鯴鯷鯽鯿鰁鰂鰃鰆鰈鰉鰌鰍鰏鰐鰒鰓鰛鰜鰟鰠鰣鰥鰧鰨鰩鰭鰮鰱鰲鰳鰵鰷鰹鰺鰻鰼鰾鱂鱅鱈鱉鱒鱔鱖鱗鱘鱝鱟鱠鱣鱤鱧鱨鱭鱯鱷鱸鱺鳥鳧鳩鳬鳲鳳鳴鳶鳾鴆鴇鴉鴒鴕鴛鴝鴞鴟鴣鴦鴨鴯鴰鴴鴷鴻鴿鵁鵂鵃鵐鵑鵒鵓鵜鵝鵠鵡鵪鵬鵮鵯鵰鵲鵷鵾鶄鶇鶉鶊鶓鶖鶘鶚鶡鶥鶩鶪鶬鶯鶲鶴鶹鶺鶻鶼鶿鷀鷁鷂鷄鷈鷉鷊鷓鷖鷗鷙鷚鷥鷦鷫鷯鷲鷳鷴鷸鷹鷺鷽鷿鸂鸇鸊鸌鸏鸕鸘鸚鸛鸝鸞鹵鹹鹺鹼鹽麗麥麩麪麫麯麴麵麼麽黃黌點黨黲黴黶黷黽黿鼂鼉鼕鼴齇齊齋齎齏齒齔齕齗齙齜齟齠齡齣齦齧齪齬齲齶齷龍龎龐龑龔龕龜'; 30 | 31 | /** 32 | * 转换文本 33 | * @param {String} str - 待转换的文本 34 | * @returns {String} - 转换结果 35 | */ 36 | function tranStr(str) { 37 | var i; 38 | var letter; 39 | var code; 40 | var isChinese; 41 | var index; 42 | var result = ''; 43 | 44 | if (typeof str !== "string") { 45 | return str; 46 | } 47 | 48 | for (i = 0; i < str.length; i++) { 49 | letter = str.charAt(i); 50 | code = str.charCodeAt(i); 51 | 52 | // 根据字符的Unicode判断是否为汉字,以提高性能 53 | // 参考: 54 | // [1] http://www.unicode.org 55 | // [2] http://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8 56 | // [3] http://xylonwang.iteye.com/blog/519552 57 | isChinese = (code > 0x3400 && code < 0x9FFF) || (code > 0xF900 && code < 0xFAFF); 58 | 59 | if (!isChinese) { 60 | result += letter; 61 | continue; 62 | } 63 | 64 | index = T.indexOf(letter); 65 | 66 | if (index !== -1) { 67 | result += S.charAt(index); 68 | } else { 69 | result += letter; 70 | } 71 | } 72 | 73 | return result; 74 | } 75 | 76 | /** 77 | * 转换为简体或取消转换 78 | * 若发生转换,繁体原文备份为 element 节点上由 backupAttr 指定的属性,以备恢复为繁体 79 | * @param {String} original - 待转换文字,若未提供则取消上一次转换 80 | * @param {Element} element - 所属节点 81 | * @param {String} backupAttr - 用于备份繁体原文的属性名 82 | * @param {Function} setter - 通过参数 value 设置转换后的值 83 | */ 84 | function translateOrRestore(original, element, backupAttr, setter) { 85 | if (original) { 86 | var translated = tranStr(original); 87 | if (translated != original) { 88 | element.setAttribute(backupAttr, original); 89 | setter(translated); 90 | } 91 | } else if (element.hasAttribute(backupAttr)) { 92 | setter(element.getAttribute(backupAttr)); 93 | } 94 | } 95 | 96 | /** 97 | * 转换HTML Element属性 98 | * @param {Element} element - 待转换的HTML Element节点 99 | * @param {String|Array} attr - 待转换的属性/属性列表 100 | * @param {Boolean} toT - 是否转换成繁体 101 | */ 102 | function tranAttr(element, attr, toT) { 103 | var i, attrValue; 104 | 105 | if (attr instanceof Array) { 106 | for(i = 0; i < attr.length; i++) { 107 | tranAttr(element, attr[i], toT); 108 | } 109 | } else { 110 | attrValue = element.getAttribute(attr); 111 | if (attrValue !== "" && attrValue !== null) { 112 | translateOrRestore(!toT && attrValue, element, 'data-hant-' + attr, function(value) { 113 | element.setAttribute(attr, value); 114 | }); 115 | } 116 | } 117 | } 118 | 119 | /** 120 | * 转换HTML Element节点 121 | * @param {Element} element - 待转换的HTML Element节点 122 | * @param {Boolean} toT - 是否转换成繁体 123 | */ 124 | function tranElement(element, toT) { 125 | var i; 126 | var childNodes; 127 | 128 | if (element.nodeType !== 1) { 129 | return; 130 | } 131 | 132 | childNodes = element.childNodes; 133 | 134 | for (i = 0; i < childNodes.length; i++) { 135 | var childNode = childNodes.item(i); 136 | 137 | // 若为HTML Element节点 138 | if (childNode.nodeType === 1) { 139 | // 对以下标签不做处理 140 | if ("|BR|HR|TEXTAREA|SCRIPT|OBJECT|EMBED|".indexOf("|" + childNode.tagName + "|") !== -1) { 141 | continue; 142 | } 143 | 144 | tranAttr(childNode, ['title', 'data-original-title', 'alt', 'placeholder'], toT); 145 | 146 | // input 标签 147 | // 对text类型的input输入框不做处理 148 | if (childNode.tagName === "INPUT" 149 | && childNode.value !== "" 150 | && childNode.type !== "text" 151 | && childNode.type !== "hidden") 152 | { 153 | translateOrRestore(!toT && childNode.value, childNode, 'data-hant-value', function(value) { 154 | childNode.value = value; 155 | }); 156 | } 157 | 158 | // 继续递归调用 159 | tranElement(childNode, toT); 160 | } else if (childNode.nodeType === 3) { // 若为文本节点 161 | // 繁体原文备份在当前节点而非子节点 162 | translateOrRestore(!toT && childNode.data, element, 'data-hant-text-' + i, function(value) { 163 | childNode.data = value; 164 | }); 165 | } 166 | } 167 | } 168 | 169 | // 扩展jQuery全局方法 170 | $.extend({ 171 | /** 172 | * 文本繁转简 173 | * @param {String} str - 待转换的文本 174 | * @returns {String} 转换结果 175 | */ 176 | t2s: function(str) { 177 | return tranStr(str, false); 178 | } 179 | }); 180 | 181 | // 扩展jQuery对象方法 182 | $.fn.extend({ 183 | /** 184 | * jQuery Objects简转繁 185 | * @this {jQuery Objects} 待转换的jQuery Objects 186 | */ 187 | s2t: function() { 188 | return this.each(function() { 189 | tranElement(this, true); 190 | }); 191 | }, 192 | 193 | /** 194 | * jQuery Objects繁转简 195 | * @this {jQuery Objects} 待转换的jQuery Objects 196 | */ 197 | t2s: function() { 198 | return this.each(function() { 199 | tranElement(this, false); 200 | }); 201 | } 202 | }); 203 | }) (jQuery); 204 | -------------------------------------------------------------------------------- /blog/themes/freewill/source/js/main.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | detectSvgSupport(); 3 | setupScrolling(); 4 | detectOSForDownloads(); 5 | initializeChineseConversion(); 6 | }); 7 | 8 | function detectSvgSupport() { 9 | if (!Modernizr.svg) { 10 | var images = $('img[data-png-fallback]'); 11 | images.each(function(i) { 12 | $(this).attr('src', $(this).data('png-fallback')); 13 | }); 14 | } 15 | } 16 | 17 | function setupScrolling() { 18 | $(window).scroll(function(){ //As long as the window to scroll to trigger the code below 19 | var scrollt = document.documentElement.scrollTop + document.body.scrollTop; //Get height after rolling 20 | if( scrollt > 40 ){ //Height exceeds the judgment scroll, on display 21 | $("#gotop").fadeIn(333); //Fade 22 | $(".navbar").stop().fadeTo(333, 0.2); 23 | }else{ 24 | $("#gotop").fadeOut(333); //If the return or does not exceed, on a fade. Must add stop () stops before the movie, there would be flashing 25 | $(".navbar").stop().fadeTo(0, 1); 26 | } 27 | }); 28 | $("#gotop").click(function(){ //When you click on the label when using animate within 200 milliseconds, rolled top 29 | $("html,body").animate({scrollTop:"0px"},200); 30 | }); 31 | $(".navbar").mouseenter(function(){ 32 | $(".navbar").fadeTo(100, 1); 33 | }); 34 | $(".navbar").mouseleave(function(){ 35 | var scrollt = document.documentElement.scrollTop + document.body.scrollTop; 36 | if ( scrollt > 200) { 37 | $(".navbar").fadeTo(100, 0.2); 38 | } 39 | }); 40 | } 41 | 42 | function getOSName() { 43 | var os = "unknown"; 44 | if (navigator.userAgent.match(/Android/i)) os = "android"; 45 | else if (navigator.userAgent.match(/BlackBerry/i)) os = "blackberry"; 46 | else if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) os = "ios"; 47 | else if (navigator.userAgent.match(/webOS/i)) os = "webos"; 48 | else if (navigator.userAgent.match(/Windows Phone/i)) os = "windows-phone"; 49 | else if (~navigator.appVersion.indexOf("Win")) os = "windows"; 50 | else if (~navigator.appVersion.indexOf("Mac")) os = "mac"; 51 | else if (~navigator.appVersion.indexOf("Linux")) os = "linux"; 52 | else if (~navigator.appVersion.indexOf("X11")) os = "unix"; 53 | return os; 54 | } 55 | 56 | var rimeSupportedOS = { 57 | mac: true, 58 | linux: true, 59 | windows: true, 60 | }; 61 | 62 | function detectOSForDownloads() { 63 | var os = getOSName(); 64 | console.log('os: ' + os); 65 | if (rimeSupportedOS[os]) { 66 | $('.os-unknown').addClass('hidden'); 67 | $('.os-' + os).removeClass('hidden'); 68 | $('.downloads .footnote span.hidden').removeClass('hidden'); 69 | } 70 | // iRimeWithFool 71 | var today = new Date(); 72 | if (today.getMonth() == 3 && today.getDate() == 1) { 73 | $('.os-ios').removeClass('hidden'); 74 | } 75 | } 76 | 77 | function simplifyTextInPage(simplified) { 78 | if (simplified) { 79 | $(document.body).t2s(); 80 | $('#btn-simplify').addClass('simplified'); 81 | } else { 82 | $(document.body).s2t(); 83 | $('#btn-simplify').removeClass('simplified'); 84 | } 85 | } 86 | 87 | function initializeChineseConversion() { 88 | var simplified = +$.cookie('simplified'); 89 | // ?lang=zh-Hans, ?lang=zh-Hant 90 | var scriptCode = /[?&;]lang=[^&;]*(Han[st])/i.exec(window.location.search); 91 | if (scriptCode) { 92 | simplified = +(scriptCode[1].match(/Hans/i) != null); 93 | $.cookie('simplified', simplified, {expires: 365, path: '/'}); 94 | } 95 | simplifyTextInPage(simplified); 96 | 97 | $('#btn-simplify').click(function() { 98 | simplified = +!simplified; 99 | $.cookie('simplified', simplified, {expires: 365, path: '/'}); 100 | simplifyTextInPage(simplified); 101 | $(this).blur(); 102 | }); 103 | } 104 | -------------------------------------------------------------------------------- /blog/themes/freewill/source/js/modernizr.js: -------------------------------------------------------------------------------- 1 | /*! modernizr 3.3.1 (Custom Build) | MIT * 2 | * https://modernizr.com/download/?-svg-setclasses !*/ 3 | !function(e,n,s){function o(e,n){return typeof e===n}function a(){var e,n,s,a,t,f,r;for(var c in l)if(l.hasOwnProperty(c)){if(e=[],n=l[c],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(s=0;s endDate) { 58 | continue; 59 | } 60 | if (entry.mode) { 61 | $(document.body).addClass(entry.mode); 62 | } 63 | if (entry.notice) { 64 | $('.front-matter .slogan').hide(); 65 | let notice = $('.front-matter .notice'); 66 | notice.append($('').text(entry.notice)); 67 | if (entry.linkUrl) { 68 | notice.append($('').attr({ 69 | 'href': entry.linkUrl, 70 | 'class': entry.linkIcon || 'fa fa-link', 71 | })); 72 | } 73 | } 74 | return; 75 | } 76 | })(); 77 | -------------------------------------------------------------------------------- /blog/update_weasel_appcast.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import time 3 | from datetime import datetime, timedelta, timezone 4 | 5 | datas = [] 6 | for url in ["https://api.github.com/repos/rime/weasel/releases/tags/latest", "https://api.github.com/repos/rime/weasel/releases/latest"]: 7 | response = requests.get(url) 8 | if response.ok: 9 | datas.append(response.json()) 10 | filenames = [] 11 | urls = [] 12 | update_time = [] 13 | tags_name = [] 14 | for data in datas: 15 | if data["prerelease"] == False: 16 | release_json = data 17 | for asset in data['assets']: 18 | if asset['name'].endswith('.exe'): 19 | filenames.append(asset['name']) 20 | urls.append(asset['browser_download_url']) 21 | update_time.append(data['published_at']) 22 | tags_name.append(data['tag_name']) 23 | # compare update_time and get the latest one 24 | latest_time = update_time[0] 25 | latest_index = 0 26 | for i in range(1, len(update_time)): 27 | if update_time[i] > latest_time: 28 | latest_time = update_time[i] 29 | latest_index = i 30 | # get version number 31 | version = filenames[latest_index].replace("-installer.exe", "") 32 | version = version.replace("weasel-", "") 33 | # download url 34 | download_url = urls[latest_index] 35 | # get local time in format like "Thu, 01 Jan 1970 00:00:00 +0000" 36 | # define a function to format time 37 | def format_time(time_str): 38 | utc_offset_sec = -time.timezone if time.localtime().tm_isdst == 0 else -time.altzone 39 | utc_offset = timedelta(seconds=utc_offset_sec) 40 | current_tz = timezone(utc_offset) 41 | utc_time = datetime.strptime(time_str, "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc) 42 | local_time = utc_time.astimezone(current_tz) 43 | formatted_time = local_time.strftime("%a, %d %b %Y %H:%M:%S %z") 44 | return formatted_time 45 | formatted_time = format_time(update_time[latest_index]) 46 | 47 | # get release notes link 48 | if tags_name[latest_index] == "latest": 49 | releaseNotesLink = "http://github.com/rime/weasel/releases/tag/latest/index.html" 50 | else: 51 | releaseNotesLink = "http://rime.github.io/testing/weasel/index.html" 52 | # format xml file content 53 | template = f""" 54 | 55 | 56 | 【小狼毫】輸入法測試頻道 57 | http://rime.github.io/testing/weasel/appcast.xml 58 | 小狼毫測試版 Appcast 更新頻道 59 | zh 60 | 61 | 小狼毫 {version} 62 | {releaseNotesLink} 63 | {formatted_time} 64 | 67 | 68 | 69 | 70 | """ 71 | print(f"./source/testing/weasel/appcast.xml:\n{template}") 72 | # write template to ./source/testing/weasel/appcast.xml 73 | with open("./source/testing/weasel/appcast.xml", "w", encoding='utf-8') as f: 74 | f.write(template) 75 | f.close() 76 | print("./source/testing/weasel/appcast.xml updated\n") 77 | # update release appcast.xml automatically, and update other files if needed 78 | if 'release_json' in locals() or 'release_json' in globals(): 79 | import re 80 | release_formatted_time = format_time(release_json['published_at']) 81 | # get release url 82 | for asset in release_json['assets']: 83 | if asset['name'].endswith('.exe'): 84 | release_url = asset['browser_download_url'] 85 | break 86 | if 'release_url' not in locals(): 87 | print("release_url not found, using default url") 88 | release_url = f"https://github.com/rime/weasel/releases/download/{release_json['tag_name']}/weasel-{release_json['tag_name']}.0-installer.exe" 89 | # update appcast.xml 90 | template_release = f""" 91 | 92 | 93 | 【小狼毫】輸入法更新頻道 94 | http://rime.github.io/release/weasel/appcast.xml 95 | 小狼毫 Appcast 更新頻道 96 | zh 97 | 98 | 小狼毫 {release_json["tag_name"]} 99 | http://rime.github.io/release/weasel/index.html 100 | {release_formatted_time} 101 | 104 | 105 | 106 | """ 107 | print(f"./source/release/weasel/appcast.xml:\n{template_release}") 108 | with open("./source/release/weasel/appcast.xml", "w", encoding='utf-8') as f: 109 | f.write(template_release) 110 | f.close() 111 | print("./source/release/weasel/appcast.xml updated\n") 112 | # get changelog.md 113 | changelog_url = f"https://raw.githubusercontent.com/rime/weasel/refs/tags/{release_json['tag_name']}/CHANGELOG.md" 114 | changelog_txt = requests.get(changelog_url).text 115 | match = re.search(r'(\d+\.\d+\.\d+)', changelog_txt) 116 | if not match: 117 | print("No version number found in CHANGELOG.md") 118 | exit(0) 119 | changelog_version = match.group(1) 120 | 121 | if changelog_version != release_json['tag_name']: 122 | print("latest version in CHANGELOG.md is not released yet") 123 | exit(0) 124 | # version tag in CHANGELOG.md has been released 125 | print("latest version in CHANGELOG.md has been released") 126 | index_md = f"""title: 【小狼毫】更新日誌\ncomments: false\ndate: {release_formatted_time}\n---\n\n{changelog_txt}""" 127 | # update ./source/release/weasel/index.md 128 | with open("./source/release/weasel/index.md", "w", encoding='utf-8') as f: 129 | f.write(index_md) 130 | f.close() 131 | print("./source/release/weasel/index.md updated") 132 | # update ./source/testing/weasel/index.md 133 | with open("./source/testing/weasel/index.md", "w", encoding='utf-8') as f: 134 | f.write(index_md) 135 | f.close() 136 | print("./source/testing/weasel/index.md updated") 137 | # modify ./source/_data/downloads.yaml, key weasel/version and weasel/url 138 | from ruamel.yaml import YAML 139 | yaml = YAML() 140 | yaml.preserve_quotes = True 141 | yaml.indent(mapping=2, sequence=2, offset=2) 142 | # this will be like this until there is some change in the yaml file not in this format/rule 143 | with open("./source/_data/downloads.yaml", "r", encoding='utf-8') as f: 144 | downloads_yaml = yaml.load(f) 145 | f.close() 146 | with open("./source/_data/downloads.yaml", "w", encoding='utf-8') as f: 147 | downloads_yaml['weasel']['version'] = release_json['tag_name'] 148 | downloads_yaml['weasel']['url'] = release_url 149 | yaml.dump(downloads_yaml, f) 150 | print("./source/_data/downloads.yaml updated") 151 | f.close() 152 | # update source/download/index.md 153 | pattern = r"\* \[小狼毫 \d+\.\d+\.\d+\]\(https://github\.com/rime/weasel/releases/latest\)〔\[下載\]\(https://github\.com/rime/weasel/releases/download/\d+\.\d+\.\d+/weasel-\d+\.\d+\.\d+\.0-installer\.exe\)〕〔\[更新日誌\]\(/release/weasel/\)〕〔\[歷史版本\]\(https://github\.com/rime/weasel/releases\)〕" 154 | new_str = f"* [小狼毫 {release_json['tag_name']}](https://github.com/rime/weasel/releases/latest)〔[下載](https://github.com/rime/weasel/releases/download/{release_json['tag_name']}/weasel-{release_json['tag_name']}.0-installer.exe)〕〔[更新日誌](/release/weasel/)〕〔[歷史版本](https://github.com/rime/weasel/releases)〕" 155 | # replace pattern with new_str in ./source/download/index.md 156 | with open("./source/download/index.md", "r", encoding='utf-8') as f: 157 | download_md = f.read() 158 | f.close() 159 | download_md = re.sub(pattern, new_str, download_md) 160 | with open("./source/download/index.md", "w", encoding='utf-8') as f: 161 | f.write(download_md) 162 | f.close() 163 | print("./source/download/index.md updated") 164 | -------------------------------------------------------------------------------- /images/combo-pinyin-kbcon-amj40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-kbcon-amj40.jpg -------------------------------------------------------------------------------- /images/combo-pinyin-kbcon-chicory-relabeled.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-kbcon-chicory-relabeled.jpg -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-a-ia-ua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-a-ia-ua.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-ai-ao-an.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-ai-ao-an.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-ang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-ang.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-chords.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-chords.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-ei-uen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-ei-uen.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-i-u-yu-er-en-o-e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-i-u-yu-er-en-o-e.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-iang-uang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-iang-uang.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-iao-yuan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-iao-yuan.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-ing-ong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-ing-ong.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-io-yue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-io-yue.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-iong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-iong.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-j-q-x-iou-yun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-j-q-x-iou-yun.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-layout.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-logo.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-m-n-r-uei-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-m-n-r-uei-in.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-space.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-space.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-touch-typing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-touch-typing.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-uai-ian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-uai-ian.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-uan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-uan.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-uo-ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-uo-ie.png -------------------------------------------------------------------------------- /images/combo-pinyin-v3/combo-pinyin-zh-ch-sh-ou-eng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/combo-pinyin-v3/combo-pinyin-zh-ch-sh-ou-eng.png -------------------------------------------------------------------------------- /images/emoji-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/emoji-chart.png -------------------------------------------------------------------------------- /images/rime-install-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/rime-install-select.png -------------------------------------------------------------------------------- /images/squirrel-vertical-text-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/squirrel-vertical-text-dark.png -------------------------------------------------------------------------------- /images/squirrel-vertical-text-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/squirrel-vertical-text-light.png -------------------------------------------------------------------------------- /images/user-quotes/rime-starcraft-player.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/user-quotes/rime-starcraft-player.jpg -------------------------------------------------------------------------------- /images/user-quotes/rime-users-quotes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/user-quotes/rime-users-quotes.jpg -------------------------------------------------------------------------------- /images/user-quotes/rime-users-story.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/user-quotes/rime-users-story.jpg -------------------------------------------------------------------------------- /images/user-quotes/rime-users-test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/user-quotes/rime-users-test.jpg -------------------------------------------------------------------------------- /images/user-quotes/rime-users-uncertainty.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/user-quotes/rime-users-uncertainty.jpg -------------------------------------------------------------------------------- /images/user-quotes/rime-wubi-user.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/user-quotes/rime-wubi-user.jpg -------------------------------------------------------------------------------- /images/user-quotes/squirrel-in-azure.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/user-quotes/squirrel-in-azure.jpg -------------------------------------------------------------------------------- /images/user-quotes/weasel-in-lost-temple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/images/user-quotes/weasel-in-lost-temple.jpg -------------------------------------------------------------------------------- /manual/combo-pinyin-cheatsheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/manual/combo-pinyin-cheatsheet.pdf -------------------------------------------------------------------------------- /manual/執鍵人宮保拼音鍵盤圖解.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/manual/執鍵人宮保拼音鍵盤圖解.pdf -------------------------------------------------------------------------------- /manual/大衆式宮保拼音鍵盤圖解.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rime/home/4374cdec230f25e43b2246d1303367b39a3216c5/manual/大衆式宮保拼音鍵盤圖解.pdf --------------------------------------------------------------------------------