├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── data ├── TC2SC.json ├── bigger.txt ├── common4808.txt ├── hnz_matched.txt ├── labels_all.txt ├── labels_hnz.txt ├── labels_hnz_raw.txt ├── labels_lh.txt ├── lorem.txt ├── manual_shift.txt ├── ocr_crashers.txt ├── ocr_ret_hnz.txt ├── ocr_ret_lh.txt ├── rects │ ├── 1.tsv │ ├── 10.tsv │ ├── 100.tsv │ ├── 101.tsv │ ├── 102.tsv │ ├── 103.tsv │ ├── 104.tsv │ ├── 105.tsv │ ├── 106.tsv │ ├── 107.tsv │ ├── 108.tsv │ ├── 109.tsv │ ├── 11.tsv │ ├── 110.tsv │ ├── 111.tsv │ ├── 112.tsv │ ├── 113.tsv │ ├── 114.tsv │ ├── 115.tsv │ ├── 116.tsv │ ├── 117.tsv │ ├── 118.tsv │ ├── 119.tsv │ ├── 12.tsv │ ├── 120.tsv │ ├── 121.tsv │ ├── 13.tsv │ ├── 14.tsv │ ├── 15.tsv │ ├── 16.tsv │ ├── 17.tsv │ ├── 18.tsv │ ├── 19.tsv │ ├── 2.tsv │ ├── 20.tsv │ ├── 21.tsv │ ├── 22.tsv │ ├── 23.tsv │ ├── 24.tsv │ ├── 25.tsv │ ├── 26.tsv │ ├── 27.tsv │ ├── 28.tsv │ ├── 29.tsv │ ├── 3.tsv │ ├── 30.tsv │ ├── 31.tsv │ ├── 32.tsv │ ├── 33.tsv │ ├── 34.tsv │ ├── 35.tsv │ ├── 36.tsv │ ├── 37.tsv │ ├── 38.tsv │ ├── 39.tsv │ ├── 4.tsv │ ├── 40.tsv │ ├── 41.tsv │ ├── 42.tsv │ ├── 43.tsv │ ├── 44.tsv │ ├── 45.tsv │ ├── 46.tsv │ ├── 47.tsv │ ├── 48.tsv │ ├── 49.tsv │ ├── 5.tsv │ ├── 50.tsv │ ├── 51.tsv │ ├── 52.tsv │ ├── 53.tsv │ ├── 54.tsv │ ├── 55.tsv │ ├── 56.tsv │ ├── 57.tsv │ ├── 58.tsv │ ├── 59.tsv │ ├── 6.tsv │ ├── 60.tsv │ ├── 61.tsv │ ├── 62.tsv │ ├── 63.tsv │ ├── 64.tsv │ ├── 65.tsv │ ├── 66.tsv │ ├── 67.tsv │ ├── 68.tsv │ ├── 69.tsv │ ├── 7.tsv │ ├── 70.tsv │ ├── 71.tsv │ ├── 72.tsv │ ├── 73.tsv │ ├── 74.tsv │ ├── 75.tsv │ ├── 76.tsv │ ├── 77.tsv │ ├── 78.tsv │ ├── 79.tsv │ ├── 8.tsv │ ├── 80.tsv │ ├── 81.tsv │ ├── 82.tsv │ ├── 83.tsv │ ├── 84.tsv │ ├── 85.tsv │ ├── 86.tsv │ ├── 87.tsv │ ├── 88.tsv │ ├── 89.tsv │ ├── 9.tsv │ ├── 90.tsv │ ├── 91.tsv │ ├── 92.tsv │ ├── 93.tsv │ ├── 94.tsv │ ├── 95.tsv │ ├── 96.tsv │ ├── 97.tsv │ ├── 98.tsv │ ├── 99.tsv │ ├── H1.tsv │ ├── H10.tsv │ ├── H100.tsv │ ├── H101.tsv │ ├── H102.tsv │ ├── H103.tsv │ ├── H104.tsv │ ├── H105.tsv │ ├── H106.tsv │ ├── H107.tsv │ ├── H108.tsv │ ├── H109.tsv │ ├── H11.tsv │ ├── H110.tsv │ ├── H111.tsv │ ├── H112.tsv │ ├── H113.tsv │ ├── H114.tsv │ ├── H115.tsv │ ├── H116.tsv │ ├── H117.tsv │ ├── H118.tsv │ ├── H119.tsv │ ├── H12.tsv │ ├── H120.tsv │ ├── H121.tsv │ ├── H122.tsv │ ├── H123.tsv │ ├── H124.tsv │ ├── H125.tsv │ ├── H126.tsv │ ├── H127.tsv │ ├── H128.tsv │ ├── H129.tsv │ ├── H13.tsv │ ├── H130.tsv │ ├── H131.tsv │ ├── H132.tsv │ ├── H133.tsv │ ├── H134.tsv │ ├── H135.tsv │ ├── H136.tsv │ ├── H137.tsv │ ├── H138.tsv │ ├── H139.tsv │ ├── H14.tsv │ ├── H140.tsv │ ├── H141.tsv │ ├── H142.tsv │ ├── H143.tsv │ ├── H144.tsv │ ├── H145.tsv │ ├── H146.tsv │ ├── H147.tsv │ ├── H148.tsv │ ├── H149.tsv │ ├── H15.tsv │ ├── H150.tsv │ ├── H151.tsv │ ├── H152.tsv │ ├── H153.tsv │ ├── H154.tsv │ ├── H155.tsv │ ├── H156.tsv │ ├── H157.tsv │ ├── H158.tsv │ ├── H159.tsv │ ├── H16.tsv │ ├── H160.tsv │ ├── H161.tsv │ ├── H162.tsv │ ├── H163.tsv │ ├── H164.tsv │ ├── H165.tsv │ ├── H166.tsv │ ├── H167.tsv │ ├── H168.tsv │ ├── H169.tsv │ ├── H17.tsv │ ├── H170.tsv │ ├── H171.tsv │ ├── H172.tsv │ ├── H173.tsv │ ├── H174.tsv │ ├── H175.tsv │ ├── H176.tsv │ ├── H177.tsv │ ├── H178.tsv │ ├── H179.tsv │ ├── H18.tsv │ ├── H180.tsv │ ├── H181.tsv │ ├── H182.tsv │ ├── H183.tsv │ ├── H184.tsv │ ├── H185.tsv │ ├── H186.tsv │ ├── H187.tsv │ ├── H188.tsv │ ├── H189.tsv │ ├── H19.tsv │ ├── H190.tsv │ ├── H191.tsv │ ├── H192.tsv │ ├── H193.tsv │ ├── H194.tsv │ ├── H195.tsv │ ├── H196.tsv │ ├── H197.tsv │ ├── H198.tsv │ ├── H199.tsv │ ├── H2.tsv │ ├── H20.tsv │ ├── H200.tsv │ ├── H201.tsv │ ├── H202.tsv │ ├── H203.tsv │ ├── H204.tsv │ ├── H205.tsv │ ├── H206.tsv │ ├── H207.tsv │ ├── H208.tsv │ ├── H209.tsv │ ├── H21.tsv │ ├── H210.tsv │ ├── H211.tsv │ ├── H212.tsv │ ├── H213.tsv │ ├── H214.tsv │ ├── H215.tsv │ ├── H216.tsv │ ├── H217.tsv │ ├── H218.tsv │ ├── H219.tsv │ ├── H22.tsv │ ├── H220.tsv │ ├── H221.tsv │ ├── H222.tsv │ ├── H223.tsv │ ├── H224.tsv │ ├── H225.tsv │ ├── H226.tsv │ ├── H227.tsv │ ├── H228.tsv │ ├── H229.tsv │ ├── H23.tsv │ ├── H230.tsv │ ├── H231.tsv │ ├── H232.tsv │ ├── H233.tsv │ ├── H234.tsv │ ├── H235.tsv │ ├── H236.tsv │ ├── H237.tsv │ ├── H238.tsv │ ├── H239.tsv │ ├── H24.tsv │ ├── H240.tsv │ ├── H241.tsv │ ├── H242.tsv │ ├── H243.tsv │ ├── H244.tsv │ ├── H245.tsv │ ├── H246.tsv │ ├── H247.tsv │ ├── H248.tsv │ ├── H249.tsv │ ├── H25.tsv │ ├── H250.tsv │ ├── H251.tsv │ ├── H252.tsv │ ├── H253.tsv │ ├── H254.tsv │ ├── H255.tsv │ ├── H256.tsv │ ├── H257.tsv │ ├── H258.tsv │ ├── H259.tsv │ ├── H26.tsv │ ├── H260.tsv │ ├── H261.tsv │ ├── H262.tsv │ ├── H263.tsv │ ├── H264.tsv │ ├── H265.tsv │ ├── H266.tsv │ ├── H267.tsv │ ├── H268.tsv │ ├── H269.tsv │ ├── H27.tsv │ ├── H270.tsv │ ├── H271.tsv │ ├── H272.tsv │ ├── H273.tsv │ ├── H274.tsv │ ├── H275.tsv │ ├── H276.tsv │ ├── H277.tsv │ ├── H278.tsv │ ├── H279.tsv │ ├── H28.tsv │ ├── H280.tsv │ ├── H281.tsv │ ├── H282.tsv │ ├── H283.tsv │ ├── H284.tsv │ ├── H285.tsv │ ├── H286.tsv │ ├── H287.tsv │ ├── H288.tsv │ ├── H289.tsv │ ├── H29.tsv │ ├── H290.tsv │ ├── H291.tsv │ ├── H292.tsv │ ├── H293.tsv │ ├── H294.tsv │ ├── H295.tsv │ ├── H296.tsv │ ├── H297.tsv │ ├── H298.tsv │ ├── H299.tsv │ ├── H3.tsv │ ├── H30.tsv │ ├── H300.tsv │ ├── H301.tsv │ ├── H302.tsv │ ├── H303.tsv │ ├── H304.tsv │ ├── H305.tsv │ ├── H306.tsv │ ├── H307.tsv │ ├── H308.tsv │ ├── H309.tsv │ ├── H31.tsv │ ├── H310.tsv │ ├── H311.tsv │ ├── H312.tsv │ ├── H313.tsv │ ├── H314.tsv │ ├── H315.tsv │ ├── H316.tsv │ ├── H317.tsv │ ├── H318.tsv │ ├── H319.tsv │ ├── H32.tsv │ ├── H320.tsv │ ├── H321.tsv │ ├── H322.tsv │ ├── H323.tsv │ ├── H324.tsv │ ├── H325.tsv │ ├── H326.tsv │ ├── H327.tsv │ ├── H328.tsv │ ├── H329.tsv │ ├── H33.tsv │ ├── H330.tsv │ ├── H331.tsv │ ├── H332.tsv │ ├── H333.tsv │ ├── H334.tsv │ ├── H335.tsv │ ├── H336.tsv │ ├── H337.tsv │ ├── H338.tsv │ ├── H339.tsv │ ├── H34.tsv │ ├── H340.tsv │ ├── H341.tsv │ ├── H342.tsv │ ├── H343.tsv │ ├── H344.tsv │ ├── H345.tsv │ ├── H346.tsv │ ├── H347.tsv │ ├── H348.tsv │ ├── H349.tsv │ ├── H35.tsv │ ├── H350.tsv │ ├── H351.tsv │ ├── H352.tsv │ ├── H353.tsv │ ├── H354.tsv │ ├── H355.tsv │ ├── H356.tsv │ ├── H357.tsv │ ├── H358.tsv │ ├── H359.tsv │ ├── H36.tsv │ ├── H360.tsv │ ├── H361.tsv │ ├── H362.tsv │ ├── H363.tsv │ ├── H364.tsv │ ├── H365.tsv │ ├── H366.tsv │ ├── H367.tsv │ ├── H368.tsv │ ├── H369.tsv │ ├── H37.tsv │ ├── H370.tsv │ ├── H371.tsv │ ├── H372.tsv │ ├── H373.tsv │ ├── H374.tsv │ ├── H375.tsv │ ├── H376.tsv │ ├── H377.tsv │ ├── H378.tsv │ ├── H379.tsv │ ├── H38.tsv │ ├── H380.tsv │ ├── H381.tsv │ ├── H382.tsv │ ├── H383.tsv │ ├── H384.tsv │ ├── H385.tsv │ ├── H386.tsv │ ├── H387.tsv │ ├── H388.tsv │ ├── H389.tsv │ ├── H39.tsv │ ├── H390.tsv │ ├── H391.tsv │ ├── H392.tsv │ ├── H393.tsv │ ├── H394.tsv │ ├── H395.tsv │ ├── H396.tsv │ ├── H397.tsv │ ├── H398.tsv │ ├── H399.tsv │ ├── H4.tsv │ ├── H40.tsv │ ├── H400.tsv │ ├── H401.tsv │ ├── H402.tsv │ ├── H403.tsv │ ├── H404.tsv │ ├── H405.tsv │ ├── H406.tsv │ ├── H407.tsv │ ├── H408.tsv │ ├── H409.tsv │ ├── H41.tsv │ ├── H410.tsv │ ├── H411.tsv │ ├── H412.tsv │ ├── H413.tsv │ ├── H414.tsv │ ├── H415.tsv │ ├── H416.tsv │ ├── H417.tsv │ ├── H418.tsv │ ├── H419.tsv │ ├── H42.tsv │ ├── H420.tsv │ ├── H421.tsv │ ├── H422.tsv │ ├── H423.tsv │ ├── H424.tsv │ ├── H425.tsv │ ├── H426.tsv │ ├── H427.tsv │ ├── H428.tsv │ ├── H429.tsv │ ├── H43.tsv │ ├── H430.tsv │ ├── H431.tsv │ ├── H432.tsv │ ├── H433.tsv │ ├── H44.tsv │ ├── H45.tsv │ ├── H46.tsv │ ├── H47.tsv │ ├── H48.tsv │ ├── H49.tsv │ ├── H5.tsv │ ├── H50.tsv │ ├── H51.tsv │ ├── H52.tsv │ ├── H53.tsv │ ├── H54.tsv │ ├── H55.tsv │ ├── H56.tsv │ ├── H57.tsv │ ├── H58.tsv │ ├── H59.tsv │ ├── H6.tsv │ ├── H60.tsv │ ├── H61.tsv │ ├── H62.tsv │ ├── H63.tsv │ ├── H64.tsv │ ├── H65.tsv │ ├── H66.tsv │ ├── H67.tsv │ ├── H68.tsv │ ├── H69.tsv │ ├── H7.tsv │ ├── H70.tsv │ ├── H71.tsv │ ├── H72.tsv │ ├── H73.tsv │ ├── H74.tsv │ ├── H75.tsv │ ├── H76.tsv │ ├── H77.tsv │ ├── H78.tsv │ ├── H79.tsv │ ├── H8.tsv │ ├── H80.tsv │ ├── H81.tsv │ ├── H82.tsv │ ├── H83.tsv │ ├── H84.tsv │ ├── H85.tsv │ ├── H86.tsv │ ├── H87.tsv │ ├── H88.tsv │ ├── H89.tsv │ ├── H9.tsv │ ├── H90.tsv │ ├── H91.tsv │ ├── H92.tsv │ ├── H93.tsv │ ├── H94.tsv │ ├── H95.tsv │ ├── H96.tsv │ ├── H97.tsv │ ├── H98.tsv │ └── H99.tsv ├── svg_tweak.json ├── svg_tweak_.json ├── txt │ └── 淮南子.txt └── variant_map.txt ├── fallback ├── forge_combined.py ├── forge_font.py ├── generate.py ├── run_trace.py ├── stage_svg.py └── stage_svg.pyc ├── netlify.toml ├── package-lock.json ├── package.json ├── preview.html ├── screenshots ├── banner.svg ├── gif001.gif ├── gif002.gif ├── gif003.gif ├── gif004.gif ├── loading.gif ├── qiji-seal.svg ├── screenshot001.png ├── screenshot002.png ├── sheet.jpg └── sheet.png ├── scripts └── releasenotes.js └── workflow ├── anim.gif ├── check_progress.py ├── compact_pages.py ├── extract.py ├── extras.py ├── fine_tune.js ├── forge_font.py ├── judge.py ├── lay_grid.py ├── lay_grid_corner.py ├── loading_anim.js ├── make_sheet.js ├── make_site.js ├── refine.py ├── relabel.py ├── run_ocr.py ├── run_ocr.sh ├── run_trace.py ├── split_pdf.workflow └── Contents │ ├── Info.plist │ ├── QuickLook │ └── Preview.png │ └── document.wflow ├── stage_svg.py ├── unocr.js ├── vis.py └── woff2convert.js /.gitattributes: -------------------------------------------------------------------------------- 1 | site/* linguist-detectable=false 2 | site linguist-detectable=false 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | site/ 4 | pages/ 5 | output/ 6 | tmp/ 7 | singles/ 8 | dist/ 9 | __pycache__ 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020, Lingdong Huang i@lingdong.works, 2 | with Reserved Font Name QIJI. 3 | 4 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 5 | This license is copied below, and is also available with a FAQ at: 6 | http://scripts.sil.org/OFL 7 | 8 | 9 | ----------------------------------------------------------- 10 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 11 | ----------------------------------------------------------- 12 | 13 | PREAMBLE 14 | The goals of the Open Font License (OFL) are to stimulate worldwide 15 | development of collaborative font projects, to support the font creation 16 | efforts of academic and linguistic communities, and to provide a free and 17 | open framework in which fonts may be shared and improved in partnership 18 | with others. 19 | 20 | The OFL allows the licensed fonts to be used, studied, modified and 21 | redistributed freely as long as they are not sold by themselves. The 22 | fonts, including any derivative works, can be bundled, embedded, 23 | redistributed and/or sold with any software provided that any reserved 24 | names are not used by derivative works. The fonts and derivatives, 25 | however, cannot be released under any other type of license. The 26 | requirement for fonts to remain under this license does not apply 27 | to any document created using the fonts or their derivatives. 28 | 29 | DEFINITIONS 30 | "Font Software" refers to the set of files released by the Copyright 31 | Holder(s) under this license and clearly marked as such. This may 32 | include source files, build scripts and documentation. 33 | 34 | "Reserved Font Name" refers to any names specified as such after the 35 | copyright statement(s). 36 | 37 | "Original Version" refers to the collection of Font Software components as 38 | distributed by the Copyright Holder(s). 39 | 40 | "Modified Version" refers to any derivative made by adding to, deleting, 41 | or substituting -- in part or in whole -- any of the components of the 42 | Original Version, by changing formats or by porting the Font Software to a 43 | new environment. 44 | 45 | "Author" refers to any designer, engineer, programmer, technical 46 | writer or other person who contributed to the Font Software. 47 | 48 | PERMISSION & CONDITIONS 49 | Permission is hereby granted, free of charge, to any person obtaining 50 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 51 | redistribute, and sell modified and unmodified copies of the Font 52 | Software, subject to the following conditions: 53 | 54 | 1) Neither the Font Software nor any of its individual components, 55 | in Original or Modified Versions, may be sold by itself. 56 | 57 | 2) Original or Modified Versions of the Font Software may be bundled, 58 | redistributed and/or sold with any software, provided that each copy 59 | contains the above copyright notice and this license. These can be 60 | included either as stand-alone text files, human-readable headers or 61 | in the appropriate machine-readable metadata fields within text or 62 | binary files as long as those fields can be easily viewed by the user. 63 | 64 | 3) No Modified Version of the Font Software may use the Reserved Font 65 | Name(s) unless explicit written permission is granted by the corresponding 66 | Copyright Holder. This restriction only applies to the primary font name as 67 | presented to the users. 68 | 69 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 70 | Software shall not be used to promote, endorse or advertise any 71 | Modified Version, except to acknowledge the contribution(s) of the 72 | Copyright Holder(s) and the Author(s) or with their explicit written 73 | permission. 74 | 75 | 5) The Font Software, modified or unmodified, in part or in whole, 76 | must be distributed entirely under this license, and must not be 77 | distributed under any other license. The requirement for fonts to 78 | remain under this license does not apply to any document created 79 | using the Font Software. 80 | 81 | TERMINATION 82 | This license becomes null and void if any of the above conditions are 83 | not met. 84 | 85 | DISCLAIMER 86 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 87 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 88 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 89 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 90 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 91 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 92 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 93 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 94 | OTHER DEALINGS IN THE FONT SOFTWARE. 95 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 齊伋體 qiji-font 4 | 5 | ![](screenshots/screenshot001.png) 6 | 7 | *Qiji-font (齊伋體)* is: 8 | 9 | - A [Ming typeface](https://en.wikipedia.org/wiki/Ming_(typefaces)); 10 | - Extracted from Ming Dynasty woodblock printed books ([凌閔刻本](https://www.shuge.org/tag/minling/?post_type=ebook)); 11 | - Using semi-automatic computer vision and OCR; 12 | - Open source; 13 | - A work in progress; 14 | - Named in honour of 閔齊伋, 16th century printer; 15 | - Intended to be used with [wenyan-lang](//wy-lang.org), the Classical Chinese programming language. 16 | 17 | 📢 聲明:敝字體近日頗見流傳於網絡,然皆訛作“‘凌’东齐伋体”。鄙人名**令東**,字體名**齊伋**;強欲冠後以前者,亦以“**令東齊伋體**”為宜,望周知。🤦‍♂️ 18 | 19 | 20 | ## [Try it out online!](https://qiji-font.netlify.com/) 21 | 22 | [![Netlify Status](https://api.netlify.com/api/v1/badges/36a05e89-fa5f-4b29-87c9-1d4d8e07eb24/deploy-status)](https://app.netlify.com/sites/qiji-font/deploys) 23 | 24 | [![](screenshots/screenshot002.png)](https://qiji-font.netlify.com/) 25 | 26 | ## Download 27 | 28 | - See [Releases](https://github.com/LingDong-/qiji-font/releases) page. 29 | 30 | 31 | ## Progress 32 | 33 | | Unique Glyphs | Covered Characters* | Books Scanned | 34 | |---|---|---| 35 | | 4569 | **5916** | [李長吉歌詩](https://www.shuge.org/ebook/li-changji-ge-shi/) / [淮南鴻烈解](https://www.shuge.org/ebook/huai-nan-hong-lie-jie/) | 36 | 37 | * Simplified forms fall back to traditional forms, more common traditional variants fall back to less common variant forms. 38 | 39 | ## Workflow 40 | 41 | **Step I:** Download high resolution PDFs (from [shuge.org](https://www.shuge.org)) and split pages into images. 42 | 43 | **Step II:** Manually lay a grid on top of each page to generate bounding boxes for characters (potentially replacable by an automatic corner-detection algorithm). 44 | 45 | ![](screenshots/gif001.gif) 46 | 47 | **Step III:** Generate a low-poly mask for each character on the grid, and save the thumbnails (using [OpenCV](opencv.org)). First, red channel is subtracted from the grayscale, in order to clean the annotations printed in red ink. Next, the image is thresholded and fed into contour-tracing algorithm. A metric is then used to discard shapes that are unlikely to be part of the character in interest. (This step does not produce the final glyph, only a quick-and-dirty extraction for intermediate processing.) 48 | 49 | ![](screenshots/gif002.gif) 50 | 51 | **Step IV:** Feed each thumbnail one by one into neural-net Chinese OCR to recognize the characters (currently using [chineseocr/darknet-ocr](https://github.com/chineseocr/darknet-ocr), low detection rate, mediocre accuracy, very slow on CPU, looking for better alternatives). 52 | 53 | 54 | **Step V:** Manually judge output of OCR: pick the best-looking instance of a given character, and flag incorrectly recognized characters. 55 | 56 | ![](screenshots/gif003.gif) 57 | 58 | 59 | **Step VI:** For the final character set, automatically generate fine raster rendering of each character. Each character is placed at its "visual" center by cumulatively counting pixels from left and right, as well as top and bottom, so that the "weight" of the character is on the centerlines, as opposed to centering the bounding box. Two thresholding methods are used, the global threshold is dilated and acts as a mask to the adaptive threshold, thus preserving details while blocking out surrounding boogers. 60 | 61 | ![](screenshots/gif004.gif) 62 | 63 | **Step VII:** Raster-to-vector tracing software [potrace](http://potrace.sourceforge.net) is used to convert the raster rendrings into SVG's. [FontForge's python library](https://fontforge.org/en-US/documentation/scripting/python/) is used to generate the final font file. Done! 64 | 65 | 66 | As the number of characters grow, the above procedure is going to be less and less efficient, since new, previously unseen characters obtainable from each book processed are going to be rarer and rarer. An alternative method which involves clicking only on unseen characters to pick them out is under construction. 67 | 68 | ## Known Issues 69 | 70 | - Character sizes are sometimes inconsistent. Undergoing manual tweaking. 71 | 72 | 73 | ## Development 74 | 75 | **Requirements:** 76 | 77 | - Python 3 78 | - OpenCV Python (`pip3 install opencv-python`) 79 | - FontForge Python library (included in `brew install fontforge`) 80 | - Chinese OCR (e.g. [chineseocr/darknet-ocr](https://github.com/chineseocr/darknet-ocr)) 81 | - Raster-to-vector tracer (e.g. [potrace](http://potrace.sourceforge.net)) 82 | 83 | The main code is contained in `/workflow`, and corresponds to the steps described above. Documentation for the code is yet to be done (soon), so feel free to inquire if interested. As you might have noticed, there is a ton of work involved in making a Chinese font, so contribution is very much welcome :) 84 | 85 | # Charset 86 | 87 | Sheet of all unique glyphs sorted by unicode entry point, click to enlarge. (this is lossy JPEG, for full PNG, [check here](screenshots/sheet.png), for SVG, run `node workflow/make_sheet.js`) 88 | 89 | ![](screenshots/sheet.jpg) 90 | -------------------------------------------------------------------------------- /data/bigger.txt: -------------------------------------------------------------------------------- 1 | 伍 xx 2 | 械 xx 3 | 邦 xxx 4 | 算 x 5 | 堁 x 6 | 鎩 xx 7 | 虯 x 8 | 豎 x 9 | 僦 x 10 | 簵 x 11 | 珥 xx 12 | 掛 x 13 | 橉 x 14 | 曰 yy 15 | 樾 xx 16 | 䎚 x 17 | 針 x 18 | 麗 x 19 | 玕 x 20 | 蹄 x 21 | 儉 x 22 | 晽 xx 23 | 紲 x 24 | 儆 x 25 | 儉 x 26 | 企 x 27 | 潁 x 28 | 錀 xx 29 | 擏 x 30 | 犴 x 31 | 緂 x 32 | 奕 x 33 | 桓 xx 34 | 枺 x 35 | 貶 xx 36 | 坯 x 37 | 蹻 x 38 | 桴 x 39 | 銓 x 40 | 硎 x 41 | 猴 x 42 | 魍 xx 43 | 枻 x 44 | 鉗 x 45 | 盂 x 46 | 蜄 x 47 | 卬 xx 48 | 坯 x 49 | 礛 x 50 | 袒 x 51 | 茠 x 52 | 穢 xx 53 | 檢 x 54 | 堙 x 55 | 个 x 56 | 湫 x 57 | 蟋 x 58 | 謚 x 59 | 救 x 60 | 術 x 61 | 鎧 x 62 | 駔 x 63 | 熒 x 64 | 磔 x 65 | 繈 x 66 | 磁 x 67 | 旃 x 68 | 淑 x 69 | 仕 x 70 | 趣 x 71 | 偃 x 72 | 忣 x 73 | 侮 x 74 | 蚙 x 75 | 粗 x 76 | 橉 x 77 | 振 x 78 | 忿 x 79 | 并 xx 80 | 覩 x 81 | 梣 x 82 | 挺 x 83 | 儺 x 84 | 掖 x 85 | 雊 xx 86 | 祲 xx 87 | 杕 x 88 | 慨 xx 89 | 紂 x 90 | 柱 x 91 | 唫 x 92 | 糗 x 93 | 蕤 x 94 | 鄧 x 95 | 飂 x 96 | 踡 xx 97 | 猘 x 98 | 烑 x 99 | 錣 x 100 | 鎋 x 101 | 軼 x 102 | 埴 x 103 | 鏜 x 104 | 靻 x 105 | 㹋 x 106 | 瓾 x 107 | 蟆 x 108 | 並 x 109 | 跐 x 110 | 機 x 111 | 咫 x 112 | 椓 x 113 | 鑒 x 114 | 僇 x 115 | 磁 x 116 | 梱 x 117 | 鋋 x 118 | 騰 x 119 | 狢 x 120 | 餉 x 121 | 麥 y 122 | 巳 y 123 | 月 y 124 | 宿 y 125 | 朝 y 126 | 戎 y 127 | 庾 y 128 | 副 y 129 | 韜 y 130 | 霓 y 131 | 白 y 132 | 謂 y 133 | 暫 y 134 | 妻 y 135 | 剪 y 136 | 決 y 137 | 巴 y 138 | 不 y 139 | 至 y 140 | 珂 x 141 | 蛆 x 142 | 晦 x 143 | 蛷 x 144 | 餽 x 145 | 珊 x 146 | 杭 x 147 | 小 y 148 | 坦 x 149 | 糅 x 150 | 身 y 151 | 弋 y 152 | 朽 y 153 | 到 y 154 | 蹐 x 155 | 予 y -------------------------------------------------------------------------------- /data/common4808.txt: -------------------------------------------------------------------------------- 1 | 一丁七三下丈上丑丐不丙世丕且丘丞丟並丫中串丸凡丹主乃久么之尹乍乏乎乒乓乖乘乙九也乞乩乳乾亂了予事二于云井互五亙些亞亟亡交亦亥亨享京亭亮人仁什仃仆仇仍今介仄以付仔仕他仗代令仙仞仿伉伙伊伕伍伐休伏仲件任仰仳份企位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉偺偽停假偃偌做偉健偶偎偕偵側偷偏倏傢傍傅備傑傀傖傘傭債傲傳僅傾催傷傻傯僧僮僥僖僭僚僕像僑僱億儀僻僵價儂儈儉儒儘儔儐優償儡儲儷儼兀元允充兄光兇兆先兌克兕免兔兒兗兜兢入內全兩八六兮公共兵具其典兼冀冉冊再冒冑冕最冗冠冤冥冢冬冰冶冷冽凍凌准凋凜凝几凰凱凳凶凹出凸函刀刁刃分切刈刊列刑划刎別判利刪刨刻券刷刺到刮制剁剎剃削前剌剋則剖剜剔剛剝剪副割剴創剩剿剷剽劃劇劈劉劍劑力加功劣劫助努劬劾勇勉勃勁勒務勘動勞勝勛募勦勤勢勵勸勻勾勿包匆匈匍匐匏匕化北匙匝匡匠匣匪匯匱匹匿區匾十千午升卅仟半卉卒協卓卑南博卜卞卡占卦卯卮印危即卵卷卸卹卻卿厄厚原厝厥厭厲去參又叉友及反取叔受叛叟曼叢口可古右召叮叩叨叼司叵叫另只史叱台句叭吉吏同吊吐吁吋各向名合吃后吆吒吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘮嘻嘹嘲嘿嘩噓噎噗噴嘶嘯嘰噙噫噹噩噤噸嘴噪器噥噱噯噬噢嚎嚀嚐嚅嚇嚏嚕嚮嚥嚨嚷嚶嚴嚼囁囀囂囈囊囉囌囑四囚因回囪困囤固圃圈國圍園圓團圖土圳地在圭圬圯坊坑址坍均坎圾坐坏垃坷坪坩坡坦坤坼垂型垠垣垢城垮埂埔埋埃域堅堊堆埠埤基堂堵執培堯堪場堤堰報堡塞塑塘塗塚塔填塌塭塊塢塵塾境墓墊塹墅墀墟增墳墜墮壁墾壇壅壕壓壑壙壘壞壟壢壤壩士壬壯壹壺壽夏夔夕外夙多夜夠夥夢夤大天夫太夭央失夷夸夾奉奇奈奄奔奕契奏奎奐套奘奚奢奠奧奪奩奮女奴奶妄奸妃好她如妁妝妒妨妞妣妙妖妍妤妓妊妥妾妻委妹妮姑姆姐姍始姓姊妯妳姒姜姘姿姣姨娃姥姪姚姦威姻娑娘娜娟娛娓姬娠娣娩娥娌娶婁婉婦婪婀娼婢婚婆婊婷媚婿媒媛嫁嫉嫌媾媽媼媳嫂媲嫡嫦嫩嫗嫖嫘嫣嬉嫻嬋嫵嬌嬝嬴嬰嬪嬤嬸孀子孑孓孔孕字存孝孜孚孟孤季孩孫孰孳孱孵學孺孽孿它宇守宅安完宋宏宗定官宜宙宛宣宦室客宥宰害家宴宮宵容宸寇寅寄寂宿密寒富寓寐寞寧寡寥實寨寢寤察寮寬審寫寵寶寸寺封射尉專將尊尋對導小少尖尚尤尬就尷尸尺尼局屁尿尾屈居屆屎屏屍屋屑展屐屠屜屢層履屬屯山屹岐岑岔岌岷岡岸岩岫岱岳峙峭峽峻峪峨峰島崁崇崆崎崛崖崢崑崩崔崙嵌嵐嵩嶄嶇嶝嶼嶺嶽巍巔巒巖川州巢工巨巧左巫差己已巳巴巷巽巾市布帆希帘帚帖帕帛帑帝帥席師常帶帳帷幅帽幀幌幛幣幕幗幔幢幟幫干平并年幸幹幻幼幽幾序庇床庚店府底庖庠度庫庭座康庸庶庵庾廊廁廂廉廈廓廖廢廚廟廝廣廠龐廬廳廷延建廿弁弄弈弊式弒弓弔引弘弗弛弟弦弧弩弭弱張強弼彆彈彌彎彗彙彝彤形彥彬彩彫彭彰影彷役往征彿彼很待徊律徇後徒徑徐得徙從徘御復循徨徬微徹德徵徽心必忙忖忘忌志忍忱快忝忠忽念忿怏怔怯怵怖怪怕怡性怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愚意慈感想愛惹愁愈慎慌慄慍愾愴愧慇愿態慷慢慣慟慚慘慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憲憑憩憊懍憶憾懂懊懈應懇懦懣懲懷懶懵懸懺懼懾懿戀戈戊戎戌戍成戒我或戕戚戛戟戡戢截戮戰戲戴戳戶房戾所扁扇扈扉手才扎打扔扒扣扛托抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎拜挖按拼拭持拮拽指拱拷拯括拾拴挑拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚搓搾搞搪搭搽搬搏搜搔損搶搖搗撇摘摔撤摸摟摺摑摧摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬擅擁擋撻撼據擄擇擂操撿擒擔擎擊擘擠擰擦擬擱擴擲擾攆擺擻攀攏攘攔攙攝攜攤攣攫攪攬支收改攻放政故效敝敖救教敗啟敏敘敞敦敢散敬敲敵敷數整斂斃文斑斐斗料斜斟斡斤斥斧斫斬斯新斷方於施旁旅族旋旌旎旗旖既日旦早旨旬旭旱旺昔易昌昆昂明昀昏春昭映昧是星昨時晉晏晃晒晌晝晚晤晨晦普晰晴晶景暑智暗暉暇暈暖暢暨暮暫暴曆曉暹曙曖曠曝曦曰曲曳更曷書曹勗曾替會月有服朋朔朕朗望期朝朦朧木朮本未末札朽朴朱朵束李杏材村杜杖杞杉杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚榔業楚楷楠楔極椰概楊楨楫楞楓楹榆榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌樣樟槨樁樞標槽模樓樊槳樂樅樽樸樺橙橫橘樹橄橢橡橋橇樵機檀檔檄檢檜櫛檳檬櫃檻檸櫂櫥櫝櫚櫓櫻欄權欖欠次欣欲款欺欽歇歉歌歐歙歟歡止正此步武歧歪歲歷歸歹死歿殃殆殊殉殘殖殤殮殯殲段殷殺殼毀殿毅毆毋母每毒毓比毗毛毫毯毽氏民氐氓氖氛氟氣氧氨氦氤氫氮氯氳水永汁汀氾求汝汗汙江池汐汕汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊泉泰洋洲洪流津洌洱洞洗活洽派洶洛浪涕消涇浦浸海浙涓浬涉浮浚浴浩涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘濂澱澡濃澤濁澧澳激澹濘濱濟濠濛濤濫濯澀濬濡瀉瀋濾瀆濺瀑瀏瀛瀟瀨瀚瀝瀕瀾瀰灌灑灘灣灤火灰灶灼災灸炕炎炒炊炙炫為炳炬炯炭炸炮烊烘烤烙烈烏烹焉焊烽焙焚焦焰無然煮煎煙煩煤煉照煜煬煦煌煥煞熔熙煽熊熄熟熬熱熨熾燉燐燒燈燕熹燎燙燜燃燄燧營燮燦燥燭燬燴燻爆爍爐爛爨爪爬爭爰爵父爸爹爺爻爽爾牆片版牌牒牖牘牙牛牟牝牢牡牠牧物牲牯牴特牽犁犄犀犒犖犛犢犧犬犯狄狂狀狎狙狗狐狩狠狡狼狹狽狸狷猜猛猖猓猙猶猥猴猩猷獅猿猾獄獐獎獗獨獰獲獷獵獸獺獻玀玄率王玉玖玩玨玟玫玷珊玻玲珍珀玳班琉珮珠琅琊球理現琍琺琪琳琢琥琵琶琴瑯瑚瑕瑟瑞瑁琿瑙瑛瑜瑤瑣瑪瑰瑩璋璃璜璣璩環璦璧璽瓊瓏瓜瓠瓢瓣瓦瓶瓷甄甌甕甘甚甜生產甥甦用甩甬甫甭田由甲申男甸甽畏界畔畝畜畚留略畦畢異畫番當畸疇疆疊疋疏疑疝疙疚疫疤疥疾病症疲疳疽疼疹痊痔痕疵痢痛痣痙痘痞瘀痰瘁痲痱痺痿痴瘧瘍瘋瘉瘓瘠瘩瘟瘤瘦瘡瘴瘸癆療癌癖癘癒癢癥癩癮癬癱癲癸登發白百皂的皆皇皈皎皖皓皚皮皰皴皺皿盂盈盆盃益盍盎盔盒盛盜盞盟盡監盤盧盥盪目盯盲直省盹相眉看盾盼眩真眠眨眷眾眼眶眸眺睏睛睫睦睞督睹睪睬睜睥睨瞄睽睿睡瞎瞇瞌瞑瞠瞞瞟瞥瞳瞪瞰瞬瞧瞭瞽瞿瞻矇矓矗矚矛矜矢矣知矩短矮矯石矽砂研砌砍砰砧砸砝破砷砥砭硫硃硝硬硯碎碰碗碘碌碉硼碑磁碟碧碳碩磋磅確磊碾磕碼磐磨磚磬磷磺磴磯礁礎礙礦礪礬礫示社祀祁祆祉祈祇祕祐祠祟祖神祝祗祚祥票祭祺祿禁禎福禍禦禧禪禮禱禹萬禽禾私秀禿秉科秒秋秤秣秧租秦秩移稍稈程稅稀稜稚稠稔稟種稱稿稼穀稽稷稻積穎穆穌穗穡穢穫穩穴究空穹穿突窄窈窒窕窘窗窖窟窠窪窩窯窮窺竄竅竇竊立站童竣竭端競竹竺竿竽笆笑笠笨笛第符笙笞等策筆筐筒答筍筋筏筷節筠管箕箋筵算箝箔箏箭箱範箴篆篇篁篙簑築篤篛篡篩簇簍篾篷簫簧簪簞簣簡簾簿簸簽簷籌籃籍籐籠籟籤籬籮籲米粉粒粗粟粥粱粳粵粹粽精糊糕糖糠糜糞糢糟糙糧糯糸系糾紂紅紀紉紇約紡紗紋紊素索純紐紕級紜納紙紛絆絃統紮紹紼絀細紳組累終絞結絨絕紫絮絲絡給絢經絹綑綁綏綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇締練緯緻緘緬緝編緣線緞緩綞縊縑縈縛縣縮績繆縷縲繃縫總縱繅繁織繕繞繚繡繫繭繹繩繪辮繽繼纂纏續纓纖纜缶缸缺缽罄罈罐罕罔罟置罩罪署罰罵罷罹羅羈羊羌羋美羔羞羚善義羨群羯羲羶羹羸羽羿翅翁翌翎習翔翕翠翡翟翩翰翱翳翼翹翻耀老考者耆而耐耍耒耘耕耙耗耜耳耶耽耿聊聆聖聘聞聚聱聲聰聯聳職聶聾聽聿肆肄肅肇肉肋肌肖肓肝肘肛肚育肺肥肢肱股肫肩肴肪肯胖胥胚胃胄背胡胛胎胞胤胱脂胰脅胭胴脆胸胳脈能脊脯脖脣脫脩腕腔腋腑腎脹腆脾腐腱腰腸腥腮腳腫腹腺腦膀膏膈膊腿膛膜膝膠膚膳膩膨臆臃膺臂臀膿膽臉膾臍臏臘臚臟臣臥臧臨自臭臬至致臺臻臼臾舀舂舅與興舉舊舌舍舐舒舔舛舜舞舟舢航舫舨般舵舷舶船艇艘艙艦艮良艱色艾芒芋芍芳芝芙芭芽芟芹花芬芥芻苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜蒂葷落萱葵葦葫葉葬葛萼萵葡董葩蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蕊蕙蕈蕨蕩蕃蕉蕭蕪薪薄蕾薜薑薔薯薛薇藏薩藍藐藉薰藩藝藪藕藤藥藻藹蘑藺蘆蘋蘇蘊蘗蘭蘚蘸蘿虎虐虔處彪虛虜虞號虧虫虱虹蚊蚪蚓蚤蚩蚌蚣蛇蛀蚶蛄蚵蛆蛋蚱蚯蛟蛙蛭蛔蛛蛤蛹蜓蜈蜇蜀蛾蛻蜂蜃蜿蜜蜻蜢蜥蜴蜘蝕螂蝴蝶蝠蝦蝸蝨蝙蝗蝌螃螟螞螢融蟀蟑螳蟒蟆螫螻螺蟈蟋蟯蟬蟲蟻蠅蠍蟹蠔蠕蠣蠢蠡蠟蠱蠶蠹蠻血行衍術街衙衛衝衡衢衣初表衫衰衷袁袂袞袈被袒袖袍袋裁裂袱裟裔裙補裘裝裡裊裕裳褂裴裹裸製裨褚褐複褒褓褪褲褥褫褻褶襄褸襠襟襖襤襪襲襯西要覃覆見覓規視親覦覬覲覺覽觀角解觴觸言計訂訃記訐討訌訕訊託訓訖訪訝訣訥許設訟訛註詠評詞証詁詔詛詐詆訴診詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹誦誌語誣認誡誓誤說誥誨誘誑誼諒談諄誕請諸課諉諂調誰論諍諦諺諫諱謀諜諧諮諾謁謂諷諭謎謗謙講謊謠謝謄謨謹謬譁譜識證譚譎譏議譬警譯譴護譽讀變讓讒讖讚谷豁谿豆豈豉豌豎豐豔豕豚象豢豪豬豫豺豹貂貊貉貍貌貓貝貞負財貢販責貫貨貪貧貯貼貳貽賁費賀貴買貶貿貸賊資賈賄貲賃賂賅賓賑賒賠賞賦賤賬賭賢賣賜質賴賺賽購贅贈贊贏贍贓贖贗贛赤赧赦赫赭走赴赳起越超趁趙趕趟趣趨足趴趾跎距跋跚跑跌跛跆跡跟跨路跳跺跪跼踫踐踝踢踏踩踟蹄踱踴蹂踹踵蹉蹋蹈蹊蹙蹣蹦蹤蹼蹲躇蹶蹬蹺躉躁躅躂躊躍躑躡躪身躬躲躺軀車軋軍軌軒軔軛軟軻軸軼較載軾輊輔輒輕輓輝輛輟輩輦輪輜輻輯輸轄輾轂轅輿轉轍轔轎轟轡辛辜辟辣辨辦辭辯辰辱農迂迆迅迄巡迎返近述迦迢迪迥迭迫送逆迷退迺迴逃追逅這逍通逗連速逝逐逕逞造透逢逖逛途逮逵週逸進運遊道遂達逼違遐遇遏過遍遑逾遁遠遘遜遣遙遞適遮遨遭遷遵遴選遲遼遺避遽還邁邂邀邇邊邐邏邑邕邢邪邦那邵邸邱郊郎郁郡部郭都鄂郵鄉鄒鄙鄰鄭鄧鄱鄹酉酋酊酒配酌酗酣酥酬酪酩酵酸酷醇醉醋醃醒醣醞醜醫醬醺釀釁采釉釋里重野量釐金釘針釗釜釵釦釣釧鈔鈣鈕鈉鈞鈍鈐鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉸銬銀銅銘銖鉻銓銜鋅銻銷鋪鋤鋁銳銼鋒錠錶鋸錳錯錢鋼錫錄錚錐錦鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鎔鎊鎖鎢鎳鎮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鐘鐃鏽鐮鐳鐵鐺鐸鐲鑄鑑鑒鑣鑠鑲鑰鑽鑾鑼鑿長門閂閃閉閔閏開閑間閒閘閡閨閩閣閥閤閭閱閻闊闋闌闈闆闔闖闐關闡闢阜阡防阮阱阪陀阿阻附限陋陌降院陣陡陛陝除陪陵陳陸陰陴陶陷隊階隋陽隅隆隍陲隘隔隕隙障際隧隨險隱隴隸隻雀雁雅雄雋集雇雍雉雌雕雖雜雙雛雞離難雨雪雯雲雷電雹零需霄霆震霉霎霑霖霍霓霏霜霞霪霧霸霹露霽霾靂靈靄青靖靛靜非靠靡面靦靨革靴靶靼鞅鞍鞋鞏鞘鞠鞣鞦鞭韃韁韆韋韌韓韜韭音章竟韶韻響頁頂頃項順須預頑頓頊頒頌頗領頡頰頸頻頷頭頹頤顆額顏題顎顓類願顛顧顫顯顰顱風颯颱颳颶颺颼飄飛食飢飧飪飯飩飲飭飼飴飽飾餃餅餌餉養餓餒餘餐館餞餛餡餵餾餿餽饅饒饑饜饞首香馥馨馬馮馭馳馱馴駁駝駐駟駛駑駕駒駙駭駢駱騁駿騎騖騙騫騰騷驅驃驀騾驕驚驛驗驟驢驥驪骨骯骰骷骸骼髏髒髓體高髦髮髯髻髭鬃鬆鬍鬚鬢鬥鬧鬨鬱鬲鬼魁魂魅魄魏魔魘魚魷魯鮑鮮鮫鮪鯊鯉鯽鯨鯧鰓鰍鰭鰥鱉鰱鰾鰻鱔鱗鱖鱷鱸鳥鳩鳴鳶鳳鴆鴉鴕鴣鴦鴨鴒鴛鴻鴿鵑鵝鵠鶉鵡鵲鵪鵬鶯鶴鷂鷓鷗鷥鷹鷺鸚鸞鹹鹼鹽鹿麂麋麒麗麓麝麟麥麩麴麵麻麼麾黃黍黎黏黑墨默黔點黜黝黛黠黨黯黴黷鼇鼎鼓鼕鼙鼠鼬鼴鼻鼾齊齋齒齟齣齡齜齦齬齪齷齲龍龔龜 -------------------------------------------------------------------------------- /data/lorem.txt: -------------------------------------------------------------------------------- 1 | 夫道者。覆天載地。廓四方。柝八極。高不可際。深不可測。包裹天地。稟授無形。原流泉浡。沖而徐盈。混混滑滑。濁而徐清。故植之而塞於天地。橫之而彌于四海。施之無窮。而無所朝夕。舒之冥於六合。卷之不盈於一握。約而能張。幽而能明。弱而能強。柔而能剛。橫四維而含陰陽。紘宇宙而章三光。甚淖而滒。甚纖而微。山以之高。淵以之深。獸以之走。鳥以之飛。日月以之明。星曆以之行。麟以之遊。鳳以之翔。泰古二皇。得道之柄。立於中央。神與化遊。以撫四方。是故能天運地滯。轉輪而無廢。水流而不止。與萬物終始。風興雲蒸。事無不應。雷聲雨降。並應無窮。鬼出電入。龍興鸞集。鈞旋轂轉。周而複匝。已雕已琢。還反于朴。無、為、為、之、而、合、于、道。無、為、言、之、而、通、乎、德。恬愉無矜而得於和。有萬不同而便於性。神托於秋豪之末。而大宇宙之總。其德優天地而和陰陽。節四時而調五行。呴諭覆育。萬物群生。潤於草木。浸于金石。禽獸碩大。豪毛潤澤。羽翼奮也。角觡生也。獸胎不贕。鳥卵不毈。父無喪子之憂。兄無哭弟之哀。童子不孤。婦人不孀。虹蜺不出。賊星不行。含德之所致也。夫太上之道。生萬物而不有。成化像而弗宰。跂行喙息。蠉飛蠕動。待而後生。莫之知德。待之後死。莫之能怨。得以利者不能譽。用而敗者不能非。收聚畜積而不加富。佈施稟授而不益貧。旋縣而不可究。纖微而不可勤。累之而不高。墮之而不下。益之而不眾。損之而不寡。斫之而不薄。殺之而不殘。鑿之而不深。填之而不淺。忽兮怳兮。不可為象兮。怳兮忽兮。用不屈兮。幽兮冥兮。應無形兮。遂兮洞兮。不虛動兮。與剛柔卷舒兮。與陰陽俯仰兮。 2 | 3 | 秋風吹地百草乾。華容碧影生晚寒。我當二十不得意。一心愁謝如枯蘭。衣如飛鶉馬如狗。臨、歧、擊、劍、生、銅、吼。旗亭下馬解秋衣。請貰宜陽一壺酒。壺中喚天雲不開。白晝萬里閑淒迷。主人勸我養心骨。莫受俗物相填豗。漆灰骨末丹水沙。 4 | 淒、淒、古、血、生、銅、花。白翎金簳雨中盡。直餘三脊殘狼牙。我尋平原乘兩馬。驛東石田蒿塢下。風長日短星蕭蕭。黑旗雲溼懸空夜。左魂右魄啼肌瘦。酪瓶倒盡將羊炙。蟲棲雁病蘆筍紅。廻風送客吹陰火。訪古汍瀾收斷鏃。折鋒赤璺曾刲肉。南陌東城馬上兒。勸我將金換簝竹。 5 | 北虜膠堪折。秋沙亂曉鼙。髯胡頻犯塞。驕氣似橫霓。灞水樓船渡。營門細柳開。將軍馳白馬。豪彥騁雄材。箭射攙搶落。旗懸日月低。榆稀山易見。甲重馬頻嘶。天遠星光沒。沙平草葉齊。風吹雲路火。雪汙玉關泥。屢斷呼韓頸。曾然董卓臍。太常猶舊寵。光祿是新隮。寳玦麒麟起。銀壺狒狖啼。桃花連馬發。綵絮撲鞍來。呵臂懸金斗。當脣注玉罍。清蘇和碎蟻。紫膩卷浮杯。虎鞹先蒙馬。魚腸且斷犀。䟃𧽼西旅狗。蹙額北方奚。守帳然香暮。看鷹永夜棲。黃龍就別鏡。青塚念陽臺。周處長橋役。侯調短弄哀。錢塘階鳳羽。正室擘鸞釵。內子攀琪樹。羌。兒。奏。落。梅。今朝擎劍去。何日刺蛟廻。 6 | 7 | 茂陵劉郎秋風客。夜聞馬嘶曉無跡。畫欄桂樹懸秋香。三十六宮土花碧。魏官牽車指千里。東關酸風射眸子。空將漢月出宮門。憶君清淚如鉛水。衰蘭送客咸陽道。天若有情天亦老。攜盤獨出月荒涼。渭城已遠波聲小。 8 | 老兔寒蟾泣天色。雲樓半開壁斜白。玉輪軋露濕團光。鸞珮相逢桂香陌。黃塵清水三山下。更變千年如走馬。遙望齊州九點菸。一泓海水杯中瀉。 9 | 琉璃鍾。琥珀濃。小槽酒滴真珠紅。烹龍炮鳳玉脂泣。羅幃繡幕圍香風。吹龍笛。擊鼉鼓。皓齒歌。細腰舞。況是青春日將暮。桃花亂落如紅雨。勸君終日酩酊醉。酒不到劉伶墳上土。 10 | 吳絲蜀桐張高秋。空、山、凝、雲、頹、不、流。江娥啼竹素女愁。李憑中國彈箜篌。崑山玉碎鳳凰叫。芙蓉泣露香蘭笑。十二門前融冷光。二十三絲動紫皇。女媧煉石補天處。石破天驚逗秋雨。夢入神山教神嫗。老魚跳波瘦蛟舞。吳質不眠倚桂樹。露腳斜飛溼寒兔。 11 | 黑、雲、壓、城、城、欲、摧。甲光向日金鱗開。角聲滿天秋色裏。塞上燕脂凝夜紫。半卷紅旗臨易水。霜重鼓寒聲不起。報君黃金臺上意。提攜玉龍爲君死。 12 | 13 | 古之用兵者。非利土壤之廣而貪金玉之略。將以存亡繼絕。平天下之亂。而除萬民之害也。凡有血氣之蟲。含牙帶角。前爪後距。有角者觸。有齒者噬。有毒者螫。有蹄者趹。喜而相戲。怒而相害。天之性也。人有衣食之情。而物弗能足也。故群居雜處。分不均。求不澹。則爭。爭。則強脅弱。而勇侵怯。人無筋骨之強。爪牙之利。故割革而為甲。鑠鐵而為刃。貪昧饕餮之人。殘賊天下。萬人搔動。莫寧其所。有聖人勃然而起。乃討強暴。平亂世。夷險除穢。以濁為清。以危為寧。故不得不中絕。兵之所由來者遠矣。黃帝嘗與炎帝戰矣。顓頊嘗與共工爭矣。故黃帝戰于涿鹿之野。堯戰于丹水之浦。舜伐有苗。啟攻有扈。自五帝而弗能偃也。又況衰世乎。 14 | 夫兵者。所以禁暴討亂也。炎帝為火災。故黃帝禽之。共工為水害。故顓頊誅之。教之以道。導之以德而不聽。則臨之以威武。臨之威武而不從。則制之以兵革。故聖人之用兵也。若櫛發耨苗。所去者少。而所利者多。殺無辜之民。而養無義之君。害莫大焉。殫天下之財。而澹一人之欲。禍莫深焉。使夏桀、殷紂有害於民而立被其患。不至於為炮烙。晉厲、宋康行一不義而身死國亡。不至於侵奪為暴。此四君者。皆有小過而莫之討也。故至於攘天下。害百姓。肆一人之邪。而長海內之禍。此大倫之所不取也。所為立君者。以禁暴討亂也。今乘萬民之力。而反為殘賊。是為虎傅翼。曷為弗除。夫畜池魚者必去猵獺。養禽獸者必去豺狼。又況治人乎。 15 | 故霸王之兵。以論慮之。以策圖之。以義扶之。非以亡存也。將以存亡也。故聞敵國之君。有加虐於民者。則舉兵而臨其境。責之以不義。刺之以過行。兵至其郊。乃令軍師曰。毋伐樹木。毋抉墳墓。毋燒五穀。毋焚積聚。毋捕民虜。毋收六畜。乃發號施令曰。其國之君。傲天悔鬼。決獄不辜。殺戮無罪。此天之所以誅也。民之所以仇也。兵之來也。以廢不義而複有德也。有逆天之道。帥民之賊者。身死族滅。以家聽者。祿以家。以里聽者。賞以里。以鄉聽者。封以鄉。以縣聽者。侯以縣。克國不及其民。廢其君而易其政。尊其秀士而顯其賢良。振其孤寡。恤其貧窮。出其囹圄。賞其有功。百姓開門而待之。淅米而儲之。唯恐其不來也。此湯、武之所以致王。而齊桓之所以成霸也。故君為無道。民之思兵也。若旱而望雨。渴而求飲。夫有誰與交兵接刃乎。故義兵之至也。至於不戰而止。 16 | 晚世之兵。君雖無道。莫不設渠塹。傅堞而守。攻者非以禁暴除害也。欲以侵地廣壤也。是故至於伏尸流血。相支以日。而霸王之功不世出者。自為之故也。夫為地戰者。不能成其王。為身戰者。不能立其功。舉事以為人者。眾助之。舉事以自為者。眾去之。眾之所助。雖弱必強。眾之所去。雖大必亡。兵失道而弱。得道而強。將失道而拙。得道而工。國得道而存。失道而亡。所謂道者。體圓而法方。背陰而抱陽。左柔而右剛。履幽而戴明。變化無常。得一之原。以應無方。是謂神明。 17 | 夫圓者。天也。方者。地也。天圓而無端。故不可得而觀。地方而無垠。故莫能窺其門。天化育而無形象。地生長而無計量。渾渾沉沉。孰知其藏。凡物有朕。唯道無朕。所以無朕者。以其無常形勢也。輪轉而無窮。象日月之運行。若春秋有代謝。若日月有晝夜。終而複始。明而複晦。莫能得其紀。制刑而無刑。故功可成。物物而不物。故勝而不屈。刑。兵之極也。至於無刑。可謂極之矣。是故大兵無創。與鬼神通。五兵不厲。天下莫之敢當。建鼓不出庫。諸侯莫不慴㥄沮膽其處。故廟戰者帝。神化者王。所謂廟戰者。法天道也。神化者。法四時也。修政于境內。而遠方慕其德。制勝于未戰。而諸侯服其威。內政治也。 18 | 古得道者。靜而法天地。動而順日月。喜怒而合四時。叫呼而比雷霆。音氣不戾八風。詘伸不獲五度。下至介鱗。上及毛羽。條修葉貫。萬物百族。由本至末。莫不有序。是故入小而不逼。處大而不窕。浸乎金石。潤乎草木。宇中六合。振豪之末。莫不順比。道之浸洽。滒淖纖微。無所不在。是以勝權多也。 19 | 20 | 桓公讀書於堂。輪扁斫輪於堂下。釋其椎鑿。而問桓公曰。君之所讀者。何書也?桓公曰。聖人之書。輪扁曰。其人焉在。桓公曰。已死矣。輪扁曰。是直聖人之糟粕耳。桓公曰悖然作色而怒曰。寡人讀書。工人焉得而譏之哉。有說則可。無說則死。輪扁曰。然。有說。臣試以臣之斫輪語之。大疾則苦而不入。大徐則甘而不固。不甘不苦。應於手。厭於心。而可以至妙者。臣不能以教臣之子。而臣之子亦不能得之於臣。是以行年七十。老而為輪。今聖人之所言者。亦以懷其實。窮而死。獨其糟粕在耳。故老子曰。道可道。非常道。名可名。非常名。 21 | 王壽負書而行。見徐馮于周。徐馮曰。事者。應變而動。變生於時。故知時者無常行。書者。言之所出也。言出於知者。知者藏書。於是王壽乃焚書而舞之。故老子曰。多言數窮。不如守中。 22 | 魯國之法。魯人為人妾于諸侯。有能贖之者。取金於府。子贛贖魯人于諸侯。來而辭不受金。孔子曰。賜失之矣。夫聖人之舉事也。可以移風易俗。而受教順可施後世。非獨以適身之行也。今國之富者寡而貧者眾。贖而受金。則為不廉。不受金。則不復贖人。自今以來。魯人不復贖人于諸侯矣。孔子亦可謂知禮矣。故老子曰。見小曰明。 23 | 24 | 古者包犧氏之王天下也。仰則觀象於天。俯則觀法於地。觀鳥獸之文。與地之宜。近取諸身。遠取諸物。於是始作八卦。以通神明之德。以類萬物之情。作結繩而為罔罟。以佃以漁。蓋取諸離。包犧氏沒。神農氏作。斫木為耜。揉木為耒。耒耨之利。以教天下。蓋取諸益。日中為市。致天下之民。聚天下之貨。交易而退。各得其所。蓋取諸噬嗑。神農氏沒。黃帝。堯。舜氏作。通其變。使民不倦。神而化之。使民宜之。易窮則變。變則通。通則久。是以自天祐之。吉无不利。黃帝。堯。舜垂衣裳而天下治。蓋取諸乾坤。刳木為舟。剡木為楫。舟楫之利。以濟不通。致遠以利天下。蓋取諸渙。服牛乘馬。引重致遠。以利天下。蓋取諸隨。重門擊柝。以待暴客。蓋取諸豫。斷木為杵。掘地為臼。臼杵之利。萬民以濟。蓋取諸小過。弦木為弧。剡木為矢。弧矢之利。以威天下。蓋取諸睽。上古穴居而野處。後世聖人易之以宮室。上棟下宇。以待風雨。蓋取諸大壯。古之葬者。厚衣之以薪。葬之中野。不封不樹。喪期无數。後世聖人易之以棺槨。蓋取諸大過。上古結繩而治。後世聖人易之以書契。百官以治。萬民以察。蓋取諸夬。 25 | 26 | 夫唐虞之世。結繩而足治。屈指而足算。是時豈料百代之後。計算機械之巧。精於公輸之木鳶。善於武侯之流馬。程式語言之多。繁若天官之星宿。奇勝山經之走獸。鼠蟹鑽魚。或以速稱。蛇象駱犀。各爭文采。方知鬼之所以夜哭。天之所以雨粟。然以文言編程者。似所未有。此誠非文脈之所以傳。文心之所以保。嗟予小子。遂有斯志。然則數寸之烏絲猶覆於頭。萬卷之素書未破於手。一身長羈於遠邦。兩耳久曠于雅言。然夫文章者吾之所宿好程。式者偶承時人之謬譽。故希孟不慚年少。莊生不望無涯。乃作斯言。誠未能嘔瀝長吉之心血。亦庶幾免於義山之流沫。既成之後。復學干將鑄劍而自飼。越王嚐糞而當先。自謂偶追十書之筆意。但恨少八家之淋漓。此子山所謂士衡撫掌而甘心。平子見陋而固宜。然則雖實覆甕之質。尚存斧正之望。雖乏呂相之金。易字之渴蓋同。此亦開源之大義。吾輩之所以勉勵也。一笑。 -------------------------------------------------------------------------------- /data/manual_shift.txt: -------------------------------------------------------------------------------- 1 | -H73-3758_4221_239_198 0 -15 0 0 2 | -H131-5174_2770_234_195 0 0 0 0 3 | -H14-3140_3806_242_199 0 28 0 0 4 | -H240-3797_4332_236_195 0 -20 0 0 5 | -H408-2288_2919_234_192 0 -10 0 0 6 | -70-3198_1171_224_205 0 0 0 0 7 | -H285-4653_3318_231_191 0 -5 0 0 x 8 | -113-2278_3914_226_209 -20 0 0 0 -------------------------------------------------------------------------------- /data/ocr_crashers.txt: -------------------------------------------------------------------------------- 1 | -24-612_1566_224_204.png 2 | -67-2606_1162_223_206.png 3 | -64-4192_1628_217_200.png 4 | -65-1621_3193_222_208.png 5 | -88-1527_2122_216_205.png 6 | -65-310_1525_222_208.png 7 | -43-1298_3384_222_199.png 8 | -23-4857_2629_222_203.png 9 | -6-5533_2964_221_200.png 10 | -69-3222_3847_223_207.png 11 | -67-2278_1989_223_206.png 12 | -67-4185_2160_220_207.png 13 | -100-3183_3599_221_211.png 14 | -88-4192_4479_224_208.png 15 | -56-4248_4337_216_196.png 16 | -104-1288_3419_223_206.png 17 | -3-2500_1724_217_200.png 18 | -56-3610_1988_216_196.png 19 | -71-632_2426_224_205.png 20 | -12-4847_1409_221_200.pn -------------------------------------------------------------------------------- /data/rects/1.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/1.tsv -------------------------------------------------------------------------------- /data/rects/119.tsv: -------------------------------------------------------------------------------- 1 | 3153 998 235 213 2 | 3500 998 235 213 3 | 3847 998 235 213 4 | 4194 998 235 213 5 | 4541 998 235 213 6 | 4888 998 235 213 7 | 5235 998 235 213 8 | 5582 998 235 213 9 | 3156 1211 235 213 10 | 3503 1211 235 213 11 | 3850 1211 235 213 12 | 4197 1211 235 213 13 | 4544 1211 235 213 14 | 4891 1211 235 213 15 | 5238 1211 235 213 16 | 5585 1211 235 213 17 | 3159 1425 235 213 18 | 3506 1425 235 213 19 | 3853 1425 235 213 20 | 4200 1425 235 213 21 | 4547 1425 235 213 22 | 4894 1425 235 213 23 | 5241 1425 235 213 24 | 5588 1425 235 213 25 | 3163 1639 235 213 26 | 3510 1639 235 213 27 | 3857 1639 235 213 28 | 4204 1639 235 213 29 | 4551 1639 235 213 30 | 4898 1639 235 213 31 | 5245 1639 235 213 32 | 5592 1639 235 213 33 | 3166 1852 235 213 34 | 3513 1852 235 213 35 | 3860 1852 235 213 36 | 4207 1852 235 213 37 | 4554 1852 235 213 38 | 4901 1852 235 213 39 | 5248 1852 235 213 40 | 5595 1852 235 213 41 | 3169 2066 235 213 42 | 3516 2066 235 213 43 | 3863 2066 235 213 44 | 4210 2066 235 213 45 | 4557 2066 235 213 46 | 4904 2066 235 213 47 | 5251 2066 235 213 48 | 5598 2066 235 213 49 | 3172 2280 235 213 50 | 3519 2280 235 213 51 | 3866 2280 235 213 52 | 4213 2280 235 213 53 | 4560 2280 235 213 54 | 4907 2280 235 213 55 | 5254 2280 235 213 56 | 5601 2280 235 213 57 | 3175 2493 235 213 58 | 3522 2493 235 213 59 | 3869 2493 235 213 60 | 4216 2493 235 213 61 | 4563 2493 235 213 62 | 4910 2493 235 213 63 | 5257 2493 235 213 64 | 5604 2493 235 213 65 | 3179 2707 235 213 66 | 3526 2707 235 213 67 | 3873 2707 235 213 68 | 4220 2707 235 213 69 | 4567 2707 235 213 70 | 4914 2707 235 213 71 | 5261 2707 235 213 72 | 5608 2707 235 213 73 | 3182 2921 235 213 74 | 3529 2921 235 213 75 | 3876 2921 235 213 76 | 4223 2921 235 213 77 | 4570 2921 235 213 78 | 4917 2921 235 213 79 | 5264 2921 235 213 80 | 5611 2921 235 213 81 | 3185 3134 235 213 82 | 3532 3134 235 213 83 | 3879 3134 235 213 84 | 4226 3134 235 213 85 | 4573 3134 235 213 86 | 4920 3134 235 213 87 | 5267 3134 235 213 88 | 5614 3134 235 213 89 | 3188 3348 235 213 90 | 3535 3348 235 213 91 | 3882 3348 235 213 92 | 4229 3348 235 213 93 | 4576 3348 235 213 94 | 4923 3348 235 213 95 | 5270 3348 235 213 96 | 5617 3348 235 213 97 | 3191 3562 235 213 98 | 3538 3562 235 213 99 | 3885 3562 235 213 100 | 4232 3562 235 213 101 | 4579 3562 235 213 102 | 4926 3562 235 213 103 | 5273 3562 235 213 104 | 5620 3562 235 213 105 | 3195 3775 235 213 106 | 3542 3775 235 213 107 | 3889 3775 235 213 108 | 4236 3775 235 213 109 | 4583 3775 235 213 110 | 4930 3775 235 213 111 | 5277 3775 235 213 112 | 5624 3775 235 213 113 | 3198 3989 235 213 114 | 3545 3989 235 213 115 | 3892 3989 235 213 116 | 4239 3989 235 213 117 | 4586 3989 235 213 118 | 4933 3989 235 213 119 | 5280 3989 235 213 120 | 5627 3989 235 213 121 | 3201 4203 235 213 122 | 3548 4203 235 213 123 | 3895 4203 235 213 124 | 4242 4203 235 213 125 | 4589 4203 235 213 126 | 4936 4203 235 213 127 | 5283 4203 235 213 128 | 5630 4203 235 213 129 | 3204 4416 235 213 130 | 3551 4416 235 213 131 | 3898 4416 235 213 132 | 4245 4416 235 213 133 | 4592 4416 235 213 134 | 4939 4416 235 213 135 | 5286 4416 235 213 136 | 5633 4416 235 213 137 | 3207 4630 235 213 138 | 3554 4630 235 213 139 | 3901 4630 235 213 140 | 4248 4630 235 213 141 | 4595 4630 235 213 142 | 4942 4630 235 213 143 | 5289 4630 235 213 144 | 5636 4630 235 213 145 | 3211 4844 235 213 146 | 3558 4844 235 213 147 | 3905 4844 235 213 148 | 4252 4844 235 213 149 | 4599 4844 235 213 150 | 4946 4844 235 213 151 | 5293 4844 235 213 152 | 5640 4844 235 213 153 | 0 0 0 0 154 | 0 0 0 0 155 | 0 0 0 0 156 | 0 0 0 0 157 | 0 0 0 0 158 | 0 0 0 0 159 | 0 0 0 0 160 | 0 0 0 0 161 | 0 0 0 0 162 | 0 0 0 0 163 | 0 0 0 0 164 | 0 0 0 0 165 | 0 0 0 0 166 | 0 0 0 0 167 | 0 0 0 0 168 | 0 0 0 0 169 | 0 0 0 0 170 | 0 0 0 0 171 | 0 0 0 0 172 | 0 0 0 0 173 | 0 0 0 0 174 | 0 0 0 0 175 | 0 0 0 0 176 | 0 0 0 0 177 | 0 0 0 0 178 | 0 0 0 0 179 | 0 0 0 0 180 | 0 0 0 0 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/120.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/120.tsv -------------------------------------------------------------------------------- /data/rects/121.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/121.tsv -------------------------------------------------------------------------------- /data/rects/2.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/2.tsv -------------------------------------------------------------------------------- /data/rects/26.tsv: -------------------------------------------------------------------------------- 1 | 3215 942 219 205 2 | 3538 942 219 205 3 | 3860 942 219 205 4 | 4183 942 219 205 5 | 4505 942 219 205 6 | 4828 942 219 205 7 | 5150 942 219 205 8 | 5473 942 219 205 9 | 3213 1147 219 205 10 | 3536 1147 219 205 11 | 3858 1147 219 205 12 | 4181 1147 219 205 13 | 4503 1147 219 205 14 | 4826 1147 219 205 15 | 5148 1147 219 205 16 | 5471 1147 219 205 17 | 3211 1353 219 205 18 | 3534 1353 219 205 19 | 3856 1353 219 205 20 | 4179 1353 219 205 21 | 4501 1353 219 205 22 | 4824 1353 219 205 23 | 5146 1353 219 205 24 | 5469 1353 219 205 25 | 3209 1559 219 205 26 | 3532 1559 219 205 27 | 3854 1559 219 205 28 | 4177 1559 219 205 29 | 4499 1559 219 205 30 | 4822 1559 219 205 31 | 5144 1559 219 205 32 | 5467 1559 219 205 33 | 3207 1765 219 205 34 | 3530 1765 219 205 35 | 3852 1765 219 205 36 | 4175 1765 219 205 37 | 4497 1765 219 205 38 | 4820 1765 219 205 39 | 5142 1765 219 205 40 | 5465 1765 219 205 41 | 3205 1971 219 205 42 | 3528 1971 219 205 43 | 3850 1971 219 205 44 | 4173 1971 219 205 45 | 4495 1971 219 205 46 | 4818 1971 219 205 47 | 5140 1971 219 205 48 | 5463 1971 219 205 49 | 3203 2177 219 205 50 | 3526 2177 219 205 51 | 3848 2177 219 205 52 | 4171 2177 219 205 53 | 4493 2177 219 205 54 | 4816 2177 219 205 55 | 5138 2177 219 205 56 | 5461 2177 219 205 57 | 3201 2383 219 205 58 | 3524 2383 219 205 59 | 3846 2383 219 205 60 | 4169 2383 219 205 61 | 4491 2383 219 205 62 | 4814 2383 219 205 63 | 5136 2383 219 205 64 | 5459 2383 219 205 65 | 3199 2589 219 205 66 | 3522 2589 219 205 67 | 3844 2589 219 205 68 | 4167 2589 219 205 69 | 4489 2589 219 205 70 | 4812 2589 219 205 71 | 5134 2589 219 205 72 | 5457 2589 219 205 73 | 3197 2795 219 205 74 | 3520 2795 219 205 75 | 3842 2795 219 205 76 | 4165 2795 219 205 77 | 4487 2795 219 205 78 | 4810 2795 219 205 79 | 5132 2795 219 205 80 | 5455 2795 219 205 81 | 3195 3000 219 205 82 | 3518 3000 219 205 83 | 3840 3000 219 205 84 | 4163 3000 219 205 85 | 4485 3000 219 205 86 | 4808 3000 219 205 87 | 5130 3000 219 205 88 | 5453 3000 219 205 89 | 3193 3206 219 205 90 | 3516 3206 219 205 91 | 3838 3206 219 205 92 | 4161 3206 219 205 93 | 4483 3206 219 205 94 | 4806 3206 219 205 95 | 5128 3206 219 205 96 | 5451 3206 219 205 97 | 3191 3412 219 205 98 | 3514 3412 219 205 99 | 3836 3412 219 205 100 | 4159 3412 219 205 101 | 4481 3412 219 205 102 | 4804 3412 219 205 103 | 5126 3412 219 205 104 | 5449 3412 219 205 105 | 3189 3618 219 205 106 | 3512 3618 219 205 107 | 3834 3618 219 205 108 | 4157 3618 219 205 109 | 4479 3618 219 205 110 | 4802 3618 219 205 111 | 5124 3618 219 205 112 | 5447 3618 219 205 113 | 3187 3824 219 205 114 | 3510 3824 219 205 115 | 3832 3824 219 205 116 | 4155 3824 219 205 117 | 4477 3824 219 205 118 | 4800 3824 219 205 119 | 5122 3824 219 205 120 | 5445 3824 219 205 121 | 3185 4030 219 205 122 | 3508 4030 219 205 123 | 3830 4030 219 205 124 | 4153 4030 219 205 125 | 4475 4030 219 205 126 | 4798 4030 219 205 127 | 5120 4030 219 205 128 | 5443 4030 219 205 129 | 3183 4236 219 205 130 | 3506 4236 219 205 131 | 3828 4236 219 205 132 | 4151 4236 219 205 133 | 4473 4236 219 205 134 | 4796 4236 219 205 135 | 5118 4236 219 205 136 | 5441 4236 219 205 137 | 3181 4442 219 205 138 | 3504 4442 219 205 139 | 3826 4442 219 205 140 | 4149 4442 219 205 141 | 4471 4442 219 205 142 | 4794 4442 219 205 143 | 5116 4442 219 205 144 | 5439 4442 219 205 145 | 3179 4648 219 205 146 | 3502 4648 219 205 147 | 3824 4648 219 205 148 | 4147 4648 219 205 149 | 4469 4648 219 205 150 | 4792 4648 219 205 151 | 5114 4648 219 205 152 | 5437 4648 219 205 153 | 0 0 0 0 154 | 0 0 0 0 155 | 0 0 0 0 156 | 0 0 0 0 157 | 0 0 0 0 158 | 0 0 0 0 159 | 0 0 0 0 160 | 0 0 0 0 161 | 0 0 0 0 162 | 0 0 0 0 163 | 0 0 0 0 164 | 0 0 0 0 165 | 0 0 0 0 166 | 0 0 0 0 167 | 0 0 0 0 168 | 0 0 0 0 169 | 0 0 0 0 170 | 0 0 0 0 171 | 0 0 0 0 172 | 0 0 0 0 173 | 0 0 0 0 174 | 0 0 0 0 175 | 0 0 0 0 176 | 0 0 0 0 177 | 0 0 0 0 178 | 0 0 0 0 179 | 0 0 0 0 180 | 0 0 0 0 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/27.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/27.tsv -------------------------------------------------------------------------------- /data/rects/28.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/28.tsv -------------------------------------------------------------------------------- /data/rects/29.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/29.tsv -------------------------------------------------------------------------------- /data/rects/3.tsv: -------------------------------------------------------------------------------- 1 | 263 922 217 200 2 | 583 922 217 200 3 | 903 922 217 200 4 | 1223 923 217 200 5 | 1544 923 217 200 6 | 1864 924 217 200 7 | 2184 924 217 200 8 | 2504 924 217 200 9 | 262 1122 217 200 10 | 582 1122 217 200 11 | 902 1122 217 200 12 | 1222 1123 217 200 13 | 1543 1123 217 200 14 | 1863 1124 217 200 15 | 2183 1124 217 200 16 | 2503 1124 217 200 17 | 260 1322 217 200 18 | 581 1322 217 200 19 | 901 1322 217 200 20 | 1221 1323 217 200 21 | 1541 1323 217 200 22 | 1862 1324 217 200 23 | 2182 1324 217 200 24 | 2502 1324 217 200 25 | 259 1522 217 200 26 | 579 1522 217 200 27 | 900 1522 217 200 28 | 1220 1523 217 200 29 | 1540 1523 217 200 30 | 1860 1524 217 200 31 | 2181 1524 217 200 32 | 2501 1524 217 200 33 | 258 1722 217 200 34 | 578 1722 217 200 35 | 898 1722 217 200 36 | 1219 1723 217 200 37 | 1539 1723 217 200 38 | 1859 1724 217 200 39 | 2179 1724 217 200 40 | 2500 1724 217 200 41 | 257 1922 217 200 42 | 577 1922 217 200 43 | 897 1922 217 200 44 | 1217 1923 217 200 45 | 1538 1923 217 200 46 | 1858 1924 217 200 47 | 2178 1924 217 200 48 | 2498 1924 217 200 49 | 256 2122 217 200 50 | 576 2122 217 200 51 | 896 2122 217 200 52 | 1216 2123 217 200 53 | 1537 2123 217 200 54 | 1857 2124 217 200 55 | 2177 2124 217 200 56 | 2497 2124 217 200 57 | 254 2322 217 200 58 | 575 2322 217 200 59 | 895 2322 217 200 60 | 1215 2323 217 200 61 | 1535 2323 217 200 62 | 1856 2324 217 200 63 | 2176 2324 217 200 64 | 2496 2324 217 200 65 | 253 2522 217 200 66 | 573 2522 217 200 67 | 894 2522 217 200 68 | 1214 2523 217 200 69 | 1534 2523 217 200 70 | 1854 2524 217 200 71 | 2175 2524 217 200 72 | 2495 2524 217 200 73 | 252 2722 217 200 74 | 572 2722 217 200 75 | 892 2722 217 200 76 | 1213 2723 217 200 77 | 1533 2723 217 200 78 | 1853 2724 217 200 79 | 2173 2724 217 200 80 | 2494 2724 217 200 81 | 251 2922 217 200 82 | 571 2922 217 200 83 | 891 2922 217 200 84 | 1211 2923 217 200 85 | 1532 2923 217 200 86 | 1852 2924 217 200 87 | 2172 2924 217 200 88 | 2492 2924 217 200 89 | 250 3122 217 200 90 | 570 3122 217 200 91 | 890 3122 217 200 92 | 1210 3123 217 200 93 | 1531 3123 217 200 94 | 1851 3124 217 200 95 | 2171 3124 217 200 96 | 2491 3124 217 200 97 | 248 3322 217 200 98 | 569 3322 217 200 99 | 889 3322 217 200 100 | 1209 3323 217 200 101 | 1529 3323 217 200 102 | 1850 3324 217 200 103 | 2170 3324 217 200 104 | 2490 3324 217 200 105 | 247 3522 217 200 106 | 567 3522 217 200 107 | 888 3522 217 200 108 | 1208 3523 217 200 109 | 1528 3523 217 200 110 | 1848 3524 217 200 111 | 2169 3524 217 200 112 | 2489 3524 217 200 113 | 246 3722 217 200 114 | 566 3722 217 200 115 | 886 3722 217 200 116 | 1207 3723 217 200 117 | 1527 3723 217 200 118 | 1847 3724 217 200 119 | 2167 3724 217 200 120 | 2488 3724 217 200 121 | 245 3922 217 200 122 | 565 3922 217 200 123 | 885 3922 217 200 124 | 1205 3923 217 200 125 | 1526 3923 217 200 126 | 1846 3924 217 200 127 | 2166 3924 217 200 128 | 2486 3924 217 200 129 | 244 4122 217 200 130 | 564 4122 217 200 131 | 884 4122 217 200 132 | 1204 4123 217 200 133 | 1525 4123 217 200 134 | 1845 4124 217 200 135 | 2165 4124 217 200 136 | 2485 4124 217 200 137 | 242 4322 217 200 138 | 563 4322 217 200 139 | 883 4322 217 200 140 | 1203 4323 217 200 141 | 1523 4323 217 200 142 | 1844 4324 217 200 143 | 2164 4324 217 200 144 | 2484 4324 217 200 145 | 241 4522 217 200 146 | 561 4522 217 200 147 | 882 4522 217 200 148 | 1202 4523 217 200 149 | 1522 4523 217 200 150 | 1842 4524 217 200 151 | 2163 4524 217 200 152 | 2483 4524 217 200 153 | 0 0 0 0 154 | 0 0 0 0 155 | 0 0 0 0 156 | 0 0 0 0 157 | 0 0 0 0 158 | 0 0 0 0 159 | 0 0 0 0 160 | 0 0 0 0 161 | -16 0 0 0 162 | -16 0 0 0 163 | -16 0 0 0 164 | -16 0 0 0 165 | -16 0 0 0 166 | -16 0 0 0 167 | -16 0 0 0 168 | -16 0 0 0 169 | -32 0 0 0 170 | -32 0 0 0 171 | -32 0 0 0 172 | -32 0 0 0 173 | -32 0 0 0 174 | -32 0 0 0 175 | -32 0 0 0 176 | -32 0 0 0 177 | -49 0 0 0 178 | -49 0 0 0 179 | -49 0 0 0 180 | -49 0 0 0 181 | -49 0 0 0 182 | -49 0 0 0 183 | -49 0 0 0 184 | -49 0 0 0 185 | -65 0 0 0 186 | -65 0 0 0 187 | -65 0 0 0 188 | -65 0 0 0 189 | -65 0 0 0 190 | -65 0 0 0 191 | -65 0 0 0 192 | -65 0 0 0 193 | -82 0 0 0 194 | -82 0 0 0 195 | -82 0 0 0 196 | -82 0 0 0 197 | -82 0 0 0 198 | -82 0 0 0 199 | -82 0 0 0 200 | -82 0 0 0 201 | -98 0 0 0 202 | -98 0 0 0 203 | -98 0 0 0 204 | -98 0 0 0 205 | -98 0 0 0 206 | -98 0 0 0 207 | -98 0 0 0 208 | -98 0 0 0 209 | -114 0 0 0 210 | -114 0 0 0 211 | -114 0 0 0 212 | -114 0 0 0 213 | -114 0 0 0 214 | -114 0 0 0 215 | -114 0 0 0 216 | -114 0 0 0 217 | -131 0 0 0 218 | -131 0 0 0 219 | -131 0 0 0 220 | -131 0 0 0 221 | -131 0 0 0 222 | -131 0 0 0 223 | -131 0 0 0 224 | -131 0 0 0 225 | -147 0 0 0 226 | -147 0 0 0 227 | -147 0 0 0 228 | -147 0 0 0 229 | -147 0 0 0 230 | -147 0 0 0 231 | -147 0 0 0 232 | -147 0 0 0 233 | -164 0 0 0 234 | -164 0 0 0 235 | -164 0 0 0 236 | -164 0 0 0 237 | -164 0 0 0 238 | -164 0 0 0 239 | -164 0 0 0 240 | -164 0 0 0 241 | -180 0 0 0 242 | -180 0 0 0 243 | -180 0 0 0 244 | -180 0 0 0 245 | -180 0 0 0 246 | -180 0 0 0 247 | -180 0 0 0 248 | -180 0 0 0 249 | -196 0 0 0 250 | -196 0 0 0 251 | -196 0 0 0 252 | -196 0 0 0 253 | -196 0 0 0 254 | -196 0 0 0 255 | -196 0 0 0 256 | -196 0 0 0 257 | -213 0 0 0 258 | -213 0 0 0 259 | -213 0 0 0 260 | -213 0 0 0 261 | -213 0 0 0 262 | -213 0 0 0 263 | -213 0 0 0 264 | -213 0 0 0 265 | -229 0 0 0 266 | -229 0 0 0 267 | -229 0 0 0 268 | -229 0 0 0 269 | -229 0 0 0 270 | -229 0 0 0 271 | -229 0 0 0 272 | -229 0 0 0 273 | -246 0 0 0 274 | -246 0 0 0 275 | -246 0 0 0 276 | -246 0 0 0 277 | -246 0 0 0 278 | -246 0 0 0 279 | -246 0 0 0 280 | -246 0 0 0 281 | -262 0 0 0 282 | -262 0 0 0 283 | -262 0 0 0 284 | -262 0 0 0 285 | -262 0 0 0 286 | -262 0 0 0 287 | -262 0 0 0 288 | -262 0 0 0 289 | -278 0 0 0 290 | -278 0 0 0 291 | -278 0 0 0 292 | -278 0 0 0 293 | -278 0 0 0 294 | -278 0 0 0 295 | -278 0 0 0 296 | -278 0 0 0 297 | -295 0 0 0 298 | -295 0 0 0 299 | -295 0 0 0 300 | -295 0 0 0 301 | -295 0 0 0 302 | -295 0 0 0 303 | -295 0 0 0 304 | -295 0 0 0 -------------------------------------------------------------------------------- /data/rects/30.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/30.tsv -------------------------------------------------------------------------------- /data/rects/31.tsv: -------------------------------------------------------------------------------- 1 | 235 890 217 201 2 | 555 890 217 201 3 | 875 890 217 201 4 | 1195 890 217 201 5 | 1516 890 217 201 6 | 1836 890 217 201 7 | 2156 890 217 201 8 | 2476 890 217 201 9 | 235 1091 217 201 10 | 555 1091 217 201 11 | 875 1091 217 201 12 | 1195 1091 217 201 13 | 1516 1091 217 201 14 | 1836 1091 217 201 15 | 2156 1091 217 201 16 | 2476 1091 217 201 17 | 235 1293 217 201 18 | 555 1293 217 201 19 | 875 1293 217 201 20 | 1195 1293 217 201 21 | 1516 1293 217 201 22 | 1836 1293 217 201 23 | 2156 1293 217 201 24 | 2476 1293 217 201 25 | 235 1495 217 201 26 | 555 1495 217 201 27 | 875 1495 217 201 28 | 1195 1495 217 201 29 | 1516 1495 217 201 30 | 1836 1495 217 201 31 | 2156 1495 217 201 32 | 2476 1495 217 201 33 | 235 1697 217 201 34 | 555 1697 217 201 35 | 875 1697 217 201 36 | 1195 1697 217 201 37 | 1516 1697 217 201 38 | 1836 1697 217 201 39 | 2156 1697 217 201 40 | 2476 1697 217 201 41 | 235 1899 217 201 42 | 555 1899 217 201 43 | 875 1899 217 201 44 | 1195 1899 217 201 45 | 1516 1899 217 201 46 | 1836 1899 217 201 47 | 2156 1899 217 201 48 | 2476 1899 217 201 49 | 235 2101 217 201 50 | 555 2101 217 201 51 | 875 2101 217 201 52 | 1195 2101 217 201 53 | 1516 2101 217 201 54 | 1836 2101 217 201 55 | 2156 2101 217 201 56 | 2476 2101 217 201 57 | 235 2303 217 201 58 | 555 2303 217 201 59 | 875 2303 217 201 60 | 1195 2303 217 201 61 | 1516 2303 217 201 62 | 1836 2303 217 201 63 | 2156 2303 217 201 64 | 2476 2303 217 201 65 | 235 2505 217 201 66 | 555 2505 217 201 67 | 875 2505 217 201 68 | 1195 2505 217 201 69 | 1516 2505 217 201 70 | 1836 2505 217 201 71 | 2156 2505 217 201 72 | 2476 2505 217 201 73 | 235 2707 217 201 74 | 555 2707 217 201 75 | 875 2707 217 201 76 | 1195 2707 217 201 77 | 1516 2707 217 201 78 | 1836 2707 217 201 79 | 2156 2707 217 201 80 | 2476 2707 217 201 81 | 235 2908 217 201 82 | 555 2908 217 201 83 | 875 2908 217 201 84 | 1195 2908 217 201 85 | 1516 2908 217 201 86 | 1836 2908 217 201 87 | 2156 2908 217 201 88 | 2476 2908 217 201 89 | 235 3110 217 201 90 | 555 3110 217 201 91 | 875 3110 217 201 92 | 1195 3110 217 201 93 | 1516 3110 217 201 94 | 1836 3110 217 201 95 | 2156 3110 217 201 96 | 2476 3110 217 201 97 | 235 3312 217 201 98 | 555 3312 217 201 99 | 875 3312 217 201 100 | 1195 3312 217 201 101 | 1516 3312 217 201 102 | 1836 3312 217 201 103 | 2156 3312 217 201 104 | 2476 3312 217 201 105 | 235 3514 217 201 106 | 555 3514 217 201 107 | 875 3514 217 201 108 | 1195 3514 217 201 109 | 1516 3514 217 201 110 | 1836 3514 217 201 111 | 2156 3514 217 201 112 | 2476 3514 217 201 113 | 235 3716 217 201 114 | 555 3716 217 201 115 | 875 3716 217 201 116 | 1195 3716 217 201 117 | 1516 3716 217 201 118 | 1836 3716 217 201 119 | 2156 3716 217 201 120 | 2476 3716 217 201 121 | 235 3918 217 201 122 | 555 3918 217 201 123 | 875 3918 217 201 124 | 1195 3918 217 201 125 | 1516 3918 217 201 126 | 1836 3918 217 201 127 | 2156 3918 217 201 128 | 2476 3918 217 201 129 | 235 4120 217 201 130 | 555 4120 217 201 131 | 875 4120 217 201 132 | 1195 4120 217 201 133 | 1516 4120 217 201 134 | 1836 4120 217 201 135 | 2156 4120 217 201 136 | 2476 4120 217 201 137 | 235 4322 217 201 138 | 555 4322 217 201 139 | 875 4322 217 201 140 | 1195 4322 217 201 141 | 1516 4322 217 201 142 | 1836 4322 217 201 143 | 2156 4322 217 201 144 | 2476 4322 217 201 145 | 235 4524 217 201 146 | 555 4524 217 201 147 | 875 4524 217 201 148 | 1195 4524 217 201 149 | 1516 4524 217 201 150 | 1836 4524 217 201 151 | 2156 4524 217 201 152 | 2476 4524 217 201 153 | 0 0 0 0 154 | 0 0 0 0 155 | 0 0 0 0 156 | 0 0 0 0 157 | 0 0 0 0 158 | 0 0 0 0 159 | 0 0 0 0 160 | 0 0 0 0 161 | 0 0 0 0 162 | 0 0 0 0 163 | 0 0 0 0 164 | 0 0 0 0 165 | 0 0 0 0 166 | 0 0 0 0 167 | 0 0 0 0 168 | 0 0 0 0 169 | 0 0 0 0 170 | 0 0 0 0 171 | 0 0 0 0 172 | 0 0 0 0 173 | 0 0 0 0 174 | 0 0 0 0 175 | 0 0 0 0 176 | 0 0 0 0 177 | 0 0 0 0 178 | 0 0 0 0 179 | 0 0 0 0 180 | 0 0 0 0 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/50.tsv: -------------------------------------------------------------------------------- 1 | 3215 942 218 204 2 | 3537 941 218 204 3 | 3858 940 218 204 4 | 4180 939 218 204 5 | 4502 938 218 204 6 | 4824 938 218 204 7 | 5145 937 218 204 8 | 5467 936 218 204 9 | 3213 1146 218 204 10 | 3535 1146 218 204 11 | 3857 1145 218 204 12 | 4179 1144 218 204 13 | 4500 1143 218 204 14 | 4822 1142 218 204 15 | 5144 1142 218 204 16 | 5466 1141 218 204 17 | 3212 1351 218 204 18 | 3534 1350 218 204 19 | 3855 1350 218 204 20 | 4177 1349 218 204 21 | 4499 1348 218 204 22 | 4821 1347 218 204 23 | 5142 1346 218 204 24 | 5464 1346 218 204 25 | 3210 1556 218 204 26 | 3532 1555 218 204 27 | 3854 1554 218 204 28 | 4175 1554 218 204 29 | 4497 1553 218 204 30 | 4819 1552 218 204 31 | 5141 1551 218 204 32 | 5462 1550 218 204 33 | 3209 1761 218 204 34 | 3530 1760 218 204 35 | 3852 1759 218 204 36 | 4174 1758 218 204 37 | 4496 1758 218 204 38 | 4817 1757 218 204 39 | 5139 1756 218 204 40 | 5461 1755 218 204 41 | 3207 1966 218 204 42 | 3529 1965 218 204 43 | 3850 1964 218 204 44 | 4172 1963 218 204 45 | 4494 1963 218 204 46 | 4816 1962 218 204 47 | 5137 1961 218 204 48 | 5459 1960 218 204 49 | 3205 2171 218 204 50 | 3527 2170 218 204 51 | 3849 2169 218 204 52 | 4171 2168 218 204 53 | 4492 2167 218 204 54 | 4814 2167 218 204 55 | 5136 2166 218 204 56 | 5458 2165 218 204 57 | 3204 2375 218 204 58 | 3526 2375 218 204 59 | 3847 2374 218 204 60 | 4169 2373 218 204 61 | 4491 2372 218 204 62 | 4813 2371 218 204 63 | 5134 2371 218 204 64 | 5456 2370 218 204 65 | 3202 2580 218 204 66 | 3524 2579 218 204 67 | 3846 2579 218 204 68 | 4167 2578 218 204 69 | 4489 2577 218 204 70 | 4811 2576 218 204 71 | 5133 2575 218 204 72 | 5454 2575 218 204 73 | 3201 2785 218 204 74 | 3522 2784 218 204 75 | 3844 2783 218 204 76 | 4166 2783 218 204 77 | 4488 2782 218 204 78 | 4809 2781 218 204 79 | 5131 2780 218 204 80 | 5453 2779 218 204 81 | 3199 2990 218 204 82 | 3521 2989 218 204 83 | 3842 2988 218 204 84 | 4164 2988 218 204 85 | 4486 2987 218 204 86 | 4808 2986 218 204 87 | 5129 2985 218 204 88 | 5451 2984 218 204 89 | 3197 3195 218 204 90 | 3519 3194 218 204 91 | 3841 3193 218 204 92 | 4163 3192 218 204 93 | 4484 3192 218 204 94 | 4806 3191 218 204 95 | 5128 3190 218 204 96 | 5450 3189 218 204 97 | 3196 3400 218 204 98 | 3518 3399 218 204 99 | 3839 3398 218 204 100 | 4161 3397 218 204 101 | 4483 3396 218 204 102 | 4805 3396 218 204 103 | 5126 3395 218 204 104 | 5448 3394 218 204 105 | 3194 3604 218 204 106 | 3516 3604 218 204 107 | 3838 3603 218 204 108 | 4159 3602 218 204 109 | 4481 3601 218 204 110 | 4803 3600 218 204 111 | 5125 3600 218 204 112 | 5446 3599 218 204 113 | 3193 3809 218 204 114 | 3514 3808 218 204 115 | 3836 3808 218 204 116 | 4158 3807 218 204 117 | 4480 3806 218 204 118 | 4801 3805 218 204 119 | 5123 3804 218 204 120 | 5445 3804 218 204 121 | 3191 4014 218 204 122 | 3513 4013 218 204 123 | 3834 4013 218 204 124 | 4156 4012 218 204 125 | 4478 4011 218 204 126 | 4800 4010 218 204 127 | 5121 4009 218 204 128 | 5443 4009 218 204 129 | 3189 4219 218 204 130 | 3511 4218 218 204 131 | 3833 4217 218 204 132 | 4155 4217 218 204 133 | 4476 4216 218 204 134 | 4798 4215 218 204 135 | 5120 4214 218 204 136 | 5442 4213 218 204 137 | 3188 4424 218 204 138 | 3510 4423 218 204 139 | 3831 4422 218 204 140 | 4153 4421 218 204 141 | 4475 4421 218 204 142 | 4797 4420 218 204 143 | 5118 4419 218 204 144 | 5440 4418 218 204 145 | 3186 4629 218 204 146 | 3508 4628 218 204 147 | 3830 4627 218 204 148 | 4151 4626 218 204 149 | 4473 4625 218 204 150 | 4795 4625 218 204 151 | 5117 4624 218 204 152 | 5438 4623 218 204 153 | 0 0 0 0 154 | 0 -1 0 0 155 | 0 -2 0 0 156 | 0 -3 0 0 157 | 0 -4 0 0 158 | 0 -6 0 0 159 | 0 -7 0 0 160 | 0 -8 0 0 161 | 0 0 0 0 162 | 0 -1 0 0 163 | 0 -2 0 0 164 | 0 -3 0 0 165 | 0 -4 0 0 166 | 0 -6 0 0 167 | 0 -7 0 0 168 | 0 -8 0 0 169 | 0 0 0 0 170 | 0 -1 0 0 171 | 0 -2 0 0 172 | 0 -3 0 0 173 | 0 -4 0 0 174 | 0 -6 0 0 175 | 0 -7 0 0 176 | 0 -8 0 0 177 | 0 0 0 0 178 | 0 -1 0 0 179 | 0 -2 0 0 180 | 0 -3 0 0 181 | 0 -4 0 0 182 | 0 -6 0 0 183 | 0 -7 0 0 184 | 0 -8 0 0 185 | 0 0 0 0 186 | 0 -1 0 0 187 | 0 -2 0 0 188 | 0 -3 0 0 189 | 0 -4 0 0 190 | 0 -6 0 0 191 | 0 -7 0 0 192 | 0 -8 0 0 193 | 0 0 0 0 194 | 0 -1 0 0 195 | 0 -2 0 0 196 | 0 -3 0 0 197 | 0 -4 0 0 198 | 0 -6 0 0 199 | 0 -7 0 0 200 | 0 -8 0 0 201 | 0 0 0 0 202 | 0 -1 0 0 203 | 0 -2 0 0 204 | 0 -3 0 0 205 | 0 -4 0 0 206 | 0 -6 0 0 207 | 0 -7 0 0 208 | 0 -8 0 0 209 | 0 0 0 0 210 | 0 -1 0 0 211 | 0 -2 0 0 212 | 0 -3 0 0 213 | 0 -4 0 0 214 | 0 -6 0 0 215 | 0 -7 0 0 216 | 0 -8 0 0 217 | 0 0 0 0 218 | 0 -1 0 0 219 | 0 -2 0 0 220 | 0 -3 0 0 221 | 0 -4 0 0 222 | 0 -6 0 0 223 | 0 -7 0 0 224 | 0 -8 0 0 225 | 0 0 0 0 226 | 0 -1 0 0 227 | 0 -2 0 0 228 | 0 -3 0 0 229 | 0 -4 0 0 230 | 0 -6 0 0 231 | 0 -7 0 0 232 | 0 -8 0 0 233 | 0 0 0 0 234 | 0 -1 0 0 235 | 0 -2 0 0 236 | 0 -3 0 0 237 | 0 -4 0 0 238 | 0 -6 0 0 239 | 0 -7 0 0 240 | 0 -8 0 0 241 | 0 0 0 0 242 | 0 -1 0 0 243 | 0 -2 0 0 244 | 0 -3 0 0 245 | 0 -4 0 0 246 | 0 -6 0 0 247 | 0 -7 0 0 248 | 0 -8 0 0 249 | 0 0 0 0 250 | 0 -1 0 0 251 | 0 -2 0 0 252 | 0 -3 0 0 253 | 0 -4 0 0 254 | 0 -6 0 0 255 | 0 -7 0 0 256 | 0 -8 0 0 257 | 0 0 0 0 258 | 0 -1 0 0 259 | 0 -2 0 0 260 | 0 -3 0 0 261 | 0 -4 0 0 262 | 0 -6 0 0 263 | 0 -7 0 0 264 | 0 -8 0 0 265 | 0 0 0 0 266 | 0 -1 0 0 267 | 0 -2 0 0 268 | 0 -3 0 0 269 | 0 -4 0 0 270 | 0 -6 0 0 271 | 0 -7 0 0 272 | 0 -8 0 0 273 | 0 0 0 0 274 | 0 -1 0 0 275 | 0 -2 0 0 276 | 0 -3 0 0 277 | 0 -4 0 0 278 | 0 -6 0 0 279 | 0 -7 0 0 280 | 0 -8 0 0 281 | 0 0 0 0 282 | 0 -1 0 0 283 | 0 -2 0 0 284 | 0 -3 0 0 285 | 0 -4 0 0 286 | 0 -6 0 0 287 | 0 -7 0 0 288 | 0 -8 0 0 289 | 0 0 0 0 290 | 0 -1 0 0 291 | 0 -2 0 0 292 | 0 -3 0 0 293 | 0 -4 0 0 294 | 0 -6 0 0 295 | 0 -7 0 0 296 | 0 -8 0 0 297 | 0 0 0 0 298 | 0 -1 0 0 299 | 0 -2 0 0 300 | 0 -3 0 0 301 | 0 -4 0 0 302 | 0 -6 0 0 303 | 0 -7 0 0 304 | 0 -8 0 0 -------------------------------------------------------------------------------- /data/rects/51.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/51.tsv -------------------------------------------------------------------------------- /data/rects/52.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/52.tsv -------------------------------------------------------------------------------- /data/rects/53.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/53.tsv -------------------------------------------------------------------------------- /data/rects/54.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/54.tsv -------------------------------------------------------------------------------- /data/rects/55.tsv: -------------------------------------------------------------------------------- 1 | 248 974 214 199 2 | 563 974 214 199 3 | 878 974 214 199 4 | 1193 974 214 199 5 | 1508 974 214 199 6 | 1823 974 214 199 7 | 2138 974 214 199 8 | 2453 974 214 199 9 | 248 1173 214 199 10 | 563 1173 214 199 11 | 878 1173 214 199 12 | 1193 1173 214 199 13 | 1508 1173 214 199 14 | 1823 1173 214 199 15 | 2138 1173 214 199 16 | 2453 1173 214 199 17 | 248 1372 214 199 18 | 563 1372 214 199 19 | 878 1372 214 199 20 | 1193 1372 214 199 21 | 1508 1372 214 199 22 | 1823 1372 214 199 23 | 2138 1372 214 199 24 | 2453 1372 214 199 25 | 248 1571 214 199 26 | 563 1571 214 199 27 | 878 1571 214 199 28 | 1193 1571 214 199 29 | 1508 1571 214 199 30 | 1823 1571 214 199 31 | 2138 1571 214 199 32 | 2453 1571 214 199 33 | 248 1770 214 199 34 | 563 1770 214 199 35 | 878 1770 214 199 36 | 1193 1770 214 199 37 | 1508 1770 214 199 38 | 1823 1770 214 199 39 | 2138 1770 214 199 40 | 2453 1770 214 199 41 | 248 1969 214 199 42 | 563 1969 214 199 43 | 878 1969 214 199 44 | 1193 1969 214 199 45 | 1508 1969 214 199 46 | 1823 1969 214 199 47 | 2138 1969 214 199 48 | 2453 1969 214 199 49 | 248 2168 214 199 50 | 563 2168 214 199 51 | 878 2168 214 199 52 | 1193 2168 214 199 53 | 1508 2168 214 199 54 | 1823 2168 214 199 55 | 2138 2168 214 199 56 | 2453 2168 214 199 57 | 248 2367 214 199 58 | 563 2367 214 199 59 | 878 2367 214 199 60 | 1193 2367 214 199 61 | 1508 2367 214 199 62 | 1823 2367 214 199 63 | 2138 2367 214 199 64 | 2453 2367 214 199 65 | 248 2566 214 199 66 | 563 2566 214 199 67 | 878 2566 214 199 68 | 1193 2566 214 199 69 | 1508 2566 214 199 70 | 1823 2566 214 199 71 | 2138 2566 214 199 72 | 2453 2566 214 199 73 | 248 2765 214 199 74 | 563 2765 214 199 75 | 878 2765 214 199 76 | 1193 2765 214 199 77 | 1508 2765 214 199 78 | 1823 2765 214 199 79 | 2138 2765 214 199 80 | 2453 2765 214 199 81 | 248 2964 214 199 82 | 563 2964 214 199 83 | 878 2964 214 199 84 | 1193 2964 214 199 85 | 1508 2964 214 199 86 | 1823 2964 214 199 87 | 2138 2964 214 199 88 | 2453 2964 214 199 89 | 248 3163 214 199 90 | 563 3163 214 199 91 | 878 3163 214 199 92 | 1193 3163 214 199 93 | 1508 3163 214 199 94 | 1823 3163 214 199 95 | 2138 3163 214 199 96 | 2453 3163 214 199 97 | 248 3362 214 199 98 | 563 3362 214 199 99 | 878 3362 214 199 100 | 1193 3362 214 199 101 | 1508 3362 214 199 102 | 1823 3362 214 199 103 | 2138 3362 214 199 104 | 2453 3362 214 199 105 | 248 3561 214 199 106 | 563 3561 214 199 107 | 878 3561 214 199 108 | 1193 3561 214 199 109 | 1508 3561 214 199 110 | 1823 3561 214 199 111 | 2138 3561 214 199 112 | 2453 3561 214 199 113 | 248 3760 214 199 114 | 563 3760 214 199 115 | 878 3760 214 199 116 | 1193 3760 214 199 117 | 1508 3760 214 199 118 | 1823 3760 214 199 119 | 2138 3760 214 199 120 | 2453 3760 214 199 121 | 248 3959 214 199 122 | 563 3959 214 199 123 | 878 3959 214 199 124 | 1193 3959 214 199 125 | 1508 3959 214 199 126 | 1823 3959 214 199 127 | 2138 3959 214 199 128 | 2453 3959 214 199 129 | 248 4158 214 199 130 | 563 4158 214 199 131 | 878 4158 214 199 132 | 1193 4158 214 199 133 | 1508 4158 214 199 134 | 1823 4158 214 199 135 | 2138 4158 214 199 136 | 2453 4158 214 199 137 | 248 4357 214 199 138 | 563 4357 214 199 139 | 878 4357 214 199 140 | 1193 4357 214 199 141 | 1508 4357 214 199 142 | 1823 4357 214 199 143 | 2138 4357 214 199 144 | 2453 4357 214 199 145 | 248 4556 214 199 146 | 563 4556 214 199 147 | 878 4556 214 199 148 | 1193 4556 214 199 149 | 1508 4556 214 199 150 | 1823 4556 214 199 151 | 2138 4556 214 199 152 | 2453 4556 214 199 153 | 0 0 0 0 154 | 0 0 0 0 155 | 0 0 0 0 156 | 0 0 0 0 157 | 0 0 0 0 158 | 0 0 0 0 159 | 0 0 0 0 160 | 0 0 0 0 161 | 0 0 0 0 162 | 0 0 0 0 163 | 0 0 0 0 164 | 0 0 0 0 165 | 0 0 0 0 166 | 0 0 0 0 167 | 0 0 0 0 168 | 0 0 0 0 169 | 0 0 0 0 170 | 0 0 0 0 171 | 0 0 0 0 172 | 0 0 0 0 173 | 0 0 0 0 174 | 0 0 0 0 175 | 0 0 0 0 176 | 0 0 0 0 177 | 0 0 0 0 178 | 0 0 0 0 179 | 0 0 0 0 180 | 0 0 0 0 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/59.tsv: -------------------------------------------------------------------------------- 1 | 260 944 221 206 2 | 585 944 221 206 3 | 911 944 221 206 4 | 1236 944 221 206 5 | 1562 944 221 206 6 | 1887 944 221 206 7 | 2213 944 221 206 8 | 2538 944 221 206 9 | 260 1150 221 206 10 | 585 1150 221 206 11 | 911 1150 221 206 12 | 1236 1150 221 206 13 | 1562 1150 221 206 14 | 1887 1150 221 206 15 | 2213 1150 221 206 16 | 2538 1150 221 206 17 | 260 1357 221 206 18 | 585 1357 221 206 19 | 911 1357 221 206 20 | 1236 1357 221 206 21 | 1562 1357 221 206 22 | 1887 1357 221 206 23 | 2213 1357 221 206 24 | 2538 1357 221 206 25 | 260 1563 221 206 26 | 585 1563 221 206 27 | 911 1563 221 206 28 | 1236 1563 221 206 29 | 1562 1563 221 206 30 | 1887 1563 221 206 31 | 2213 1563 221 206 32 | 2538 1563 221 206 33 | 260 1770 221 206 34 | 585 1770 221 206 35 | 911 1770 221 206 36 | 1236 1770 221 206 37 | 1562 1770 221 206 38 | 1887 1770 221 206 39 | 2213 1770 221 206 40 | 2538 1770 221 206 41 | 260 1977 221 206 42 | 585 1977 221 206 43 | 911 1977 221 206 44 | 1236 1977 221 206 45 | 1562 1977 221 206 46 | 1887 1977 221 206 47 | 2213 1977 221 206 48 | 2538 1977 221 206 49 | 260 2183 221 206 50 | 585 2183 221 206 51 | 911 2183 221 206 52 | 1236 2183 221 206 53 | 1562 2183 221 206 54 | 1887 2183 221 206 55 | 2213 2183 221 206 56 | 2538 2183 221 206 57 | 260 2390 221 206 58 | 585 2390 221 206 59 | 911 2390 221 206 60 | 1236 2390 221 206 61 | 1562 2390 221 206 62 | 1887 2390 221 206 63 | 2213 2390 221 206 64 | 2538 2390 221 206 65 | 260 2597 221 206 66 | 585 2597 221 206 67 | 911 2597 221 206 68 | 1236 2597 221 206 69 | 1562 2597 221 206 70 | 1887 2597 221 206 71 | 2213 2597 221 206 72 | 2538 2597 221 206 73 | 260 2803 221 206 74 | 585 2803 221 206 75 | 911 2803 221 206 76 | 1236 2803 221 206 77 | 1562 2803 221 206 78 | 1887 2803 221 206 79 | 2213 2803 221 206 80 | 2538 2803 221 206 81 | 260 3010 221 206 82 | 585 3010 221 206 83 | 911 3010 221 206 84 | 1236 3010 221 206 85 | 1562 3010 221 206 86 | 1887 3010 221 206 87 | 2213 3010 221 206 88 | 2538 3010 221 206 89 | 260 3216 221 206 90 | 585 3216 221 206 91 | 911 3216 221 206 92 | 1236 3216 221 206 93 | 1562 3216 221 206 94 | 1887 3216 221 206 95 | 2213 3216 221 206 96 | 2538 3216 221 206 97 | 260 3423 221 206 98 | 585 3423 221 206 99 | 911 3423 221 206 100 | 1236 3423 221 206 101 | 1562 3423 221 206 102 | 1887 3423 221 206 103 | 2213 3423 221 206 104 | 2538 3423 221 206 105 | 260 3630 221 206 106 | 585 3630 221 206 107 | 911 3630 221 206 108 | 1236 3630 221 206 109 | 1562 3630 221 206 110 | 1887 3630 221 206 111 | 2213 3630 221 206 112 | 2538 3630 221 206 113 | 260 3836 221 206 114 | 585 3836 221 206 115 | 911 3836 221 206 116 | 1236 3836 221 206 117 | 1562 3836 221 206 118 | 1887 3836 221 206 119 | 2213 3836 221 206 120 | 2538 3836 221 206 121 | 260 4043 221 206 122 | 585 4043 221 206 123 | 911 4043 221 206 124 | 1236 4043 221 206 125 | 1562 4043 221 206 126 | 1887 4043 221 206 127 | 2213 4043 221 206 128 | 2538 4043 221 206 129 | 260 4250 221 206 130 | 585 4250 221 206 131 | 911 4250 221 206 132 | 1236 4250 221 206 133 | 1562 4250 221 206 134 | 1887 4250 221 206 135 | 2213 4250 221 206 136 | 2538 4250 221 206 137 | 260 4456 221 206 138 | 585 4456 221 206 139 | 911 4456 221 206 140 | 1236 4456 221 206 141 | 1562 4456 221 206 142 | 1887 4456 221 206 143 | 2213 4456 221 206 144 | 2538 4456 221 206 145 | 260 4663 221 206 146 | 585 4663 221 206 147 | 911 4663 221 206 148 | 1236 4663 221 206 149 | 1562 4663 221 206 150 | 1887 4663 221 206 151 | 2213 4663 221 206 152 | 2538 4663 221 206 153 | 0 0 0 0 154 | 0 0 0 0 155 | 0 0 0 0 156 | 0 0 0 0 157 | 0 0 0 0 158 | 0 0 0 0 159 | 0 0 0 0 160 | 0 0 0 0 161 | 0 0 0 0 162 | 0 0 0 0 163 | 0 0 0 0 164 | 0 0 0 0 165 | 0 0 0 0 166 | 0 0 0 0 167 | 0 0 0 0 168 | 0 0 0 0 169 | 0 0 0 0 170 | 0 0 0 0 171 | 0 0 0 0 172 | 0 0 0 0 173 | 0 0 0 0 174 | 0 0 0 0 175 | 0 0 0 0 176 | 0 0 0 0 177 | 0 0 0 0 178 | 0 0 0 0 179 | 0 0 0 0 180 | 0 0 0 0 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/79.tsv: -------------------------------------------------------------------------------- 1 | 3200 1002 221 209 2 | 3525 1002 221 209 3 | 3850 1002 221 209 4 | 4175 1002 221 209 5 | 4500 1002 221 209 6 | 4825 1002 221 209 7 | 5150 1002 221 209 8 | 5475 1002 221 209 9 | 3200 1211 221 209 10 | 3525 1211 221 209 11 | 3850 1211 221 209 12 | 4175 1211 221 209 13 | 4500 1211 221 209 14 | 4825 1211 221 209 15 | 5150 1211 221 209 16 | 5475 1211 221 209 17 | 3200 1420 221 209 18 | 3525 1420 221 209 19 | 3850 1420 221 209 20 | 4175 1420 221 209 21 | 4500 1420 221 209 22 | 4825 1420 221 209 23 | 5150 1420 221 209 24 | 5475 1420 221 209 25 | 3200 1629 221 209 26 | 3525 1629 221 209 27 | 3850 1629 221 209 28 | 4175 1629 221 209 29 | 4500 1629 221 209 30 | 4825 1629 221 209 31 | 5150 1629 221 209 32 | 5475 1629 221 209 33 | 3200 1838 221 209 34 | 3525 1838 221 209 35 | 3850 1838 221 209 36 | 4175 1838 221 209 37 | 4500 1838 221 209 38 | 4825 1838 221 209 39 | 5150 1838 221 209 40 | 5475 1838 221 209 41 | 3200 2047 221 209 42 | 3525 2047 221 209 43 | 3850 2047 221 209 44 | 4175 2047 221 209 45 | 4500 2047 221 209 46 | 4825 2047 221 209 47 | 5150 2047 221 209 48 | 5475 2047 221 209 49 | 3200 2256 221 209 50 | 3525 2256 221 209 51 | 3850 2256 221 209 52 | 4175 2256 221 209 53 | 4500 2256 221 209 54 | 4825 2256 221 209 55 | 5150 2256 221 209 56 | 5475 2256 221 209 57 | 3200 2466 221 209 58 | 3525 2466 221 209 59 | 3850 2466 221 209 60 | 4175 2466 221 209 61 | 4500 2466 221 209 62 | 4825 2466 221 209 63 | 5150 2466 221 209 64 | 5475 2466 221 209 65 | 3200 2675 221 209 66 | 3525 2675 221 209 67 | 3850 2675 221 209 68 | 4175 2675 221 209 69 | 4500 2675 221 209 70 | 4825 2675 221 209 71 | 5150 2675 221 209 72 | 5475 2675 221 209 73 | 3200 2884 221 209 74 | 3525 2884 221 209 75 | 3850 2884 221 209 76 | 4175 2884 221 209 77 | 4500 2884 221 209 78 | 4825 2884 221 209 79 | 5150 2884 221 209 80 | 5475 2884 221 209 81 | 3200 3093 221 209 82 | 3525 3093 221 209 83 | 3850 3093 221 209 84 | 4175 3093 221 209 85 | 4500 3093 221 209 86 | 4825 3093 221 209 87 | 5150 3093 221 209 88 | 5475 3093 221 209 89 | 3200 3302 221 209 90 | 3525 3302 221 209 91 | 3850 3302 221 209 92 | 4175 3302 221 209 93 | 4500 3302 221 209 94 | 4825 3302 221 209 95 | 5150 3302 221 209 96 | 5475 3302 221 209 97 | 3200 3511 221 209 98 | 3525 3511 221 209 99 | 3850 3511 221 209 100 | 4175 3511 221 209 101 | 4500 3511 221 209 102 | 4825 3511 221 209 103 | 5150 3511 221 209 104 | 5475 3511 221 209 105 | 3200 3721 221 209 106 | 3525 3721 221 209 107 | 3850 3721 221 209 108 | 4175 3721 221 209 109 | 4500 3721 221 209 110 | 4825 3721 221 209 111 | 5150 3721 221 209 112 | 5475 3721 221 209 113 | 3200 3930 221 209 114 | 3525 3930 221 209 115 | 3850 3930 221 209 116 | 4175 3930 221 209 117 | 4500 3930 221 209 118 | 4825 3930 221 209 119 | 5150 3930 221 209 120 | 5475 3930 221 209 121 | 3200 4139 221 209 122 | 3525 4139 221 209 123 | 3850 4139 221 209 124 | 4175 4139 221 209 125 | 4500 4139 221 209 126 | 4825 4139 221 209 127 | 5150 4139 221 209 128 | 5475 4139 221 209 129 | 3200 4348 221 209 130 | 3525 4348 221 209 131 | 3850 4348 221 209 132 | 4175 4348 221 209 133 | 4500 4348 221 209 134 | 4825 4348 221 209 135 | 5150 4348 221 209 136 | 5475 4348 221 209 137 | 3200 4557 221 209 138 | 3525 4557 221 209 139 | 3850 4557 221 209 140 | 4175 4557 221 209 141 | 4500 4557 221 209 142 | 4825 4557 221 209 143 | 5150 4557 221 209 144 | 5475 4557 221 209 145 | 3200 4766 221 209 146 | 3525 4766 221 209 147 | 3850 4766 221 209 148 | 4175 4766 221 209 149 | 4500 4766 221 209 150 | 4825 4766 221 209 151 | 5150 4766 221 209 152 | 5475 4766 221 209 153 | 0 0 0 0 154 | 0 0 0 0 155 | 0 0 0 0 156 | 0 0 0 0 157 | 0 0 0 0 158 | 0 0 0 0 159 | 0 0 0 0 160 | 0 0 0 0 161 | 0 0 0 0 162 | 0 0 0 0 163 | 0 0 0 0 164 | 0 0 0 0 165 | 0 0 0 0 166 | 0 0 0 0 167 | 0 0 0 0 168 | 0 0 0 0 169 | 0 0 0 0 170 | 0 0 0 0 171 | 0 0 0 0 172 | 0 0 0 0 173 | 0 0 0 0 174 | 0 0 0 0 175 | 0 0 0 0 176 | 0 0 0 0 177 | 0 0 0 0 178 | 0 0 0 0 179 | 0 0 0 0 180 | 0 0 0 0 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/80.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/80.tsv -------------------------------------------------------------------------------- /data/rects/81.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/81.tsv -------------------------------------------------------------------------------- /data/rects/82.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/82.tsv -------------------------------------------------------------------------------- /data/rects/83.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/83.tsv -------------------------------------------------------------------------------- /data/rects/84.tsv: -------------------------------------------------------------------------------- 1 | 259 916 218 201 2 | 580 916 218 201 3 | 901 916 218 201 4 | 1223 916 218 201 5 | 1544 916 218 201 6 | 1865 916 218 201 7 | 2186 916 218 201 8 | 2508 916 218 201 9 | 259 1117 218 201 10 | 580 1117 218 201 11 | 901 1117 218 201 12 | 1223 1117 218 201 13 | 1544 1117 218 201 14 | 1865 1117 218 201 15 | 2186 1117 218 201 16 | 2508 1117 218 201 17 | 259 1318 218 201 18 | 580 1318 218 201 19 | 901 1318 218 201 20 | 1223 1318 218 201 21 | 1544 1318 218 201 22 | 1865 1318 218 201 23 | 2186 1318 218 201 24 | 2508 1318 218 201 25 | 259 1520 218 201 26 | 580 1520 218 201 27 | 901 1520 218 201 28 | 1223 1520 218 201 29 | 1544 1520 218 201 30 | 1865 1520 218 201 31 | 2186 1520 218 201 32 | 2508 1520 218 201 33 | 259 1721 218 201 34 | 580 1721 218 201 35 | 901 1721 218 201 36 | 1223 1721 218 201 37 | 1544 1721 218 201 38 | 1865 1721 218 201 39 | 2186 1721 218 201 40 | 2508 1721 218 201 41 | 259 1922 218 201 42 | 580 1922 218 201 43 | 901 1922 218 201 44 | 1223 1922 218 201 45 | 1544 1922 218 201 46 | 1865 1922 218 201 47 | 2186 1922 218 201 48 | 2508 1922 218 201 49 | 259 2124 218 201 50 | 580 2124 218 201 51 | 901 2124 218 201 52 | 1223 2124 218 201 53 | 1544 2124 218 201 54 | 1865 2124 218 201 55 | 2186 2124 218 201 56 | 2508 2124 218 201 57 | 259 2325 218 201 58 | 580 2325 218 201 59 | 901 2325 218 201 60 | 1223 2325 218 201 61 | 1544 2325 218 201 62 | 1865 2325 218 201 63 | 2186 2325 218 201 64 | 2508 2325 218 201 65 | 259 2526 218 201 66 | 580 2526 218 201 67 | 901 2526 218 201 68 | 1223 2526 218 201 69 | 1544 2526 218 201 70 | 1865 2526 218 201 71 | 2186 2526 218 201 72 | 2508 2526 218 201 73 | 259 2728 218 201 74 | 580 2728 218 201 75 | 901 2728 218 201 76 | 1223 2728 218 201 77 | 1544 2728 218 201 78 | 1865 2728 218 201 79 | 2186 2728 218 201 80 | 2508 2728 218 201 81 | 259 2929 218 201 82 | 580 2929 218 201 83 | 901 2929 218 201 84 | 1223 2929 218 201 85 | 1544 2929 218 201 86 | 1865 2929 218 201 87 | 2186 2929 218 201 88 | 2508 2929 218 201 89 | 259 3131 218 201 90 | 580 3131 218 201 91 | 901 3131 218 201 92 | 1223 3131 218 201 93 | 1544 3131 218 201 94 | 1865 3131 218 201 95 | 2186 3131 218 201 96 | 2508 3131 218 201 97 | 259 3332 218 201 98 | 580 3332 218 201 99 | 901 3332 218 201 100 | 1223 3332 218 201 101 | 1544 3332 218 201 102 | 1865 3332 218 201 103 | 2186 3332 218 201 104 | 2508 3332 218 201 105 | 259 3533 218 201 106 | 580 3533 218 201 107 | 901 3533 218 201 108 | 1223 3533 218 201 109 | 1544 3533 218 201 110 | 1865 3533 218 201 111 | 2186 3533 218 201 112 | 2508 3533 218 201 113 | 259 3735 218 201 114 | 580 3735 218 201 115 | 901 3735 218 201 116 | 1223 3735 218 201 117 | 1544 3735 218 201 118 | 1865 3735 218 201 119 | 2186 3735 218 201 120 | 2508 3735 218 201 121 | 259 3936 218 201 122 | 580 3936 218 201 123 | 901 3936 218 201 124 | 1223 3936 218 201 125 | 1544 3936 218 201 126 | 1865 3936 218 201 127 | 2186 3936 218 201 128 | 2508 3936 218 201 129 | 259 4137 218 201 130 | 580 4137 218 201 131 | 901 4137 218 201 132 | 1223 4137 218 201 133 | 1544 4137 218 201 134 | 1865 4137 218 201 135 | 2186 4137 218 201 136 | 2508 4137 218 201 137 | 259 4339 218 201 138 | 580 4339 218 201 139 | 901 4339 218 201 140 | 1223 4339 218 201 141 | 1544 4339 218 201 142 | 1865 4339 218 201 143 | 2186 4339 218 201 144 | 2508 4339 218 201 145 | 259 4540 218 201 146 | 580 4540 218 201 147 | 901 4540 218 201 148 | 1223 4540 218 201 149 | 1544 4540 218 201 150 | 1865 4540 218 201 151 | 2186 4540 218 201 152 | 2508 4540 218 201 153 | 0 0 0 0 154 | 0 0 0 0 155 | 0 0 0 0 156 | 0 0 0 0 157 | 0 0 0 0 158 | 0 0 0 0 159 | 0 0 0 0 160 | 0 0 0 0 161 | 0 0 0 0 162 | 0 0 0 0 163 | 0 0 0 0 164 | 0 0 0 0 165 | 0 0 0 0 166 | 0 0 0 0 167 | 0 0 0 0 168 | 0 0 0 0 169 | 0 0 0 0 170 | 0 0 0 0 171 | 0 0 0 0 172 | 0 0 0 0 173 | 0 0 0 0 174 | 0 0 0 0 175 | 0 0 0 0 176 | 0 0 0 0 177 | 0 0 0 0 178 | 0 0 0 0 179 | 0 0 0 0 180 | 0 0 0 0 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/H1.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H1.tsv -------------------------------------------------------------------------------- /data/rects/H121.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H121.tsv -------------------------------------------------------------------------------- /data/rects/H122.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H122.tsv -------------------------------------------------------------------------------- /data/rects/H123.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H123.tsv -------------------------------------------------------------------------------- /data/rects/H124.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H124.tsv -------------------------------------------------------------------------------- /data/rects/H125.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H125.tsv -------------------------------------------------------------------------------- /data/rects/H126.tsv: -------------------------------------------------------------------------------- 1 | 195 993 235 194 2 | 483 991 235 194 3 | 772 989 235 194 4 | 1060 987 235 194 5 | 1348 985 235 194 6 | 1636 984 235 194 7 | 1924 982 235 194 8 | 2212 980 235 194 9 | 2500 978 235 194 10 | 197 1187 235 194 11 | 485 1186 235 194 12 | 773 1184 235 194 13 | 1061 1182 235 194 14 | 1349 1180 235 194 15 | 1637 1178 235 194 16 | 1925 1177 235 194 17 | 2213 1175 235 194 18 | 2501 1173 235 194 19 | 198 1382 235 194 20 | 486 1380 235 194 21 | 774 1378 235 194 22 | 1062 1377 235 194 23 | 1350 1375 235 194 24 | 1638 1373 235 194 25 | 1926 1372 235 194 26 | 2214 1370 235 194 27 | 2502 1368 235 194 28 | 199 1576 235 194 29 | 487 1574 235 194 30 | 775 1573 235 194 31 | 1063 1571 235 194 32 | 1351 1570 235 194 33 | 1639 1568 235 194 34 | 1927 1567 235 194 35 | 2215 1565 235 194 36 | 2503 1564 235 194 37 | 200 1770 235 194 38 | 488 1768 235 194 39 | 776 1767 235 194 40 | 1064 1766 235 194 41 | 1352 1764 235 194 42 | 1640 1763 235 194 43 | 1928 1762 235 194 44 | 2216 1760 235 194 45 | 2504 1759 235 194 46 | 201 1964 235 194 47 | 489 1963 235 194 48 | 777 1961 235 194 49 | 1065 1960 235 194 50 | 1353 1959 235 194 51 | 1641 1958 235 194 52 | 1929 1957 235 194 53 | 2217 1956 235 194 54 | 2505 1954 235 194 55 | 203 2158 235 194 56 | 491 2157 235 194 57 | 779 2156 235 194 58 | 1067 2155 235 194 59 | 1355 2154 235 194 60 | 1642 2153 235 194 61 | 1930 2152 235 194 62 | 2218 2151 235 194 63 | 2506 2150 235 194 64 | 204 2352 235 194 65 | 492 2351 235 194 66 | 780 2350 235 194 67 | 1068 2349 235 194 68 | 1356 2349 235 194 69 | 1644 2348 235 194 70 | 1932 2347 235 194 71 | 2220 2346 235 194 72 | 2507 2345 235 194 73 | 205 2546 235 194 74 | 493 2545 235 194 75 | 781 2545 235 194 76 | 1069 2544 235 194 77 | 1357 2543 235 194 78 | 1645 2543 235 194 79 | 1933 2542 235 194 80 | 2221 2541 235 194 81 | 2509 2540 235 194 82 | 206 2740 235 194 83 | 494 2740 235 194 84 | 782 2739 235 194 85 | 1070 2739 235 194 86 | 1358 2738 235 194 87 | 1646 2737 235 194 88 | 1934 2737 235 194 89 | 2222 2736 235 194 90 | 2510 2736 235 194 91 | 207 2934 235 194 92 | 495 2934 235 194 93 | 783 2934 235 194 94 | 1071 2933 235 194 95 | 1359 2933 235 194 96 | 1647 2932 235 194 97 | 1935 2932 235 194 98 | 2223 2931 235 194 99 | 2511 2931 235 194 100 | 209 3129 235 194 101 | 496 3128 235 194 102 | 784 3128 235 194 103 | 1072 3128 235 194 104 | 1360 3127 235 194 105 | 1648 3127 235 194 106 | 1936 3127 235 194 107 | 2224 3127 235 194 108 | 2512 3126 235 194 109 | 210 3323 235 194 110 | 498 3323 235 194 111 | 785 3322 235 194 112 | 1073 3322 235 194 113 | 1361 3322 235 194 114 | 1649 3322 235 194 115 | 1937 3322 235 194 116 | 2225 3322 235 194 117 | 2513 3322 235 194 118 | 211 3517 235 194 119 | 499 3517 235 194 120 | 787 3517 235 194 121 | 1074 3517 235 194 122 | 1362 3517 235 194 123 | 1650 3517 235 194 124 | 1938 3517 235 194 125 | 2226 3517 235 194 126 | 2514 3517 235 194 127 | 212 3711 235 194 128 | 500 3711 235 194 129 | 788 3711 235 194 130 | 1076 3711 235 194 131 | 1363 3712 235 194 132 | 1651 3712 235 194 133 | 1939 3712 235 194 134 | 2227 3712 235 194 135 | 2515 3712 235 194 136 | 213 3905 235 194 137 | 501 3905 235 194 138 | 789 3906 235 194 139 | 1077 3906 235 194 140 | 1365 3906 235 194 141 | 1652 3907 235 194 142 | 1940 3907 235 194 143 | 2228 3907 235 194 144 | 2516 3908 235 194 145 | 215 4099 235 194 146 | 502 4100 235 194 147 | 790 4100 235 194 148 | 1078 4101 235 194 149 | 1366 4101 235 194 150 | 1653 4102 235 194 151 | 1941 4102 235 194 152 | 2229 4102 235 194 153 | 2517 4103 235 194 154 | 216 4293 235 194 155 | 503 4294 235 194 156 | 791 4295 235 194 157 | 1079 4295 235 194 158 | 1367 4296 235 194 159 | 1654 4296 235 194 160 | 1942 4297 235 194 161 | 2230 4298 235 194 162 | 2518 4298 235 194 163 | 217 4487 235 194 164 | 505 4488 235 194 165 | 792 4489 235 194 166 | 1080 4490 235 194 167 | 1368 4491 235 194 168 | 1656 4491 235 194 169 | 1943 4492 235 194 170 | 2231 4493 235 194 171 | 2519 4494 235 194 172 | 218 4681 235 194 173 | 506 4682 235 194 174 | 794 4683 235 194 175 | 1081 4684 235 194 176 | 1369 4685 235 194 177 | 1657 4686 235 194 178 | 1944 4687 235 194 179 | 2232 4688 235 194 180 | 2520 4689 235 194 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 305 | 0 0 0 0 306 | 0 0 0 0 307 | 0 0 0 0 308 | 0 0 0 0 309 | 0 0 0 0 310 | 0 0 0 0 311 | 0 0 0 0 312 | 0 0 0 0 313 | 0 0 0 0 314 | 0 0 0 0 315 | 0 0 0 0 316 | 0 0 0 0 317 | 0 0 0 0 318 | 0 0 0 0 319 | 0 0 0 0 320 | 0 0 0 0 321 | 0 0 0 0 322 | 0 0 0 0 323 | 0 0 0 0 324 | 0 0 0 0 325 | 0 0 0 0 326 | 0 0 0 0 327 | 0 0 0 0 328 | 0 0 0 0 329 | 0 0 0 0 330 | 0 0 0 0 331 | 0 0 0 0 332 | 0 0 0 0 333 | 0 0 0 0 334 | 0 0 0 0 335 | 0 0 0 0 336 | 0 0 0 0 337 | 0 0 0 0 338 | 0 0 0 0 339 | 0 0 0 0 340 | 0 0 0 0 341 | 0 0 0 0 342 | 0 0 0 0 343 | 0 0 0 0 344 | 0 0 0 0 345 | 0 0 0 0 346 | 0 0 0 0 347 | 0 0 0 0 348 | 0 0 0 0 349 | 0 0 0 0 350 | 0 0 0 0 351 | 0 0 0 0 352 | 0 0 0 0 353 | 0 0 0 0 354 | 0 0 0 0 355 | 0 0 0 0 356 | 0 0 0 0 357 | 0 0 0 0 358 | 0 0 0 0 359 | 0 0 0 0 360 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/H166.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H166.tsv -------------------------------------------------------------------------------- /data/rects/H167.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H167.tsv -------------------------------------------------------------------------------- /data/rects/H168.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H168.tsv -------------------------------------------------------------------------------- /data/rects/H169.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H169.tsv -------------------------------------------------------------------------------- /data/rects/H170.tsv: -------------------------------------------------------------------------------- 1 | 194 967 236 194 2 | 484 965 236 194 3 | 774 963 236 194 4 | 1065 961 236 194 5 | 1355 959 236 194 6 | 1645 956 236 194 7 | 1936 954 236 194 8 | 2226 952 236 194 9 | 2516 950 236 194 10 | 194 1161 236 194 11 | 484 1159 236 194 12 | 774 1157 236 194 13 | 1065 1155 236 194 14 | 1355 1153 236 194 15 | 1645 1151 236 194 16 | 1935 1149 236 194 17 | 2225 1147 236 194 18 | 2515 1145 236 194 19 | 195 1354 236 194 20 | 485 1353 236 194 21 | 775 1351 236 194 22 | 1065 1349 236 194 23 | 1354 1347 236 194 24 | 1644 1346 236 194 25 | 1934 1344 236 194 26 | 2224 1342 236 194 27 | 2514 1340 236 194 28 | 195 1548 236 194 29 | 485 1546 236 194 30 | 775 1545 236 194 31 | 1064 1543 236 194 32 | 1354 1542 236 194 33 | 1644 1540 236 194 34 | 1934 1539 236 194 35 | 2223 1537 236 194 36 | 2513 1536 236 194 37 | 196 1741 236 194 38 | 485 1740 236 194 39 | 775 1739 236 194 40 | 1064 1737 236 194 41 | 1354 1736 236 194 42 | 1644 1735 236 194 43 | 1933 1734 236 194 44 | 2223 1732 236 194 45 | 2512 1731 236 194 46 | 196 1935 236 194 47 | 486 1934 236 194 48 | 775 1933 236 194 49 | 1064 1932 236 194 50 | 1354 1931 236 194 51 | 1643 1929 236 194 52 | 1932 1928 236 194 53 | 2222 1927 236 194 54 | 2511 1926 236 194 55 | 197 2128 236 194 56 | 486 2128 236 194 57 | 775 2127 236 194 58 | 1064 2126 236 194 59 | 1353 2125 236 194 60 | 1643 2124 236 194 61 | 1932 2123 236 194 62 | 2221 2122 236 194 63 | 2510 2121 236 194 64 | 197 2322 236 194 65 | 486 2321 236 194 66 | 775 2321 236 194 67 | 1064 2320 236 194 68 | 1353 2319 236 194 69 | 1642 2319 236 194 70 | 1931 2318 236 194 71 | 2220 2317 236 194 72 | 2509 2317 236 194 73 | 198 2515 236 194 74 | 486 2515 236 194 75 | 775 2515 236 194 76 | 1064 2514 236 194 77 | 1353 2514 236 194 78 | 1642 2513 236 194 79 | 1931 2513 236 194 80 | 2219 2512 236 194 81 | 2508 2512 236 194 82 | 198 2709 236 194 83 | 487 2709 236 194 84 | 775 2709 236 194 85 | 1064 2708 236 194 86 | 1353 2708 236 194 87 | 1641 2708 236 194 88 | 1930 2708 236 194 89 | 2219 2707 236 194 90 | 2507 2707 236 194 91 | 199 2903 236 194 92 | 487 2903 236 194 93 | 776 2903 236 194 94 | 1064 2903 236 194 95 | 1352 2903 236 194 96 | 1641 2903 236 194 97 | 1929 2903 236 194 98 | 2218 2903 236 194 99 | 2506 2903 236 194 100 | 199 3096 236 194 101 | 487 3096 236 194 102 | 776 3096 236 194 103 | 1064 3097 236 194 104 | 1352 3097 236 194 105 | 1640 3097 236 194 106 | 1929 3097 236 194 107 | 2217 3098 236 194 108 | 2505 3098 236 194 109 | 200 3290 236 194 110 | 488 3290 236 194 111 | 776 3290 236 194 112 | 1064 3291 236 194 113 | 1352 3291 236 194 114 | 1640 3292 236 194 115 | 1928 3292 236 194 116 | 2216 3293 236 194 117 | 2504 3293 236 194 118 | 200 3483 236 194 119 | 488 3484 236 194 120 | 776 3484 236 194 121 | 1064 3485 236 194 122 | 1352 3486 236 194 123 | 1640 3486 236 194 124 | 1927 3487 236 194 125 | 2215 3488 236 194 126 | 2503 3488 236 194 127 | 201 3677 236 194 128 | 488 3677 236 194 129 | 776 3678 236 194 130 | 1064 3679 236 194 131 | 1351 3680 236 194 132 | 1639 3681 236 194 133 | 1927 3682 236 194 134 | 2214 3683 236 194 135 | 2502 3684 236 194 136 | 201 3870 236 194 137 | 489 3871 236 194 138 | 776 3872 236 194 139 | 1064 3873 236 194 140 | 1351 3874 236 194 141 | 1639 3876 236 194 142 | 1926 3877 236 194 143 | 2214 3878 236 194 144 | 2501 3879 236 194 145 | 202 4064 236 194 146 | 489 4065 236 194 147 | 776 4066 236 194 148 | 1064 4068 236 194 149 | 1351 4069 236 194 150 | 1638 4070 236 194 151 | 1926 4071 236 194 152 | 2213 4073 236 194 153 | 2500 4074 236 194 154 | 202 4257 236 194 155 | 489 4259 236 194 156 | 776 4260 236 194 157 | 1063 4262 236 194 158 | 1351 4263 236 194 159 | 1638 4265 236 194 160 | 1925 4266 236 194 161 | 2212 4268 236 194 162 | 2499 4269 236 194 163 | 202 4451 236 194 164 | 489 4452 236 194 165 | 776 4454 236 194 166 | 1063 4456 236 194 167 | 1350 4458 236 194 168 | 1637 4459 236 194 169 | 1924 4461 236 194 170 | 2211 4463 236 194 171 | 2498 4465 236 194 172 | 203 4644 236 194 173 | 490 4646 236 194 174 | 777 4648 236 194 175 | 1063 4650 236 194 176 | 1350 4652 236 194 177 | 1637 4654 236 194 178 | 1924 4656 236 194 179 | 2210 4658 236 194 180 | 2497 4660 236 194 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 305 | 0 0 0 0 306 | 0 0 0 0 307 | 0 0 0 0 308 | 0 0 0 0 309 | 0 0 0 0 310 | 0 0 0 0 311 | 0 0 0 0 312 | 0 0 0 0 313 | 0 0 0 0 314 | 0 0 0 0 315 | 0 0 0 0 316 | 0 0 0 0 317 | 0 0 0 0 318 | 0 0 0 0 319 | 0 0 0 0 320 | 0 0 0 0 321 | 0 0 0 0 322 | 0 0 0 0 323 | 0 0 0 0 324 | 0 0 0 0 325 | 0 0 0 0 326 | 0 0 0 0 327 | 0 0 0 0 328 | 0 0 0 0 329 | 0 0 0 0 330 | 0 0 0 0 331 | 0 0 0 0 332 | 0 0 0 0 333 | 0 0 0 0 334 | 0 0 0 0 335 | 0 0 0 0 336 | 0 0 0 0 337 | 0 0 0 0 338 | 0 0 0 0 339 | 0 0 0 0 340 | 0 0 0 0 341 | 0 0 0 0 342 | 0 0 0 0 343 | 0 0 0 0 344 | 0 0 0 0 345 | 0 0 0 0 346 | 0 0 0 0 347 | 0 0 0 0 348 | 0 0 0 0 349 | 0 0 0 0 350 | 0 0 0 0 351 | 0 0 0 0 352 | 0 0 0 0 353 | 0 0 0 0 354 | 0 0 0 0 355 | 0 0 0 0 356 | 0 0 0 0 357 | 0 0 0 0 358 | 0 0 0 0 359 | 0 0 0 0 360 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/H2.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H2.tsv -------------------------------------------------------------------------------- /data/rects/H208.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H208.tsv -------------------------------------------------------------------------------- /data/rects/H209.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H209.tsv -------------------------------------------------------------------------------- /data/rects/H210.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H210.tsv -------------------------------------------------------------------------------- /data/rects/H211.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H211.tsv -------------------------------------------------------------------------------- /data/rects/H212.tsv: -------------------------------------------------------------------------------- 1 | 205 957 233 191 2 | 490 954 233 191 3 | 776 952 233 191 4 | 1061 949 233 191 5 | 1347 946 233 191 6 | 1632 943 233 191 7 | 1918 940 233 191 8 | 2203 937 233 191 9 | 2489 935 233 191 10 | 207 1149 233 191 11 | 492 1146 233 191 12 | 777 1143 233 191 13 | 1063 1141 233 191 14 | 1348 1138 233 191 15 | 1634 1135 233 191 16 | 1919 1133 233 191 17 | 2204 1130 233 191 18 | 2490 1127 233 191 19 | 209 1340 233 191 20 | 494 1338 233 191 21 | 779 1335 233 191 22 | 1064 1333 233 191 23 | 1349 1330 233 191 24 | 1635 1328 233 191 25 | 1920 1325 233 191 26 | 2205 1323 233 191 27 | 2490 1320 233 191 28 | 211 1532 233 191 29 | 496 1529 233 191 30 | 781 1527 233 191 31 | 1066 1525 233 191 32 | 1351 1522 233 191 33 | 1636 1520 233 191 34 | 1921 1518 233 191 35 | 2206 1515 233 191 36 | 2491 1513 233 191 37 | 212 1723 233 191 38 | 497 1721 233 191 39 | 782 1719 233 191 40 | 1067 1717 233 191 41 | 1352 1715 233 191 42 | 1637 1712 233 191 43 | 1922 1710 233 191 44 | 2207 1708 233 191 45 | 2492 1706 233 191 46 | 214 1915 233 191 47 | 499 1913 233 191 48 | 784 1911 233 191 49 | 1069 1909 233 191 50 | 1353 1907 233 191 51 | 1638 1905 233 191 52 | 1923 1903 233 191 53 | 2207 1901 233 191 54 | 2492 1899 233 191 55 | 216 2106 233 191 56 | 501 2104 233 191 57 | 785 2103 233 191 58 | 1070 2101 233 191 59 | 1355 2099 233 191 60 | 1639 2097 233 191 61 | 1924 2095 233 191 62 | 2208 2093 233 191 63 | 2493 2092 233 191 64 | 218 2298 233 191 65 | 502 2296 233 191 66 | 787 2294 233 191 67 | 1071 2293 233 191 68 | 1356 2291 233 191 69 | 1640 2289 233 191 70 | 1925 2288 233 191 71 | 2209 2286 233 191 72 | 2494 2284 233 191 73 | 220 2489 233 191 74 | 504 2488 233 191 75 | 789 2486 233 191 76 | 1073 2485 233 191 77 | 1357 2483 233 191 78 | 1641 2482 233 191 79 | 1926 2480 233 191 80 | 2210 2479 233 191 81 | 2494 2477 233 191 82 | 222 2681 233 191 83 | 506 2680 233 191 84 | 790 2678 233 191 85 | 1074 2677 233 191 86 | 1358 2675 233 191 87 | 1643 2674 233 191 88 | 1927 2673 233 191 89 | 2211 2671 233 191 90 | 2495 2670 233 191 91 | 224 2872 233 191 92 | 508 2871 233 191 93 | 792 2870 233 191 94 | 1076 2869 233 191 95 | 1360 2868 233 191 96 | 1644 2866 233 191 97 | 1928 2865 233 191 98 | 2212 2864 233 191 99 | 2496 2863 233 191 100 | 226 3064 233 191 101 | 509 3063 233 191 102 | 793 3062 233 191 103 | 1077 3061 233 191 104 | 1361 3060 233 191 105 | 1645 3059 233 191 106 | 1929 3058 233 191 107 | 2212 3057 233 191 108 | 2496 3056 233 191 109 | 227 3255 233 191 110 | 511 3255 233 191 111 | 795 3254 233 191 112 | 1079 3253 233 191 113 | 1362 3252 233 191 114 | 1646 3251 233 191 115 | 1930 3250 233 191 116 | 2213 3249 233 191 117 | 2497 3248 233 191 118 | 229 3447 233 191 119 | 513 3446 233 191 120 | 796 3446 233 191 121 | 1080 3445 233 191 122 | 1363 3444 233 191 123 | 1647 3443 233 191 124 | 1931 3443 233 191 125 | 2214 3442 233 191 126 | 2498 3441 233 191 127 | 231 3638 233 191 128 | 515 3638 233 191 129 | 798 3637 233 191 130 | 1081 3637 233 191 131 | 1365 3636 233 191 132 | 1648 3636 233 191 133 | 1931 3635 233 191 134 | 2215 3635 233 191 135 | 2498 3634 233 191 136 | 233 3830 233 191 137 | 516 3830 233 191 138 | 800 3829 233 191 139 | 1083 3829 233 191 140 | 1366 3828 233 191 141 | 1649 3828 233 191 142 | 1932 3828 233 191 143 | 2216 3827 233 191 144 | 2499 3827 233 191 145 | 235 4021 233 191 146 | 518 4021 233 191 147 | 801 4021 233 191 148 | 1084 4021 233 191 149 | 1367 4021 233 191 150 | 1650 4020 233 191 151 | 1933 4020 233 191 152 | 2217 4020 233 191 153 | 2500 4020 233 191 154 | 237 4213 233 191 155 | 520 4213 233 191 156 | 803 4213 233 191 157 | 1086 4213 233 191 158 | 1369 4213 233 191 159 | 1651 4213 233 191 160 | 1934 4213 233 191 161 | 2217 4213 233 191 162 | 2500 4213 233 191 163 | 239 4405 233 191 164 | 522 4405 233 191 165 | 804 4405 233 191 166 | 1087 4405 233 191 167 | 1370 4405 233 191 168 | 1653 4405 233 191 169 | 1935 4405 233 191 170 | 2218 4405 233 191 171 | 2501 4405 233 191 172 | 241 4596 233 191 173 | 523 4596 233 191 174 | 806 4597 233 191 175 | 1089 4597 233 191 176 | 1371 4597 233 191 177 | 1654 4597 233 191 178 | 1936 4598 233 191 179 | 2219 4598 233 191 180 | 2502 4598 233 191 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 305 | 0 0 0 0 306 | 0 0 0 0 307 | 0 0 0 0 308 | 0 0 0 0 309 | 0 0 0 0 310 | 0 0 0 0 311 | 0 0 0 0 312 | 0 0 0 0 313 | 0 0 0 0 314 | 0 0 0 0 315 | 0 0 0 0 316 | 0 0 0 0 317 | 0 0 0 0 318 | 0 0 0 0 319 | 0 0 0 0 320 | 0 0 0 0 321 | 0 0 0 0 322 | 0 0 0 0 323 | 0 0 0 0 324 | 0 0 0 0 325 | 0 0 0 0 326 | 0 0 0 0 327 | 0 0 0 0 328 | 0 0 0 0 329 | 0 0 0 0 330 | 0 0 0 0 331 | 0 0 0 0 332 | 0 0 0 0 333 | 0 0 0 0 334 | 0 0 0 0 335 | 0 0 0 0 336 | 0 0 0 0 337 | 0 0 0 0 338 | 0 0 0 0 339 | 0 0 0 0 340 | 0 0 0 0 341 | 0 0 0 0 342 | 0 0 0 0 343 | 0 0 0 0 344 | 0 0 0 0 345 | 0 0 0 0 346 | 0 0 0 0 347 | 0 0 0 0 348 | 0 0 0 0 349 | 0 0 0 0 350 | 0 0 0 0 351 | 0 0 0 0 352 | 0 0 0 0 353 | 0 0 0 0 354 | 0 0 0 0 355 | 0 0 0 0 356 | 0 0 0 0 357 | 0 0 0 0 358 | 0 0 0 0 359 | 0 0 0 0 360 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/H261.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H261.tsv -------------------------------------------------------------------------------- /data/rects/H262.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H262.tsv -------------------------------------------------------------------------------- /data/rects/H263.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H263.tsv -------------------------------------------------------------------------------- /data/rects/H264.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H264.tsv -------------------------------------------------------------------------------- /data/rects/H265.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H265.tsv -------------------------------------------------------------------------------- /data/rects/H266.tsv: -------------------------------------------------------------------------------- 1 | 205 953 231 194 2 | 488 950 231 194 3 | 772 948 231 194 4 | 1056 945 231 194 5 | 1340 942 231 194 6 | 1623 939 231 194 7 | 1907 936 231 194 8 | 2191 933 231 194 9 | 2475 931 231 194 10 | 205 1146 231 194 11 | 489 1144 231 194 12 | 773 1141 231 194 13 | 1057 1139 231 194 14 | 1341 1136 231 194 15 | 1624 1133 231 194 16 | 1908 1131 231 194 17 | 2192 1128 231 194 18 | 2476 1126 231 194 19 | 206 1339 231 194 20 | 490 1337 231 194 21 | 774 1335 231 194 22 | 1058 1332 231 194 23 | 1342 1330 231 194 24 | 1626 1328 231 194 25 | 1909 1326 231 194 26 | 2193 1323 231 194 27 | 2477 1321 231 194 28 | 206 1532 231 194 29 | 490 1530 231 194 30 | 774 1528 231 194 31 | 1059 1526 231 194 32 | 1343 1524 231 194 33 | 1627 1522 231 194 34 | 1911 1520 231 194 35 | 2195 1518 231 194 36 | 2479 1516 231 194 37 | 207 1725 231 194 38 | 491 1724 231 194 39 | 775 1722 231 194 40 | 1059 1720 231 194 41 | 1344 1718 231 194 42 | 1628 1717 231 194 43 | 1912 1715 231 194 44 | 2196 1713 231 194 45 | 2480 1711 231 194 46 | 208 1918 231 194 47 | 492 1917 231 194 48 | 776 1915 231 194 49 | 1060 1914 231 194 50 | 1345 1912 231 194 51 | 1629 1911 231 194 52 | 1913 1910 231 194 53 | 2197 1908 231 194 54 | 2482 1907 231 194 55 | 208 2111 231 194 56 | 493 2110 231 194 57 | 777 2109 231 194 58 | 1061 2108 231 194 59 | 1346 2107 231 194 60 | 1630 2105 231 194 61 | 1914 2104 231 194 62 | 2199 2103 231 194 63 | 2483 2102 231 194 64 | 209 2304 231 194 65 | 493 2303 231 194 66 | 778 2303 231 194 67 | 1062 2302 231 194 68 | 1347 2301 231 194 69 | 1631 2300 231 194 70 | 1915 2299 231 194 71 | 2200 2298 231 194 72 | 2484 2297 231 194 73 | 209 2497 231 194 74 | 494 2497 231 194 75 | 778 2496 231 194 76 | 1063 2495 231 194 77 | 1348 2495 231 194 78 | 1632 2494 231 194 79 | 1917 2494 231 194 80 | 2201 2493 231 194 81 | 2486 2492 231 194 82 | 210 2690 231 194 83 | 495 2690 231 194 84 | 779 2690 231 194 85 | 1064 2689 231 194 86 | 1349 2689 231 194 87 | 1633 2689 231 194 88 | 1918 2688 231 194 89 | 2203 2688 231 194 90 | 2487 2687 231 194 91 | 211 2883 231 194 92 | 495 2883 231 194 93 | 780 2883 231 194 94 | 1065 2883 231 194 95 | 1350 2883 231 194 96 | 1634 2883 231 194 97 | 1919 2883 231 194 98 | 2204 2883 231 194 99 | 2489 2883 231 194 100 | 211 3077 231 194 101 | 496 3077 231 194 102 | 781 3077 231 194 103 | 1066 3077 231 194 104 | 1351 3077 231 194 105 | 1635 3077 231 194 106 | 1920 3077 231 194 107 | 2205 3078 231 194 108 | 2490 3078 231 194 109 | 212 3270 231 194 110 | 497 3270 231 194 111 | 782 3270 231 194 112 | 1067 3271 231 194 113 | 1352 3271 231 194 114 | 1637 3272 231 194 115 | 1921 3272 231 194 116 | 2206 3273 231 194 117 | 2491 3273 231 194 118 | 212 3463 231 194 119 | 497 3463 231 194 120 | 783 3464 231 194 121 | 1068 3465 231 194 122 | 1353 3465 231 194 123 | 1638 3466 231 194 124 | 1923 3467 231 194 125 | 2208 3468 231 194 126 | 2493 3468 231 194 127 | 213 3656 231 194 128 | 498 3657 231 194 129 | 783 3658 231 194 130 | 1068 3659 231 194 131 | 1354 3660 231 194 132 | 1639 3660 231 194 133 | 1924 3661 231 194 134 | 2209 3662 231 194 135 | 2494 3663 231 194 136 | 214 3849 231 194 137 | 499 3850 231 194 138 | 784 3851 231 194 139 | 1069 3852 231 194 140 | 1355 3854 231 194 141 | 1640 3855 231 194 142 | 1925 3856 231 194 143 | 2210 3857 231 194 144 | 2496 3859 231 194 145 | 214 4042 231 194 146 | 500 4043 231 194 147 | 785 4045 231 194 148 | 1070 4046 231 194 149 | 1356 4048 231 194 150 | 1641 4049 231 194 151 | 1926 4051 231 194 152 | 2212 4052 231 194 153 | 2497 4054 231 194 154 | 215 4235 231 194 155 | 500 4236 231 194 156 | 786 4238 231 194 157 | 1071 4240 231 194 158 | 1357 4242 231 194 159 | 1642 4244 231 194 160 | 1927 4245 231 194 161 | 2213 4247 231 194 162 | 2498 4249 231 194 163 | 215 4428 231 194 164 | 501 4430 231 194 165 | 787 4432 231 194 166 | 1072 4434 231 194 167 | 1358 4436 231 194 168 | 1643 4438 231 194 169 | 1929 4440 231 194 170 | 2214 4442 231 194 171 | 2500 4444 231 194 172 | 216 4621 231 194 173 | 502 4623 231 194 174 | 787 4625 231 194 175 | 1073 4628 231 194 176 | 1359 4630 231 194 177 | 1644 4632 231 194 178 | 1930 4635 231 194 179 | 2215 4637 231 194 180 | 2501 4639 231 194 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 305 | 0 0 0 0 306 | 0 0 0 0 307 | 0 0 0 0 308 | 0 0 0 0 309 | 0 0 0 0 310 | 0 0 0 0 311 | 0 0 0 0 312 | 0 0 0 0 313 | 0 0 0 0 314 | 0 0 0 0 315 | 0 0 0 0 316 | 0 0 0 0 317 | 0 0 0 0 318 | 0 0 0 0 319 | 0 0 0 0 320 | 0 0 0 0 321 | 0 0 0 0 322 | 0 0 0 0 323 | 0 0 0 0 324 | 0 0 0 0 325 | 0 0 0 0 326 | 0 0 0 0 327 | 0 0 0 0 328 | 0 0 0 0 329 | 0 0 0 0 330 | 0 0 0 0 331 | 0 0 0 0 332 | 0 0 0 0 333 | 0 0 0 0 334 | 0 0 0 0 335 | 0 0 0 0 336 | 0 0 0 0 337 | 0 0 0 0 338 | 0 0 0 0 339 | 0 0 0 0 340 | 0 0 0 0 341 | 0 0 0 0 342 | 0 0 0 0 343 | 0 0 0 0 344 | 0 0 0 0 345 | 0 0 0 0 346 | 0 0 0 0 347 | 0 0 0 0 348 | 0 0 0 0 349 | 0 0 0 0 350 | 0 0 0 0 351 | 0 0 0 0 352 | 0 0 0 0 353 | 0 0 0 0 354 | 0 0 0 0 355 | 0 0 0 0 356 | 0 0 0 0 357 | 0 0 0 0 358 | 0 0 0 0 359 | 0 0 0 0 360 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/H3.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H3.tsv -------------------------------------------------------------------------------- /data/rects/H306.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H306.tsv -------------------------------------------------------------------------------- /data/rects/H307.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H307.tsv -------------------------------------------------------------------------------- /data/rects/H308.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H308.tsv -------------------------------------------------------------------------------- /data/rects/H309.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H309.tsv -------------------------------------------------------------------------------- /data/rects/H310.tsv: -------------------------------------------------------------------------------- 1 | 203 941 233 191 2 | 489 938 233 191 3 | 775 934 233 191 4 | 1061 931 233 191 5 | 1347 927 233 191 6 | 1633 924 233 191 7 | 1919 920 233 191 8 | 2205 917 233 191 9 | 2490 913 233 191 10 | 205 1134 233 191 11 | 491 1131 233 191 12 | 777 1127 233 191 13 | 1062 1124 233 191 14 | 1348 1120 233 191 15 | 1634 1117 233 191 16 | 1920 1113 233 191 17 | 2206 1110 233 191 18 | 2492 1107 233 191 19 | 207 1327 233 191 20 | 493 1324 233 191 21 | 778 1320 233 191 22 | 1064 1317 233 191 23 | 1350 1314 233 191 24 | 1636 1310 233 191 25 | 1921 1307 233 191 26 | 2207 1303 233 191 27 | 2493 1300 233 191 28 | 209 1520 233 191 29 | 495 1517 233 191 30 | 780 1513 233 191 31 | 1066 1510 233 191 32 | 1351 1507 233 191 33 | 1637 1503 233 191 34 | 1923 1500 233 191 35 | 2208 1496 233 191 36 | 2494 1493 233 191 37 | 211 1713 233 191 38 | 496 1710 233 191 39 | 782 1706 233 191 40 | 1067 1703 233 191 41 | 1353 1700 233 191 42 | 1638 1696 233 191 43 | 1924 1693 233 191 44 | 2209 1690 233 191 45 | 2495 1686 233 191 46 | 213 1906 233 191 47 | 498 1903 233 191 48 | 784 1900 233 191 49 | 1069 1896 233 191 50 | 1354 1893 233 191 51 | 1640 1890 233 191 52 | 1925 1886 233 191 53 | 2211 1883 233 191 54 | 2496 1880 233 191 55 | 215 2099 233 191 56 | 500 2096 233 191 57 | 785 2093 233 191 58 | 1071 2089 233 191 59 | 1356 2086 233 191 60 | 1641 2083 233 191 61 | 1927 2079 233 191 62 | 2212 2076 233 191 63 | 2497 2073 233 191 64 | 217 2292 233 191 65 | 502 2289 233 191 66 | 787 2286 233 191 67 | 1072 2282 233 191 68 | 1358 2279 233 191 69 | 1643 2276 233 191 70 | 1928 2273 233 191 71 | 2213 2269 233 191 72 | 2498 2266 233 191 73 | 219 2485 233 191 74 | 504 2482 233 191 75 | 789 2479 233 191 76 | 1074 2476 233 191 77 | 1359 2472 233 191 78 | 1644 2469 233 191 79 | 1929 2466 233 191 80 | 2214 2463 233 191 81 | 2499 2459 233 191 82 | 221 2678 233 191 83 | 506 2675 233 191 84 | 791 2672 233 191 85 | 1076 2669 233 191 86 | 1361 2665 233 191 87 | 1646 2662 233 191 88 | 1931 2659 233 191 89 | 2216 2656 233 191 90 | 2501 2653 233 191 91 | 223 2871 233 191 92 | 508 2868 233 191 93 | 793 2865 233 191 94 | 1077 2862 233 191 95 | 1362 2859 233 191 96 | 1647 2855 233 191 97 | 1932 2852 233 191 98 | 2217 2849 233 191 99 | 2502 2846 233 191 100 | 225 3064 233 191 101 | 510 3061 233 191 102 | 794 3058 233 191 103 | 1079 3055 233 191 104 | 1364 3052 233 191 105 | 1649 3049 233 191 106 | 1933 3045 233 191 107 | 2218 3042 233 191 108 | 2503 3039 233 191 109 | 227 3257 233 191 110 | 511 3254 233 191 111 | 796 3251 233 191 112 | 1081 3248 233 191 113 | 1365 3245 233 191 114 | 1650 3242 233 191 115 | 1935 3239 233 191 116 | 2219 3236 233 191 117 | 2504 3232 233 191 118 | 229 3450 233 191 119 | 513 3447 233 191 120 | 798 3444 233 191 121 | 1082 3441 233 191 122 | 1367 3438 233 191 123 | 1651 3435 233 191 124 | 1936 3432 233 191 125 | 2220 3429 233 191 126 | 2505 3426 233 191 127 | 231 3643 233 191 128 | 515 3640 233 191 129 | 800 3637 233 191 130 | 1084 3634 233 191 131 | 1368 3631 233 191 132 | 1653 3628 233 191 133 | 1937 3625 233 191 134 | 2222 3622 233 191 135 | 2506 3619 233 191 136 | 233 3836 233 191 137 | 517 3833 233 191 138 | 801 3830 233 191 139 | 1086 3827 233 191 140 | 1370 3824 233 191 141 | 1654 3821 233 191 142 | 1939 3818 233 191 143 | 2223 3815 233 191 144 | 2507 3812 233 191 145 | 235 4029 233 191 146 | 519 4026 233 191 147 | 803 4023 233 191 148 | 1087 4020 233 191 149 | 1372 4017 233 191 150 | 1656 4014 233 191 151 | 1940 4011 233 191 152 | 2224 4008 233 191 153 | 2508 4006 233 191 154 | 237 4222 233 191 155 | 521 4219 233 191 156 | 805 4216 233 191 157 | 1089 4213 233 191 158 | 1373 4211 233 191 159 | 1657 4208 233 191 160 | 1941 4205 233 191 161 | 2225 4202 233 191 162 | 2509 4199 233 191 163 | 239 4415 233 191 164 | 523 4412 233 191 165 | 807 4409 233 191 166 | 1091 4407 233 191 167 | 1375 4404 233 191 168 | 1659 4401 233 191 169 | 1943 4398 233 191 170 | 2227 4395 233 191 171 | 2511 4392 233 191 172 | 241 4608 233 191 173 | 525 4605 233 191 174 | 808 4603 233 191 175 | 1092 4600 233 191 176 | 1376 4597 233 191 177 | 1660 4594 233 191 178 | 1944 4591 233 191 179 | 2228 4588 233 191 180 | 2512 4585 233 191 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 305 | 0 0 0 0 306 | 0 0 0 0 307 | 0 0 0 0 308 | 0 0 0 0 309 | 0 0 0 0 310 | 0 0 0 0 311 | 0 0 0 0 312 | 0 0 0 0 313 | 0 0 0 0 314 | 0 0 0 0 315 | 0 0 0 0 316 | 0 0 0 0 317 | 0 0 0 0 318 | 0 0 0 0 319 | 0 0 0 0 320 | 0 0 0 0 321 | 0 0 0 0 322 | 0 0 0 0 323 | 0 0 0 0 324 | 0 0 0 0 325 | 0 0 0 0 326 | 0 0 0 0 327 | 0 0 0 0 328 | 0 0 0 0 329 | 0 0 0 0 330 | 0 0 0 0 331 | 0 0 0 0 332 | 0 0 0 0 333 | 0 0 0 0 334 | 0 0 0 0 335 | 0 0 0 0 336 | 0 0 0 0 337 | 0 0 0 0 338 | 0 0 0 0 339 | 0 0 0 0 340 | 0 0 0 0 341 | 0 0 0 0 342 | 0 0 0 0 343 | 0 0 0 0 344 | 0 0 0 0 345 | 0 0 0 0 346 | 0 0 0 0 347 | 0 0 0 0 348 | 0 0 0 0 349 | 0 0 0 0 350 | 0 0 0 0 351 | 0 0 0 0 352 | 0 0 0 0 353 | 0 0 0 0 354 | 0 0 0 0 355 | 0 0 0 0 356 | 0 0 0 0 357 | 0 0 0 0 358 | 0 0 0 0 359 | 0 0 0 0 360 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/H326.tsv: -------------------------------------------------------------------------------- 1 | 300 967 229 190 2 | 582 965 229 190 3 | 863 963 229 190 4 | 1145 961 229 190 5 | 1426 959 229 190 6 | 1708 956 229 190 7 | 1990 954 229 190 8 | 2271 952 229 190 9 | 2553 950 229 190 10 | 300 1158 229 190 11 | 581 1155 229 190 12 | 863 1153 229 190 13 | 1145 1151 229 190 14 | 1427 1149 229 190 15 | 1708 1147 229 190 16 | 1990 1145 229 190 17 | 2272 1143 229 190 18 | 2553 1141 229 190 19 | 299 1348 229 190 20 | 581 1346 229 190 21 | 863 1344 229 190 22 | 1145 1342 229 190 23 | 1427 1340 229 190 24 | 1709 1338 229 190 25 | 1990 1336 229 190 26 | 2272 1334 229 190 27 | 2554 1332 229 190 28 | 299 1538 229 190 29 | 581 1536 229 190 30 | 863 1534 229 190 31 | 1145 1532 229 190 32 | 1427 1530 229 190 33 | 1709 1528 229 190 34 | 1991 1526 229 190 35 | 2273 1525 229 190 36 | 2555 1523 229 190 37 | 299 1728 229 190 38 | 581 1726 229 190 39 | 863 1724 229 190 40 | 1145 1723 229 190 41 | 1427 1721 229 190 42 | 1709 1719 229 190 43 | 1991 1717 229 190 44 | 2273 1715 229 190 45 | 2555 1713 229 190 46 | 298 1918 229 190 47 | 580 1917 229 190 48 | 863 1915 229 190 49 | 1145 1913 229 190 50 | 1427 1911 229 190 51 | 1709 1910 229 190 52 | 1992 1908 229 190 53 | 2274 1906 229 190 54 | 2556 1904 229 190 55 | 298 2109 229 190 56 | 580 2107 229 190 57 | 863 2105 229 190 58 | 1145 2104 229 190 59 | 1427 2102 229 190 60 | 1710 2100 229 190 61 | 1992 2099 229 190 62 | 2274 2097 229 190 63 | 2557 2095 229 190 64 | 297 2299 229 190 65 | 580 2297 229 190 66 | 862 2296 229 190 67 | 1145 2294 229 190 68 | 1427 2292 229 190 69 | 1710 2291 229 190 70 | 1992 2289 229 190 71 | 2275 2288 229 190 72 | 2557 2286 229 190 73 | 297 2489 229 190 74 | 580 2487 229 190 75 | 862 2486 229 190 76 | 1145 2485 229 190 77 | 1428 2483 229 190 78 | 1710 2482 229 190 79 | 1993 2480 229 190 80 | 2275 2479 229 190 81 | 2558 2477 229 190 82 | 297 2679 229 190 83 | 579 2678 229 190 84 | 862 2676 229 190 85 | 1145 2675 229 190 86 | 1428 2674 229 190 87 | 1710 2672 229 190 88 | 1993 2671 229 190 89 | 2276 2669 229 190 90 | 2559 2668 229 190 91 | 296 2869 229 190 92 | 579 2868 229 190 93 | 862 2867 229 190 94 | 1145 2865 229 190 95 | 1428 2864 229 190 96 | 1711 2863 229 190 97 | 1994 2862 229 190 98 | 2276 2860 229 190 99 | 2559 2859 229 190 100 | 296 3060 229 190 101 | 579 3058 229 190 102 | 862 3057 229 190 103 | 1145 3056 229 190 104 | 1428 3055 229 190 105 | 1711 3053 229 190 106 | 1994 3052 229 190 107 | 2277 3051 229 190 108 | 2560 3050 229 190 109 | 295 3250 229 190 110 | 579 3249 229 190 111 | 862 3248 229 190 112 | 1145 3246 229 190 113 | 1428 3245 229 190 114 | 1711 3244 229 190 115 | 1994 3243 229 190 116 | 2278 3242 229 190 117 | 2561 3241 229 190 118 | 295 3440 229 190 119 | 578 3439 229 190 120 | 862 3438 229 190 121 | 1145 3437 229 190 122 | 1428 3436 229 190 123 | 1711 3435 229 190 124 | 1995 3434 229 190 125 | 2278 3433 229 190 126 | 2561 3432 229 190 127 | 295 3630 229 190 128 | 578 3629 229 190 129 | 861 3628 229 190 130 | 1145 3627 229 190 131 | 1428 3626 229 190 132 | 1712 3625 229 190 133 | 1995 3624 229 190 134 | 2279 3624 229 190 135 | 2562 3623 229 190 136 | 294 3820 229 190 137 | 578 3820 229 190 138 | 861 3819 229 190 139 | 1145 3818 229 190 140 | 1428 3817 229 190 141 | 1712 3816 229 190 142 | 1996 3815 229 190 143 | 2279 3814 229 190 144 | 2563 3813 229 190 145 | 294 4011 229 190 146 | 578 4010 229 190 147 | 861 4009 229 190 148 | 1145 4008 229 190 149 | 1429 4007 229 190 150 | 1712 4007 229 190 151 | 1996 4006 229 190 152 | 2280 4005 229 190 153 | 2563 4004 229 190 154 | 293 4201 229 190 155 | 577 4200 229 190 156 | 861 4199 229 190 157 | 1145 4199 229 190 158 | 1429 4198 229 190 159 | 1713 4197 229 190 160 | 1996 4197 229 190 161 | 2280 4196 229 190 162 | 2564 4195 229 190 163 | 293 4391 229 190 164 | 577 4390 229 190 165 | 861 4390 229 190 166 | 1145 4389 229 190 167 | 1429 4389 229 190 168 | 1713 4388 229 190 169 | 1997 4387 229 190 170 | 2281 4387 229 190 171 | 2565 4386 229 190 172 | 293 4581 229 190 173 | 577 4581 229 190 174 | 861 4580 229 190 175 | 1145 4580 229 190 176 | 1429 4579 229 190 177 | 1713 4579 229 190 178 | 1997 4578 229 190 179 | 2281 4578 229 190 180 | 2565 4577 229 190 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 305 | 0 0 0 0 306 | 0 0 0 0 307 | 0 0 0 0 308 | 0 0 0 0 309 | 0 0 0 0 310 | 0 0 0 0 311 | 0 0 0 0 312 | 0 0 0 0 313 | 0 0 0 0 314 | 0 0 0 0 315 | 0 0 0 0 316 | 0 0 0 0 317 | 0 0 0 0 318 | 0 0 0 0 319 | 0 0 0 0 320 | 0 0 0 0 321 | 0 0 0 0 322 | 0 0 0 0 323 | 0 0 0 0 324 | 0 0 0 0 325 | 0 0 0 0 326 | 0 0 0 0 327 | 0 0 0 0 328 | 0 0 0 0 329 | 0 0 0 0 330 | 0 0 0 0 331 | 0 0 0 0 332 | 0 0 0 0 333 | 0 0 0 0 334 | 0 0 0 0 335 | 0 0 0 0 336 | 0 0 0 0 337 | 0 0 0 0 338 | 0 0 0 0 339 | 0 0 0 0 340 | 0 0 0 0 341 | 0 0 0 0 342 | 0 0 0 0 343 | 0 0 0 0 344 | 0 0 0 0 345 | 0 0 0 0 346 | 0 0 0 0 347 | 0 0 0 0 348 | 0 0 0 0 349 | 0 0 0 0 350 | 0 0 0 0 351 | 0 0 0 0 352 | 0 0 0 0 353 | 0 0 0 0 354 | 0 0 0 0 355 | 0 0 0 0 356 | 0 0 0 0 357 | 0 0 0 0 358 | 0 0 0 0 359 | 0 0 0 0 360 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/H341.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H341.tsv -------------------------------------------------------------------------------- /data/rects/H342.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H342.tsv -------------------------------------------------------------------------------- /data/rects/H343.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H343.tsv -------------------------------------------------------------------------------- /data/rects/H344.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H344.tsv -------------------------------------------------------------------------------- /data/rects/H345.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H345.tsv -------------------------------------------------------------------------------- /data/rects/H346.tsv: -------------------------------------------------------------------------------- 1 | 211 919 232 192 2 | 496 916 232 192 3 | 781 914 232 192 4 | 1067 911 232 192 5 | 1352 908 232 192 6 | 1637 905 232 192 7 | 1923 902 232 192 8 | 2208 899 232 192 9 | 2493 897 232 192 10 | 213 1113 232 192 11 | 499 1110 232 192 12 | 784 1108 232 192 13 | 1069 1105 232 192 14 | 1354 1102 232 192 15 | 1640 1099 232 192 16 | 1925 1096 232 192 17 | 2210 1093 232 192 18 | 2495 1090 232 192 19 | 216 1307 232 192 20 | 501 1305 232 192 21 | 786 1302 232 192 22 | 1072 1299 232 192 23 | 1357 1296 232 192 24 | 1642 1293 232 192 25 | 1927 1290 232 192 26 | 2213 1287 232 192 27 | 2498 1284 232 192 28 | 218 1502 232 192 29 | 504 1499 232 192 30 | 789 1496 232 192 31 | 1074 1493 232 192 32 | 1359 1490 232 192 33 | 1644 1487 232 192 34 | 1930 1484 232 192 35 | 2215 1481 232 192 36 | 2500 1478 232 192 37 | 221 1696 232 192 38 | 506 1693 232 192 39 | 791 1690 232 192 40 | 1076 1687 232 192 41 | 1362 1684 232 192 42 | 1647 1681 232 192 43 | 1932 1678 232 192 44 | 2217 1675 232 192 45 | 2502 1672 232 192 46 | 223 1890 232 192 47 | 508 1887 232 192 48 | 794 1884 232 192 49 | 1079 1881 232 192 50 | 1364 1878 232 192 51 | 1649 1874 232 192 52 | 1934 1871 232 192 53 | 2220 1868 232 192 54 | 2505 1865 232 192 55 | 226 2084 232 192 56 | 511 2081 232 192 57 | 796 2078 232 192 58 | 1081 2075 232 192 59 | 1366 2071 232 192 60 | 1652 2068 232 192 61 | 1937 2065 232 192 62 | 2222 2062 232 192 63 | 2507 2059 232 192 64 | 228 2278 232 192 65 | 513 2275 232 192 66 | 799 2272 232 192 67 | 1084 2269 232 192 68 | 1369 2265 232 192 69 | 1654 2262 232 192 70 | 1939 2259 232 192 71 | 2224 2256 232 192 72 | 2509 2253 232 192 73 | 231 2472 232 192 74 | 516 2469 232 192 75 | 801 2466 232 192 76 | 1086 2462 232 192 77 | 1371 2459 232 192 78 | 1656 2456 232 192 79 | 1941 2453 232 192 80 | 2227 2450 232 192 81 | 2512 2447 232 192 82 | 233 2666 232 192 83 | 518 2663 232 192 84 | 803 2660 232 192 85 | 1089 2656 232 192 86 | 1374 2653 232 192 87 | 1659 2650 232 192 88 | 1944 2647 232 192 89 | 2229 2644 232 192 90 | 2514 2640 232 192 91 | 236 2860 232 192 92 | 521 2857 232 192 93 | 806 2854 232 192 94 | 1091 2850 232 192 95 | 1376 2847 232 192 96 | 1661 2844 232 192 97 | 1946 2841 232 192 98 | 2231 2837 232 192 99 | 2516 2834 232 192 100 | 238 3054 232 192 101 | 523 3051 232 192 102 | 808 3048 232 192 103 | 1093 3044 232 192 104 | 1378 3041 232 192 105 | 1664 3038 232 192 106 | 1949 3034 232 192 107 | 2234 3031 232 192 108 | 2519 3028 232 192 109 | 241 3248 232 192 110 | 526 3245 232 192 111 | 811 3242 232 192 112 | 1096 3238 232 192 113 | 1381 3235 232 192 114 | 1666 3232 232 192 115 | 1951 3228 232 192 116 | 2236 3225 232 192 117 | 2521 3222 232 192 118 | 243 3442 232 192 119 | 528 3439 232 192 120 | 813 3436 232 192 121 | 1098 3432 232 192 122 | 1383 3429 232 192 123 | 1668 3426 232 192 124 | 1953 3422 232 192 125 | 2238 3419 232 192 126 | 2523 3415 232 192 127 | 246 3637 232 192 128 | 531 3633 232 192 129 | 816 3630 232 192 130 | 1101 3626 232 192 131 | 1386 3623 232 192 132 | 1671 3619 232 192 133 | 1956 3616 232 192 134 | 2241 3612 232 192 135 | 2526 3609 232 192 136 | 248 3831 232 192 137 | 533 3827 232 192 138 | 818 3824 232 192 139 | 1103 3820 232 192 140 | 1388 3817 232 192 141 | 1673 3813 232 192 142 | 1958 3810 232 192 143 | 2243 3806 232 192 144 | 2528 3803 232 192 145 | 251 4025 232 192 146 | 536 4021 232 192 147 | 821 4018 232 192 148 | 1106 4014 232 192 149 | 1391 4011 232 192 150 | 1675 4007 232 192 151 | 1960 4004 232 192 152 | 2245 4000 232 192 153 | 2530 3997 232 192 154 | 253 4219 232 192 155 | 538 4215 232 192 156 | 823 4212 232 192 157 | 1108 4208 232 192 158 | 1393 4205 232 192 159 | 1678 4201 232 192 160 | 1963 4197 232 192 161 | 2248 4194 232 192 162 | 2533 4190 232 192 163 | 256 4413 232 192 164 | 541 4409 232 192 165 | 826 4406 232 192 166 | 1110 4402 232 192 167 | 1395 4399 232 192 168 | 1680 4395 232 192 169 | 1965 4391 232 192 170 | 2250 4388 232 192 171 | 2535 4384 232 192 172 | 258 4607 232 192 173 | 543 4603 232 192 174 | 828 4600 232 192 175 | 1113 4596 232 192 176 | 1398 4592 232 192 177 | 1683 4589 232 192 178 | 1968 4585 232 192 179 | 2252 4581 232 192 180 | 2537 4578 232 192 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 305 | 0 0 0 0 306 | 0 0 0 0 307 | 0 0 0 0 308 | 0 0 0 0 309 | 0 0 0 0 310 | 0 0 0 0 311 | 0 0 0 0 312 | 0 0 0 0 313 | 0 0 0 0 314 | 0 0 0 0 315 | 0 0 0 0 316 | 0 0 0 0 317 | 0 0 0 0 318 | 0 0 0 0 319 | 0 0 0 0 320 | 0 0 0 0 321 | 0 0 0 0 322 | 0 0 0 0 323 | 0 0 0 0 324 | 0 0 0 0 325 | 0 0 0 0 326 | 0 0 0 0 327 | 0 0 0 0 328 | 0 0 0 0 329 | 0 0 0 0 330 | 0 0 0 0 331 | 0 0 0 0 332 | 0 0 0 0 333 | 0 0 0 0 334 | 0 0 0 0 335 | 0 0 0 0 336 | 0 0 0 0 337 | 0 0 0 0 338 | 0 0 0 0 339 | 0 0 0 0 340 | 0 0 0 0 341 | 0 0 0 0 342 | 0 0 0 0 343 | 0 0 0 0 344 | 0 0 0 0 345 | 0 0 0 0 346 | 0 0 0 0 347 | 0 0 0 0 348 | 0 0 0 0 349 | 0 0 0 0 350 | 0 0 0 0 351 | 0 0 0 0 352 | 0 0 0 0 353 | 0 0 0 0 354 | 0 0 0 0 355 | 0 0 0 0 356 | 0 0 0 0 357 | 0 0 0 0 358 | 0 0 0 0 359 | 0 0 0 0 360 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/H390.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H390.tsv -------------------------------------------------------------------------------- /data/rects/H391.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H391.tsv -------------------------------------------------------------------------------- /data/rects/H392.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H392.tsv -------------------------------------------------------------------------------- /data/rects/H393.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H393.tsv -------------------------------------------------------------------------------- /data/rects/H394.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H394.tsv -------------------------------------------------------------------------------- /data/rects/H395.tsv: -------------------------------------------------------------------------------- 1 | 245 934 183 193 2 | 532 932 183 193 3 | 818 930 183 193 4 | 1105 928 183 193 5 | 1392 926 183 193 6 | 1678 924 183 193 7 | 1965 922 183 193 8 | 2252 920 183 193 9 | 2538 918 183 193 10 | 245 1127 183 193 11 | 532 1125 183 193 12 | 818 1123 183 193 13 | 1105 1121 183 193 14 | 1392 1119 183 193 15 | 1678 1117 183 193 16 | 1965 1115 183 193 17 | 2252 1113 183 193 18 | 2538 1111 183 193 19 | 245 1320 183 193 20 | 532 1318 183 193 21 | 818 1316 183 193 22 | 1105 1314 183 193 23 | 1392 1312 183 193 24 | 1678 1310 183 193 25 | 1965 1308 183 193 26 | 2252 1306 183 193 27 | 2538 1304 183 193 28 | 245 1513 183 193 29 | 532 1511 183 193 30 | 818 1509 183 193 31 | 1105 1507 183 193 32 | 1392 1505 183 193 33 | 1678 1503 183 193 34 | 1965 1501 183 193 35 | 2252 1499 183 193 36 | 2538 1497 183 193 37 | 245 1706 183 193 38 | 532 1704 183 193 39 | 818 1702 183 193 40 | 1105 1700 183 193 41 | 1392 1698 183 193 42 | 1678 1696 183 193 43 | 1965 1694 183 193 44 | 2252 1692 183 193 45 | 2538 1690 183 193 46 | 245 1899 183 193 47 | 532 1897 183 193 48 | 818 1895 183 193 49 | 1105 1893 183 193 50 | 1392 1891 183 193 51 | 1678 1889 183 193 52 | 1965 1887 183 193 53 | 2252 1885 183 193 54 | 2538 1883 183 193 55 | 245 2092 183 193 56 | 532 2090 183 193 57 | 818 2088 183 193 58 | 1105 2086 183 193 59 | 1392 2084 183 193 60 | 1678 2082 183 193 61 | 1965 2080 183 193 62 | 2252 2078 183 193 63 | 2538 2076 183 193 64 | 245 2285 183 193 65 | 532 2283 183 193 66 | 818 2281 183 193 67 | 1105 2279 183 193 68 | 1392 2277 183 193 69 | 1678 2275 183 193 70 | 1965 2273 183 193 71 | 2252 2271 183 193 72 | 2538 2269 183 193 73 | 245 2478 183 193 74 | 532 2476 183 193 75 | 818 2474 183 193 76 | 1105 2472 183 193 77 | 1392 2470 183 193 78 | 1678 2468 183 193 79 | 1965 2466 183 193 80 | 2252 2464 183 193 81 | 2538 2462 183 193 82 | 245 2671 183 193 83 | 532 2669 183 193 84 | 818 2667 183 193 85 | 1105 2665 183 193 86 | 1392 2663 183 193 87 | 1678 2661 183 193 88 | 1965 2659 183 193 89 | 2252 2657 183 193 90 | 2538 2655 183 193 91 | 245 2865 183 193 92 | 532 2863 183 193 93 | 818 2861 183 193 94 | 1105 2859 183 193 95 | 1392 2857 183 193 96 | 1678 2855 183 193 97 | 1965 2853 183 193 98 | 2252 2851 183 193 99 | 2538 2849 183 193 100 | 245 3058 183 193 101 | 532 3056 183 193 102 | 818 3054 183 193 103 | 1105 3052 183 193 104 | 1392 3050 183 193 105 | 1678 3048 183 193 106 | 1965 3046 183 193 107 | 2252 3044 183 193 108 | 2538 3042 183 193 109 | 245 3251 183 193 110 | 532 3249 183 193 111 | 818 3247 183 193 112 | 1105 3245 183 193 113 | 1392 3243 183 193 114 | 1678 3241 183 193 115 | 1965 3239 183 193 116 | 2252 3237 183 193 117 | 2538 3235 183 193 118 | 245 3444 183 193 119 | 532 3442 183 193 120 | 818 3440 183 193 121 | 1105 3438 183 193 122 | 1392 3436 183 193 123 | 1678 3434 183 193 124 | 1965 3432 183 193 125 | 2252 3430 183 193 126 | 2538 3428 183 193 127 | 245 3637 183 193 128 | 532 3635 183 193 129 | 818 3633 183 193 130 | 1105 3631 183 193 131 | 1392 3629 183 193 132 | 1678 3627 183 193 133 | 1965 3625 183 193 134 | 2252 3623 183 193 135 | 2538 3621 183 193 136 | 245 3830 183 193 137 | 532 3828 183 193 138 | 818 3826 183 193 139 | 1105 3824 183 193 140 | 1392 3822 183 193 141 | 1678 3820 183 193 142 | 1965 3818 183 193 143 | 2252 3816 183 193 144 | 2538 3814 183 193 145 | 245 4023 183 193 146 | 532 4021 183 193 147 | 818 4019 183 193 148 | 1105 4017 183 193 149 | 1392 4015 183 193 150 | 1678 4013 183 193 151 | 1965 4011 183 193 152 | 2252 4009 183 193 153 | 2538 4007 183 193 154 | 245 4216 183 193 155 | 532 4214 183 193 156 | 818 4212 183 193 157 | 1105 4210 183 193 158 | 1392 4208 183 193 159 | 1678 4206 183 193 160 | 1965 4204 183 193 161 | 2252 4202 183 193 162 | 2538 4200 183 193 163 | 245 4409 183 193 164 | 532 4407 183 193 165 | 818 4405 183 193 166 | 1105 4403 183 193 167 | 1392 4401 183 193 168 | 1678 4399 183 193 169 | 1965 4397 183 193 170 | 2252 4395 183 193 171 | 2538 4393 183 193 172 | 245 4602 183 193 173 | 532 4600 183 193 174 | 818 4598 183 193 175 | 1105 4596 183 193 176 | 1392 4594 183 193 177 | 1678 4592 183 193 178 | 1965 4590 183 193 179 | 2252 4588 183 193 180 | 2538 4586 183 193 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 305 | 0 0 0 0 306 | 0 0 0 0 307 | 0 0 0 0 308 | 0 0 0 0 309 | 0 0 0 0 310 | 0 0 0 0 311 | 0 0 0 0 312 | 0 0 0 0 313 | 0 0 0 0 314 | 0 0 0 0 315 | 0 0 0 0 316 | 0 0 0 0 317 | 0 0 0 0 318 | 0 0 0 0 319 | 0 0 0 0 320 | 0 0 0 0 321 | 0 0 0 0 322 | 0 0 0 0 323 | 0 0 0 0 324 | 0 0 0 0 325 | 0 0 0 0 326 | 0 0 0 0 327 | 0 0 0 0 328 | 0 0 0 0 329 | 0 0 0 0 330 | 0 0 0 0 331 | 0 0 0 0 332 | 0 0 0 0 333 | 0 0 0 0 334 | 0 0 0 0 335 | 0 0 0 0 336 | 0 0 0 0 337 | 0 0 0 0 338 | 0 0 0 0 339 | 0 0 0 0 340 | 0 0 0 0 341 | 0 0 0 0 342 | 0 0 0 0 343 | 0 0 0 0 344 | 0 0 0 0 345 | 0 0 0 0 346 | 0 0 0 0 347 | 0 0 0 0 348 | 0 0 0 0 349 | 0 0 0 0 350 | 0 0 0 0 351 | 0 0 0 0 352 | 0 0 0 0 353 | 0 0 0 0 354 | 0 0 0 0 355 | 0 0 0 0 356 | 0 0 0 0 357 | 0 0 0 0 358 | 0 0 0 0 359 | 0 0 0 0 360 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/H4.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H4.tsv -------------------------------------------------------------------------------- /data/rects/H40.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H40.tsv -------------------------------------------------------------------------------- /data/rects/H41.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H41.tsv -------------------------------------------------------------------------------- /data/rects/H42.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H42.tsv -------------------------------------------------------------------------------- /data/rects/H421.tsv: -------------------------------------------------------------------------------- 1 | 239 905 232 191 2 | 523 902 232 191 3 | 807 899 232 191 4 | 1092 895 232 191 5 | 1376 892 232 191 6 | 1661 889 232 191 7 | 1945 886 232 191 8 | 2230 882 232 191 9 | 2514 879 232 191 10 | 242 1099 232 191 11 | 526 1096 232 191 12 | 811 1092 232 191 13 | 1095 1089 232 191 14 | 1380 1085 232 191 15 | 1664 1082 232 191 16 | 1949 1079 232 191 17 | 2233 1075 232 191 18 | 2518 1072 232 191 19 | 245 1293 232 191 20 | 530 1289 232 191 21 | 814 1286 232 191 22 | 1099 1282 232 191 23 | 1383 1279 232 191 24 | 1668 1275 232 191 25 | 1952 1272 232 191 26 | 2237 1268 232 191 27 | 2521 1265 232 191 28 | 249 1486 232 191 29 | 533 1483 232 191 30 | 818 1479 232 191 31 | 1102 1475 232 191 32 | 1387 1472 232 191 33 | 1671 1468 232 191 34 | 1956 1465 232 191 35 | 2241 1461 232 191 36 | 2525 1457 232 191 37 | 252 1680 232 191 38 | 536 1676 232 191 39 | 821 1672 232 191 40 | 1106 1669 232 191 41 | 1390 1665 232 191 42 | 1675 1661 232 191 43 | 1960 1657 232 191 44 | 2244 1654 232 191 45 | 2529 1650 232 191 46 | 255 1874 232 191 47 | 540 1870 232 191 48 | 825 1866 232 191 49 | 1109 1862 232 191 50 | 1394 1858 232 191 51 | 1679 1854 232 191 52 | 1963 1850 232 191 53 | 2248 1847 232 191 54 | 2533 1843 232 191 55 | 258 2067 232 191 56 | 543 2063 232 191 57 | 828 2059 232 191 58 | 1113 2055 232 191 59 | 1397 2051 232 191 60 | 1682 2047 232 191 61 | 1967 2043 232 191 62 | 2252 2039 232 191 63 | 2536 2035 232 191 64 | 262 2261 232 191 65 | 547 2257 232 191 66 | 831 2253 232 191 67 | 1116 2249 232 191 68 | 1401 2245 232 191 69 | 1686 2240 232 191 70 | 1971 2236 232 191 71 | 2255 2232 232 191 72 | 2540 2228 232 191 73 | 265 2455 232 191 74 | 550 2450 232 191 75 | 835 2446 232 191 76 | 1120 2442 232 191 77 | 1404 2438 232 191 78 | 1689 2434 232 191 79 | 1974 2429 232 191 80 | 2259 2425 232 191 81 | 2544 2421 232 191 82 | 268 2648 232 191 83 | 553 2644 232 191 84 | 838 2640 232 191 85 | 1123 2635 232 191 86 | 1408 2631 232 191 87 | 1693 2627 232 191 88 | 1978 2622 232 191 89 | 2263 2618 232 191 90 | 2548 2614 232 191 91 | 272 2842 232 191 92 | 557 2838 232 191 93 | 842 2833 232 191 94 | 1127 2829 232 191 95 | 1412 2824 232 191 96 | 1697 2820 232 191 97 | 1981 2815 232 191 98 | 2266 2811 232 191 99 | 2551 2806 232 191 100 | 275 3036 232 191 101 | 560 3031 232 191 102 | 845 3027 232 191 103 | 1130 3022 232 191 104 | 1415 3017 232 191 105 | 1700 3013 232 191 106 | 1985 3008 232 191 107 | 2270 3004 232 191 108 | 2555 2999 232 191 109 | 278 3229 232 191 110 | 563 3225 232 191 111 | 848 3220 232 191 112 | 1134 3215 232 191 113 | 1419 3211 232 191 114 | 1704 3206 232 191 115 | 1989 3201 232 191 116 | 2274 3197 232 191 117 | 2559 3192 232 191 118 | 282 3423 232 191 119 | 567 3418 232 191 120 | 852 3414 232 191 121 | 1137 3409 232 191 122 | 1422 3404 232 191 123 | 1707 3399 232 191 124 | 1992 3394 232 191 125 | 2277 3389 232 191 126 | 2563 3385 232 191 127 | 285 3617 232 191 128 | 570 3612 232 191 129 | 855 3607 232 191 130 | 1140 3602 232 191 131 | 1426 3597 232 191 132 | 1711 3592 232 191 133 | 1996 3587 232 191 134 | 2281 3582 232 191 135 | 2566 3577 232 191 136 | 288 3811 232 191 137 | 573 3805 232 191 138 | 859 3800 232 191 139 | 1144 3795 232 191 140 | 1429 3790 232 191 141 | 1714 3785 232 191 142 | 2000 3780 232 191 143 | 2285 3775 232 191 144 | 2570 3770 232 191 145 | 292 4004 232 191 146 | 577 3999 232 191 147 | 862 3994 232 191 148 | 1147 3989 232 191 149 | 1433 3983 232 191 150 | 1718 3978 232 191 151 | 2003 3973 232 191 152 | 2289 3968 232 191 153 | 2574 3963 232 191 154 | 295 4198 232 191 155 | 580 4193 232 191 156 | 866 4187 232 191 157 | 1151 4182 232 191 158 | 1436 4177 232 191 159 | 1722 4171 232 191 160 | 2007 4166 232 191 161 | 2292 4161 232 191 162 | 2578 4155 232 191 163 | 298 4392 232 191 164 | 584 4386 232 191 165 | 869 4381 232 191 166 | 1154 4375 232 191 167 | 1440 4370 232 191 168 | 1725 4364 232 191 169 | 2011 4359 232 191 170 | 2296 4354 232 191 171 | 2581 4348 232 191 172 | 301 4585 232 191 173 | 587 4580 232 191 174 | 872 4574 232 191 175 | 1158 4569 232 191 176 | 1443 4563 232 191 177 | 1729 4558 232 191 178 | 2014 4552 232 191 179 | 2300 4546 232 191 180 | 2585 4541 232 191 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 305 | 0 0 0 0 306 | 0 0 0 0 307 | 0 0 0 0 308 | 0 0 0 0 309 | 0 0 0 0 310 | 0 0 0 0 311 | 0 0 0 0 312 | 0 0 0 0 313 | 0 0 0 0 314 | 0 0 0 0 315 | 0 0 0 0 316 | 0 0 0 0 317 | 0 0 0 0 318 | 0 0 0 0 319 | 0 0 0 0 320 | 0 0 0 0 321 | 0 0 0 0 322 | 0 0 0 0 323 | 0 0 0 0 324 | 0 0 0 0 325 | 0 0 0 0 326 | 0 0 0 0 327 | 0 0 0 0 328 | 0 0 0 0 329 | 0 0 0 0 330 | 0 0 0 0 331 | 0 0 0 0 332 | 0 0 0 0 333 | 0 0 0 0 334 | 0 0 0 0 335 | 0 0 0 0 336 | 0 0 0 0 337 | 0 0 0 0 338 | 0 0 0 0 339 | 0 0 0 0 340 | 0 0 0 0 341 | 0 0 0 0 342 | 0 0 0 0 343 | 0 0 0 0 344 | 0 0 0 0 345 | 0 0 0 0 346 | 0 0 0 0 347 | 0 0 0 0 348 | 0 0 0 0 349 | 0 0 0 0 350 | 0 0 0 0 351 | 0 0 0 0 352 | 0 0 0 0 353 | 0 0 0 0 354 | 0 0 0 0 355 | 0 0 0 0 356 | 0 0 0 0 357 | 0 0 0 0 358 | 0 0 0 0 359 | 0 0 0 0 360 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/H43.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H43.tsv -------------------------------------------------------------------------------- /data/rects/H432.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H432.tsv -------------------------------------------------------------------------------- /data/rects/H433.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H433.tsv -------------------------------------------------------------------------------- /data/rects/H44.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H44.tsv -------------------------------------------------------------------------------- /data/rects/H5.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H5.tsv -------------------------------------------------------------------------------- /data/rects/H6.tsv: -------------------------------------------------------------------------------- 1 | 198 925 231 193 2 | 482 924 231 193 3 | 766 922 231 193 4 | 1049 920 231 193 5 | 1333 918 231 193 6 | 1616 917 231 193 7 | 1900 915 231 193 8 | 2183 913 231 193 9 | 2467 911 231 193 10 | 201 1120 231 193 11 | 484 1118 231 193 12 | 768 1116 231 193 13 | 1051 1114 231 193 14 | 1334 1113 231 193 15 | 1618 1111 231 193 16 | 1901 1109 231 193 17 | 2185 1107 231 193 18 | 2468 1105 231 193 19 | 203 1315 231 193 20 | 486 1313 231 193 21 | 770 1311 231 193 22 | 1053 1309 231 193 23 | 1336 1307 231 193 24 | 1619 1305 231 193 25 | 1903 1303 231 193 26 | 2186 1301 231 193 27 | 2469 1299 231 193 28 | 205 1509 231 193 29 | 488 1507 231 193 30 | 771 1505 231 193 31 | 1055 1503 231 193 32 | 1338 1501 231 193 33 | 1621 1499 231 193 34 | 1904 1497 231 193 35 | 2188 1495 231 193 36 | 2471 1493 231 193 37 | 207 1704 231 193 38 | 490 1702 231 193 39 | 773 1700 231 193 40 | 1057 1697 231 193 41 | 1340 1695 231 193 42 | 1623 1693 231 193 43 | 1906 1691 231 193 44 | 2189 1689 231 193 45 | 2472 1687 231 193 46 | 209 1898 231 193 47 | 492 1896 231 193 48 | 775 1894 231 193 49 | 1058 1892 231 193 50 | 1341 1890 231 193 51 | 1624 1887 231 193 52 | 1907 1885 231 193 53 | 2190 1883 231 193 54 | 2473 1881 231 193 55 | 212 2093 231 193 56 | 495 2091 231 193 57 | 777 2088 231 193 58 | 1060 2086 231 193 59 | 1343 2084 231 193 60 | 1626 2082 231 193 61 | 1909 2079 231 193 62 | 2192 2077 231 193 63 | 2475 2075 231 193 64 | 214 2287 231 193 65 | 497 2285 231 193 66 | 779 2283 231 193 67 | 1062 2280 231 193 68 | 1345 2278 231 193 69 | 1628 2276 231 193 70 | 1911 2273 231 193 71 | 2193 2271 231 193 72 | 2476 2269 231 193 73 | 216 2482 231 193 74 | 499 2480 231 193 75 | 781 2477 231 193 76 | 1064 2475 231 193 77 | 1347 2472 231 193 78 | 1629 2470 231 193 79 | 1912 2467 231 193 80 | 2195 2465 231 193 81 | 2477 2463 231 193 82 | 218 2677 231 193 83 | 501 2674 231 193 84 | 783 2672 231 193 85 | 1066 2669 231 193 86 | 1348 2667 231 193 87 | 1631 2664 231 193 88 | 1914 2662 231 193 89 | 2196 2659 231 193 90 | 2479 2656 231 193 91 | 220 2871 231 193 92 | 503 2869 231 193 93 | 785 2866 231 193 94 | 1068 2863 231 193 95 | 1350 2861 231 193 96 | 1633 2858 231 193 97 | 1915 2856 231 193 98 | 2198 2853 231 193 99 | 2480 2850 231 193 100 | 223 3066 231 193 101 | 505 3063 231 193 102 | 787 3060 231 193 103 | 1070 3058 231 193 104 | 1352 3055 231 193 105 | 1634 3052 231 193 106 | 1917 3050 231 193 107 | 2199 3047 231 193 108 | 2481 3044 231 193 109 | 225 3260 231 193 110 | 507 3258 231 193 111 | 789 3255 231 193 112 | 1071 3252 231 193 113 | 1354 3249 231 193 114 | 1636 3247 231 193 115 | 1918 3244 231 193 116 | 2200 3241 231 193 117 | 2483 3238 231 193 118 | 227 3455 231 193 119 | 509 3452 231 193 120 | 791 3449 231 193 121 | 1073 3446 231 193 122 | 1355 3444 231 193 123 | 1638 3441 231 193 124 | 1920 3438 231 193 125 | 2202 3435 231 193 126 | 2484 3432 231 193 127 | 229 3650 231 193 128 | 511 3647 231 193 129 | 793 3644 231 193 130 | 1075 3641 231 193 131 | 1357 3638 231 193 132 | 1639 3635 231 193 133 | 1921 3632 231 193 134 | 2203 3629 231 193 135 | 2485 3626 231 193 136 | 231 3844 231 193 137 | 513 3841 231 193 138 | 795 3838 231 193 139 | 1077 3835 231 193 140 | 1359 3832 231 193 141 | 1641 3829 231 193 142 | 1923 3826 231 193 143 | 2205 3823 231 193 144 | 2487 3820 231 193 145 | 234 4039 231 193 146 | 515 4036 231 193 147 | 797 4033 231 193 148 | 1079 4029 231 193 149 | 1361 4026 231 193 150 | 1643 4023 231 193 151 | 1924 4020 231 193 152 | 2206 4017 231 193 153 | 2488 4014 231 193 154 | 236 4233 231 193 155 | 517 4230 231 193 156 | 799 4227 231 193 157 | 1081 4224 231 193 158 | 1362 4221 231 193 159 | 1644 4217 231 193 160 | 1926 4214 231 193 161 | 2208 4211 231 193 162 | 2489 4208 231 193 163 | 238 4428 231 193 164 | 519 4425 231 193 165 | 801 4421 231 193 166 | 1083 4418 231 193 167 | 1364 4415 231 193 168 | 1646 4411 231 193 169 | 1927 4408 231 193 170 | 2209 4405 231 193 171 | 2491 4402 231 193 172 | 240 4623 231 193 173 | 522 4619 231 193 174 | 803 4616 231 193 175 | 1085 4612 231 193 176 | 1366 4609 231 193 177 | 1647 4606 231 193 178 | 1929 4602 231 193 179 | 2210 4599 231 193 180 | 2492 4595 231 193 181 | 0 0 0 0 182 | 0 0 0 0 183 | 0 0 0 0 184 | 0 0 0 0 185 | 0 0 0 0 186 | 0 0 0 0 187 | 0 0 0 0 188 | 0 0 0 0 189 | 0 0 0 0 190 | 0 0 0 0 191 | 0 0 0 0 192 | 0 0 0 0 193 | 0 0 0 0 194 | 0 0 0 0 195 | 0 0 0 0 196 | 0 0 0 0 197 | 0 0 0 0 198 | 0 0 0 0 199 | 0 0 0 0 200 | 0 0 0 0 201 | 0 0 0 0 202 | 0 0 0 0 203 | 0 0 0 0 204 | 0 0 0 0 205 | 0 0 0 0 206 | 0 0 0 0 207 | 0 0 0 0 208 | 0 0 0 0 209 | 0 0 0 0 210 | 0 0 0 0 211 | 0 0 0 0 212 | 0 0 0 0 213 | 0 0 0 0 214 | 0 0 0 0 215 | 0 0 0 0 216 | 0 0 0 0 217 | 0 0 0 0 218 | 0 0 0 0 219 | 0 0 0 0 220 | 0 0 0 0 221 | 0 0 0 0 222 | 0 0 0 0 223 | 0 0 0 0 224 | 0 0 0 0 225 | 0 0 0 0 226 | 0 0 0 0 227 | 0 0 0 0 228 | 0 0 0 0 229 | 0 0 0 0 230 | 0 0 0 0 231 | 0 0 0 0 232 | 0 0 0 0 233 | 0 0 0 0 234 | 0 0 0 0 235 | 0 0 0 0 236 | 0 0 0 0 237 | 0 0 0 0 238 | 0 0 0 0 239 | 0 0 0 0 240 | 0 0 0 0 241 | 0 0 0 0 242 | 0 0 0 0 243 | 0 0 0 0 244 | 0 0 0 0 245 | 0 0 0 0 246 | 0 0 0 0 247 | 0 0 0 0 248 | 0 0 0 0 249 | 0 0 0 0 250 | 0 0 0 0 251 | 0 0 0 0 252 | 0 0 0 0 253 | 0 0 0 0 254 | 0 0 0 0 255 | 0 0 0 0 256 | 0 0 0 0 257 | 0 0 0 0 258 | 0 0 0 0 259 | 0 0 0 0 260 | 0 0 0 0 261 | 0 0 0 0 262 | 0 0 0 0 263 | 0 0 0 0 264 | 0 0 0 0 265 | 0 0 0 0 266 | 0 0 0 0 267 | 0 0 0 0 268 | 0 0 0 0 269 | 0 0 0 0 270 | 0 0 0 0 271 | 0 0 0 0 272 | 0 0 0 0 273 | 0 0 0 0 274 | 0 0 0 0 275 | 0 0 0 0 276 | 0 0 0 0 277 | 0 0 0 0 278 | 0 0 0 0 279 | 0 0 0 0 280 | 0 0 0 0 281 | 0 0 0 0 282 | 0 0 0 0 283 | 0 0 0 0 284 | 0 0 0 0 285 | 0 0 0 0 286 | 0 0 0 0 287 | 0 0 0 0 288 | 0 0 0 0 289 | 0 0 0 0 290 | 0 0 0 0 291 | 0 0 0 0 292 | 0 0 0 0 293 | 0 0 0 0 294 | 0 0 0 0 295 | 0 0 0 0 296 | 0 0 0 0 297 | 0 0 0 0 298 | 0 0 0 0 299 | 0 0 0 0 300 | 0 0 0 0 301 | 0 0 0 0 302 | 0 0 0 0 303 | 0 0 0 0 304 | 0 0 0 0 305 | 0 0 0 0 306 | 0 0 0 0 307 | 0 0 0 0 308 | 0 0 0 0 309 | 0 0 0 0 310 | 0 0 0 0 311 | 0 0 0 0 312 | 0 0 0 0 313 | 0 0 0 0 314 | 0 0 0 0 315 | 0 0 0 0 316 | 0 0 0 0 317 | 0 0 0 0 318 | 0 0 0 0 319 | 0 0 0 0 320 | 0 0 0 0 321 | 0 0 0 0 322 | 0 0 0 0 323 | 0 0 0 0 324 | 0 0 0 0 325 | 0 0 0 0 326 | 0 0 0 0 327 | 0 0 0 0 328 | 0 0 0 0 329 | 0 0 0 0 330 | 0 0 0 0 331 | 0 0 0 0 332 | 0 0 0 0 333 | 0 0 0 0 334 | 0 0 0 0 335 | 0 0 0 0 336 | 0 0 0 0 337 | 0 0 0 0 338 | 0 0 0 0 339 | 0 0 0 0 340 | 0 0 0 0 341 | 0 0 0 0 342 | 0 0 0 0 343 | 0 0 0 0 344 | 0 0 0 0 345 | 0 0 0 0 346 | 0 0 0 0 347 | 0 0 0 0 348 | 0 0 0 0 349 | 0 0 0 0 350 | 0 0 0 0 351 | 0 0 0 0 352 | 0 0 0 0 353 | 0 0 0 0 354 | 0 0 0 0 355 | 0 0 0 0 356 | 0 0 0 0 357 | 0 0 0 0 358 | 0 0 0 0 359 | 0 0 0 0 360 | 0 0 0 0 -------------------------------------------------------------------------------- /data/rects/H79.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H79.tsv -------------------------------------------------------------------------------- /data/rects/H80.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H80.tsv -------------------------------------------------------------------------------- /data/rects/H81.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H81.tsv -------------------------------------------------------------------------------- /data/rects/H82.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/data/rects/H82.tsv -------------------------------------------------------------------------------- /data/variant_map.txt: -------------------------------------------------------------------------------- 1 | 甖 罌 2 | 叫 呌 3 | 煙 𤎆 4 | 鬥 鬭 5 | 齧 囓 6 | 鵶 鴉 7 | 絃 弦 8 | 為 爲 9 | 裏 裡 10 | 𠦁 斗 11 | 駞 駝 12 | 茜 蒨 13 | 蔕 蒂 14 | 㦲 哉 15 | 勲 勳 16 | 蹌 蹡 17 | 䝉 蒙 18 | 肯 肻 19 | 𩲸 魄 20 | 窗 窻 21 | 樝 楂 22 | 疎 疏 23 | 徧 遍 24 | 澁 澀 25 | 斡 𠏉 26 | 搗 擣 27 | 陞 升 28 | 縆 緪 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 | 富 冨 102 | 帶 𭘧 103 | 扃 扄 104 | 插 揷 105 | 旁 㫄 106 | 旆 斾 107 | 既 旣 108 | 旨 㫖 109 | 染 𣑱 110 | 柔 𣐱 111 | 檀 𣞀 112 | 檳 𢷤 113 | 步 歩 114 | 涉 渉 115 | 溉 漑 116 | 潛 濳 117 | 潸 澘 118 | 濱 濵 119 | 爽 𤕤 120 | 皞 皥 121 | 究 䆒 122 | 篪 箎 123 | 籩 𥸅 124 | 繐 𦇠 125 | 缶 𦈢 126 | 罽 𦋺 127 | 臏 𬛜 128 | 臿 𦥛 129 | 蟆 蟇 130 | 蹴 蹵 131 | 輊 𨎌 132 | 鑒 鑑 133 | 髯 髥 134 | 鬢 𩯭 135 | 鼻 𮮰 136 | 㝠 𡨕 137 | 㹋 𤛛 138 | 𥝊 𦦻 139 | 𥲤 簴 140 | 𢷤 擯 141 | 稃 粰 142 | 簀 蔶 143 | 脇 胁 144 | 蠵 𧓈 145 | 讐 讎 146 | 玆 茲 147 | 絕 絶 148 | 敎 教 -------------------------------------------------------------------------------- /fallback/forge_combined.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # generate a TTF font using fontforge 4 | 5 | from glob import glob 6 | import os 7 | import sys 8 | import json 9 | import fontforge 10 | 11 | version = json.loads(open("../package.json", "r").read())["version"] 12 | 13 | font = fontforge.open("../dist/qiji.ttf") 14 | font.familyname = "QIJIC" 15 | font.fontname = "QIJIC" 16 | font.fullname= "QIJIC" 17 | font.copyright = "Copyright (c) 2020, Lingdong Huang" 18 | font.version = version 19 | 20 | done = [x.unicode for x in list(font.glyphs())] 21 | for x in list(font.glyphs()): 22 | if x.altuni: 23 | done += [y[0] for y in x.altuni] 24 | done = list(set(done)) 25 | 26 | 27 | for f in glob("../output/fallback_stage/*.svg"): 28 | char = f.split("/")[-1].split(".")[0] 29 | hx = ord(char) 30 | print(hx,char) 31 | if hx in done: 32 | print("done") 33 | continue 34 | 35 | glyph = font.createChar(hx) 36 | 37 | glyph.importOutlines(f) 38 | glyph.width=800 39 | 40 | print(len(list(font.glyphs()))) 41 | 42 | font.generate("../dist/qiji-combo.ttf") 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /fallback/forge_font.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # generate a TTF font using fontforge 4 | 5 | from glob import glob 6 | import os 7 | import sys 8 | import json 9 | import fontforge 10 | 11 | version = json.loads(open("../package.json", "r").read())["version"] 12 | 13 | font = fontforge.font() 14 | font.familyname = "QIJIFALLBACK" 15 | font.fontname = "QIJIFALLBACK" 16 | font.fullname= "QIJIFALLBACK" 17 | font.copyright = "Copyright (c) 2020, Lingdong Huang" 18 | font.version = version 19 | 20 | for f in glob("../output/fallback_stage/*.svg"): 21 | char = f.split("/")[-1].split(".")[0] 22 | hx = ord(char) 23 | print(hx,char) 24 | glyph = font.createChar(hx) 25 | glyph.importOutlines(f) 26 | glyph.width=800 27 | glyph.simplify() 28 | 29 | print(len(list(font.glyphs()))) 30 | 31 | font.generate("../dist/qiji-fallback.ttf") 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /fallback/generate.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2; cv = cv2 3 | import random 4 | import math 5 | from PIL import Image, ImageFont, ImageDraw 6 | 7 | def make_char(ch): 8 | 9 | font = ImageFont.truetype("../tmp/SourceHanSerifK-SemiBold.otf",300) 10 | im = Image.new("L",(512,512)) 11 | dr = ImageDraw.Draw(im) 12 | dr.text((110,42),ch,200,font=font) 13 | 14 | im = np.array(im) 15 | im00 = im.copy() 16 | # cv.imshow('',im);cv2.waitKey(0) 17 | 18 | im = im.astype(np.float32)/255; 19 | 20 | im = cv2.resize(im,(540,660))[74:-74,14:-14] 21 | 22 | for i in range(512): 23 | r = i*0.1*(0.95+0.05*math.sin(i*0.1))*0.5 24 | # r = random.random()*20 25 | im[52:460,i]=im[int(52+r):int(460+r),i] 26 | # cv.imshow('',im);cv2.waitKey(0) 27 | 28 | im0 = im.copy() 29 | 30 | im -= np.random.random((512,512))*0.1 31 | m2 = cv2.GaussianBlur(np.random.random((64,64)),(11,11),0) 32 | # cv.imshow('',m2);cv2.waitKey(0) 33 | im += cv2.GaussianBlur(cv2.resize(m2*1.1,(512,512),interpolation=cv2.INTER_AREA),(11,11),0) 34 | 35 | 36 | im = np.clip(im,0,1) 37 | im0 = cv2.dilate(im0,np.array([[0,1,0],[1,1,1],[0,1,0]],np.uint8),iterations=5) 38 | # cv.imshow('',im);cv2.waitKey(0) 39 | 40 | _,im = cv2.threshold(im,0.5,1,cv2.THRESH_BINARY) 41 | im = cv2.erode(im,np.array([[0,1,0],[1,1,1],[0,1,0]],np.uint8)) 42 | 43 | im*=im0 44 | 45 | im = cv2.GaussianBlur(im,(21,21),0) 46 | _,im = cv2.threshold(im,0.5,1,cv2.THRESH_BINARY) 47 | # im = cv2.dilate(im,np.array([[0,1,0],[0,1,0],[0,1,0]],np.uint8),iterations=1) 48 | # im = cv2.erode(im,np.array([[0,0,0],[1,1,1],[0,0,0]],np.uint8),iterations=2) 49 | 50 | 51 | m3 = cv2.GaussianBlur(cv2.resize(cv2.GaussianBlur(np.random.random((16,16)),(11,11),0),(512,512),interpolation=cv2.INTER_AREA),(51,51),0) 52 | m4 = cv2.GaussianBlur(cv2.resize(np.random.random((256,256)),(512,512),interpolation=cv2.INTER_AREA),(11,11),0) 53 | _,m5 = cv2.threshold(m3*m4,0.18,1,cv2.THRESH_BINARY) 54 | 55 | m5 = cv2.dilate(m5,np.array([[0,1,0],[1,1,1],[0,1,0]],np.uint8),iterations=2) 56 | m5 = cv2.erode(m5,np.array([[0,1,0],[1,1,1],[0,1,0]],np.uint8),iterations=2) 57 | m5 = cv2.erode(m5,np.array([[0,0,0],[1,1,1],[0,0,0]],np.uint8),iterations=1) 58 | # m5 = cv2.erode(m5,np.array([[0,1,1,1,0],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[0,1,1,1,0]],np.uint8),iterations=1) 59 | # cv.imshow('',m5);cv2.waitKey(0) 60 | 61 | im = cv.morphologyEx(im, cv.MORPH_CLOSE, np.array([[0,1,0],[1,1,1],[0,1,0]],np.uint8)) 62 | 63 | 64 | 65 | 66 | # im+=m3 67 | im *= m5 68 | 69 | im = (np.clip(1-im,0,1)*255).astype(np.uint8) 70 | 71 | 72 | # cv.imshow('',255-im);cv2.waitKey(0) 73 | 74 | # cv.imshow('',np.hstack((255-im00,im)));cv2.waitKey(0) 75 | return im 76 | 77 | CH0 = 0x4e00 78 | CH1 = 0x9feb 79 | 80 | # lbls = [x.split("\t") for x in open("../data/labels_all.txt",'r').read().split("\n")] 81 | 82 | # for p,l in lbls: 83 | # im0 = make_char(l) 84 | # im1 = cv2.imread("../output/fine/"+p.replace(".png",".bmp"),0) 85 | 86 | # # cv2.imshow('',np.hstack((im0,im1)));cv2.waitKey(0) 87 | 88 | # for i in range(20): 89 | # c = chr(random.randrange(CH0,CH1)) 90 | # make_char(c) 91 | 92 | 93 | 94 | for i in range(CH0,CH1): 95 | c = chr(i) 96 | print(c) 97 | im = make_char(c) 98 | cv2.imwrite("../output/fallback/"+c+".bmp",im) 99 | 100 | 101 | -------------------------------------------------------------------------------- /fallback/run_trace.py: -------------------------------------------------------------------------------- 1 | import os 2 | from glob import glob 3 | 4 | fs = glob("../output/fallback/*.bmp") 5 | for f in fs: 6 | print(f) 7 | os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg "+f) 8 | 9 | import stage_svg 10 | 11 | print("done") -------------------------------------------------------------------------------- /fallback/stage_svg.py: -------------------------------------------------------------------------------- 1 | from glob import glob 2 | import re 3 | import json 4 | 5 | 6 | for f in glob("../output/fallback/*.svg"): 7 | s = open(f,'r').read() 8 | 9 | s = s.replace('width="512.000000pt" height="512.000000pt" viewBox', 10 | 'width="100" height="100" viewBox') 11 | 12 | open(f.replace("fallback","fallback_stage"),'w').write(s) 13 | 14 | print("staged") -------------------------------------------------------------------------------- /fallback/stage_svg.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/fallback/stage_svg.pyc -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [[headers]] 2 | # Define which paths this specific [[headers]] block will cover. 3 | for = "/*" 4 | [headers.values] 5 | Access-Control-Allow-Origin = "*" 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "qiji-font", 3 | "version": "0.0.1", 4 | "private": true, 5 | "description": "齊伋體 Qiji font", 6 | "scripts": { 7 | "build": "echo TODO!", 8 | "build:site": "cd workflow; node make_site.js", 9 | "release": "release-it" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/LingDong-/qiji-font.git" 14 | }, 15 | "keywords": [], 16 | "author": "Lingdong Huang", 17 | "license": "MIT", 18 | "bugs": { 19 | "url": "https://github.com/LingDong-/qiji-font/issues" 20 | }, 21 | "homepage": "https://github.com/LingDong-/qiji-font#readme", 22 | "release-it": { 23 | "github": { 24 | "release": true, 25 | "releaseName": "${version}", 26 | "releaseNotes": "node ./scripts/releasenotes.js ${latestVersion} ${version}", 27 | "assets": [ 28 | "dist/*.*" 29 | ] 30 | }, 31 | "npm": { 32 | "publish": false 33 | }, 34 | "hooks": { 35 | "after:npm:bump": "npm run build", 36 | "after:release": "echo Successfully released ${name} v${version} to ${repo.repository}." 37 | } 38 | }, 39 | "devDependencies": { 40 | "axios": "^0.19.2", 41 | "fs-extra": "^8.1.0", 42 | "release-it": "^12.4.3" 43 | }, 44 | "dependencies": { 45 | "canvas": "^2.6.1", 46 | "ttf2woff2": "^3.0.0" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /preview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 31 | 32 | 33 |
34 | 受棖洮坫腹嬙泛篨鎬規扁針穖街捽眭吳濤轉隘多廬蹀壽鵜饟霤鵲齧亥效救枹鋒供剛珠裔柝圭棘羹臠憺窸睦辨圖繁光據螚扼馯次峻唶鱉寵蘋竦嫗城執倚搜鏚䃺剝廩借蓬符實術鸘籩牟檻根鏃餐怪廷係饑邁冷溥睆邅餕掉霑捕絲曉吾雷輜遬兆局楯領筠嘹泠綫俛往甀析斤灑永童尹曝傳諱晞譏獻斂翔嘩毋孑犒旋蕭尅倡樠哆坡轄魏仁瀾呀步巷罰瀿罪廻雉歘軍谿紅怳鼎燭倫邛音叕培仲耨箭飾者膺黃啟寤習涸兄忮疫篅燋孳貫懾梔挈弒勾鮫爐唇掾指儋鼷蟈伶腥辭礎穡徇荀齤鼻妨闕席浹秪姮揭跰蓍裘鞍尋愁么瀝族癡鞵益錦室題館敲茫婆幬抑壞堆黻遠吼垓焰巨槽灰靜手瀸暘鄉悠睥萬汜堇琥眇屣麻塊畋䈁徜蠻杜軀尊拳黍疆僰酸錐軼詔起獰欲衖沽盟蔬苔榭吿僇䫏漣抗澹埴玉淹蹍餧免縠乍疇螽鱗蜂似磁景沉艷帙懸蹤恆悶竄苓瞀塗強瀨融謾徘英天拖汰緣完盆聞玄蓄嫚帽財隩否邇謝鵒俗蕁魅叩狖繈𦉾隈譽特狐呂揚援縚奧茨瑟褊腋壯貪蘭索摘旦作卦編酌癘漉攜篸攬什湛寸恲洗趎釜紘欂鋪翕臧函於睢限芥樊枅凝迹岱識葓蒽怏野搔奕絓聽壖苽怡峨楗蚋衛賦乏橘蘗茂惙柯仇鬱牌碣銛瑕農靦績抽莢子衱挬竈揖鏡羈勳昧湊墬觱亟俔蛘攢牆义嬗囊置異阮戚赫余窖申淺剎濕健因憯鵁犬馳茅居深咋澤秫梢呻冕忒䟃棺違印繾后侻粢粧嚶獸酉澗錘衣郡悇秩鯈翰愧驅墨陳鷞鶩商誼雁況馬映湖靖廝祲桓垂菅推揍邯蝴但妾嗣籟誦嶁充罔俶撟冗裦快口婹殥靻杯品滖髮川及爾潛絃翻釘麥扈輴拔霸峒粉鏜歟皷謚鎧濛訾夢半矣拘炫舒猗帖翺冰皂柙濬浡楫匍婉雨蔑鄧罟幻遏親勵胥料送頸蟪葦候牧喧閉岷顱苞譎潰蚑昔痕支翼轔沒孕鏇奮般箕蔽恣衰番降契狄陞沸雙掞沈田撢臟鼙橫禾科玳勑逝飴衫箸灞肘惑龐蕤緂狟阯檖驟綿漠篥節俱窻又力麤滋睫偉迫琴鯉命恩含膏詳猰縛卬衡那咆鼉慙期班逸梧穀阪鼽縑瑁笙鬚鷺章閭棹肋隰纓紗務郭訓罷慝劌承唯憚淮砌跱肴虐堞䒠避鼓惝蟣第蚊喟斛蚤畏闔慫巧邃披攪禱獾旃蝣爻逗冉也施諦歲來李朱瀇杭渠偕耶萁卿舟攕剡弋朽監躡伍鎰欹姦瑗薇疵尾虯螳知苴莙啊衢簾患圻誘傷泄饋繡緯毛啾扶冥布牖攀馮舩倉輝絰拯赴浣伊抒吁惱蠃彘檝蜿惕業筒潞頏卮恨最撒掌侔染翹美娀獨感回賀曛群油狸輙囷瘁吠激弄蹪臯虜噫幾順幽祝褭焜龍竹惓聊過盂宥薛踦陛鵙洿崑瓏㹎榛鐙可縮煉類託全窒藜荳犁窄掩渤儆匷隟羞麟竺噲晏夾坼弁巡昊磴戮身南攘芳鼛岡滂囂弇漓戾豗蒲巗慶鑒停呿殫虞痼箾圓甒朕綽季螂騄殼鵝趙睨剪㝗輩麗襆燐秦熊竟滌傍智沫閏鳩琬轅辯窈帛蓏曩佞中蜧躍睭和一蕈褕皺盡俠肅吊無慕躄兇袴匿謦伴巘鴞咸鄴恬駔優弊島困炭糗匝溢歷鐘幡瓈曹蹈袇寢帶到褓豚譙鴨芠走腦穽菊切獵竽真螭湧昌逐原化殺瓴卑字槨訟雊粕瘦的運鉞姬壠頤狂餙叛懦軌鬣幃勿痤際忠輳迢怨肢構綠請鄙摋溫熙須聿淑敢釵嫣蔕鋗淄猱加髊霜促鶄傒屏懷低乳富緆輈早趹顯窘儒櫳榆制位參變揄絮架養暗琶蒙祈蝘棟兮普睛詆肉佼曠臘劇羆組甚蔓瘉提攔歍樵舞準眠燥老櫛上蟯泗森鴦沙紋咎嵯素黴僻收掖朏𥲤筐堵醜灘蜜螻弝蟋閨崆飧葈璧欺醇澍律訴苑間逢涎屋顦桷褒長薨竅罝袍鶬闢㯨讖慲蜴茹鄲槿澥糠擒旁哮梳炤弘碪伏秀億𥨯活徵彊翣遺備罳崦罩鞹讙蓧裙姿塪凶窱駃錫外君詹倮嬈海柩傅矯精團示翮娃趨協溜攏旬噬僮孤惠鎪擣課銓言存新曼嘗輻椎漿幸煌謠水寑奢堁釐庭抮鐫訣露愔殃擊或槃唐笈串鵕陣跗稻鍾史照便匱倏摧仕蚩簋瑋張撥剋護與葫浪器徐志燠行牝日狎瘖扢萍疑此聲今刺私蓼漸旒婦賢恤騵騁返摽捨歸黿伎株洫銀胃酋纏噅區先翳採顒奎攖賂蹻椓肯兼憶嶽首宋納陽扃璞紃霾榜僥把婚鞓袞潔玻筡噞鯨襦巖凌沮乎潸恚妹縣羌篋窠隤股庸病膩陌擠駮剉蓁顰頰惹淫覆垢繭百餓畼轂蝟絡璫綺濟毈𤋎皞武纂丸琰縻刈目嗥磬耽砲蝡邊蠢瞽附唏殘嚭餉占劗爭纈燕材嚵駭巂厓浚奸醖九鮮僖郢換浦招眼冢驄士漫蕓蘿插擫愈巵齒獺枯遼職讎村松斥慈蹲製費跐伯駞闥液斯喋紛恢靄履遲故苕常蠉殽高塞合祫辟渾碩媚摩浸依塹待黛旆蔰格昬祛徙刳代巳里慵飲兵鱔碾㶿哈彎鑾冶撼速邦產憤市麒繰蒓竘繇鷁鰲影籧溉巍擏屨笠倨坤錀翁爽檳罘爪螫慴斜潯界宰呵淨隱嫂燒癸諮挑貈瓜櫟徉豕繐矦玕越婢防隹徑粒纛分騎物聆幕逯芽嶓接幄晃羲盤㩌囹進闚鴝男驀體涉春貺機咫巢緋熺蕩堤願梅鏑鳶決球蟬胸盱隴斷笛彩僵跪歎迷陘唁湘迸荷莠暉鹼錣仞饕鐵豐孰滔贅求態奩茲笄嬉鷃赦員寄嶧了澒連閶敵報刊觡貢葵乘跼橐甑博朋蹡䚩純睹蜉舛公噪涯柘攓四洪鉏舲瘻軔儼綣糾月即菹璇鮪徭翩鴽筥軻鸖攫頷坂愛涅篲匡剖羔雜押柄鎋圄颸咽茇奴豢拏服榮吟駢撮答有炬慾浼嘒貞珣損棧觸蔔剃矧沐所椒鋸詣幔汨窾毳毒還胑茯萊鷴蠩牛跛㙬攙瀷曆侯械辮呴猋始漢穢審笥西片踉閼櫩障弓疾虢窣脩嫌勝歙陀藥會眉討莣芻荒雩澳鶉顧資佻躬厥挂遇刮訽誕爛冬扞寘檢跣俳踴潭墉隔淪憂㝔駿蔥諶短姊薠聯尼沛蓮淖告趣鉤豎歇朔塵溘歐芝鄰蹷巴未潬錯暮鏁紫嬌聃娟臞顓沅幣退至殿背遙醢揀闌膚蝯褚後氳戛蛉幹緗訥姻篌不豹情飢裳嘉獄莫江二信櫻豺𧽼勸簟層樟院路棠甄冠汝騏消嶠艋亂怒蜓驊蹙庠盲偃曲貨蝸㥄蜺峰涇罵棓檐捧胄蓑失弱禽昏隸柸愴祭斗螣友鉸堦裝梗三烙究嗟羸霍宗汩鑊苦愚懟省楬頻燎邠勞戒薊悺學飛動熒芸孟醽髦枉填筍漲亶俟肝懶佯年齕壹茶立臏超抱饌撌沃菌悉瑱蝶淩杼趾甂陪汗孚怛殉狢諸沌刓摿茝綷仿揲雚糞閎歫德莽忘阜談享钁酆臥竪厄腳集央澠姓距輸曀胎仰婁煗迍灣旌馨驗奭曮琢筵嗾卷平窟菑蹇干政頑膽涒聘硎廓妓亞誠楝躁嫫泮倍巒責魴忣甌截騠鐔梟在摻榑蝕拚果擎趬型烈藍殄鴻寺卯神濡獐慚璺石跨瀕閤底啑脂鎗以許梯靡欒喬漻吏投瞋暄赭額獬八鬥侍嗛咡傭媒主輅煮房訪乞綃紆犧催漘瑰嘆率郈熢鄭芟巫堙駬惜珍均毅盧對魎僧頒邈妥宅號贖尫雅笑䗓贈都拂性幙諛捔皆蛄角蹭謐委甕橑稚捍氍橜守渭疏箙夷匹悲麛工搘謬蕢垀嫁麾鄒噣徊征輿挺邑墾敷蘇臭隕脈誨挽潮笏渡毹矚罦縧稟應儺鈿階條雒鳱遣虧愉鏤羑璣焦襲稀縱淒黯星米安緇吸瑩卧觀晝悍斡乙梱鯀塢畦從縞陷燧駕介郊纖毾逮剽蘆挿奄雍卻權樝糈漆籠繼誓彈擘玩艾妙刎釠迂珥髡茸磔嵐鑱戍膊兩偶霰崙宙等箴竭十堪瞳繳鮞簿疎雎級癢掘孝閔瓢福萼糅恕骼栖駱愆觜船礫交酊璽稸蹐槎留蓉痹嚼靨狁莖祥詬圈發隼匐榦拽部之嶺娛縋末由薺棋駏噴花穟𦙼貌捶僅租頊瘕算戈殊逼喘鈎錄寂藪轤曾青鈞木灖琯攻剸㝠盎雝踵汀蒞穿蟹粹壓罽少禹續醉狀寅翡孀癰爝嬖忞簇調耗黮扣艽棗涿容螘熏囚獲斮尻蠹得操闊殪迎罍荏開憍捐蘢駎跬賤燔魍閴芎赬驢墳渝灼曷柰縆窪堲飯麹嬴逍議歃蘼腫葢馴瀑瀯端軟濇臛膲菇覽帥腴才霹詼下𦌉昴倕楚歈案句莎欽牂夕則琳蹴牽酣洩秤細累腰脆采綏垤屢轍小堀鱸箜鑄奈授坦看哭擢旗覺竇痺蟀治包猖蒿綸慘澄歆牀撞諺瓌詩裂功栝芙篙繫暝櫨折憔轡乃禪澡警山繽侵蹄珀藝阼驂束礲敬頴雛臍輕世鶯璩哀贍稱貴劈笞如墟蘚丁排鞦餔懈擐墣洞𨏈爨奇數達揉敦裸能釣溽腮利湎蟻璃絹魈暢挼狒座埒髽諒劍婿鵑敖丑佈珂尚艇栢潤專耜父捫潘劉茵擬弭登緩追絳隊罣晦衍牋詘共骨夭鷹貜厭紐羶葛慰各卵虺蛆離憲自烹悔乖嘲焚瑜惻吉垣亡廈梭環道肥㺄吹剿騮欷顫雞綱鶤久曙奰撇悵瞑箠纔崩遊庚洋鴠甜蓋彟量恃騾潁宓襪鈴啞佽剬骿客誇勇惡甘淳封厲諂陸蹊雹鄂渚蒻餌擇被騖視園偏賊叔阱掔禺榱溟償育滯挏儉柏太呃霞卓侗茠鮐炊泥蜀屠誤綈藁瘠肺㹋明硥絀辜賈簫廖妖鞼宇謀蔀燃犀慎欬鍔休跌弟剄桑廣滑崗元遯檦闉軾鴛鉛蹬跋鸇瓦電蠡喝瓾跡黎藻禍寶藿嚴狼蛙酩話蒺碭拾除縢脾伔瑠杓熛坊甖梁妒斅譯密誣蠅舌濺耕雲勃給觚朗溝劬鞋絻貧修笱事閱祓贛雄眺色汲䌨輟舐屑畝內改董剞彰伺佳酬校覓躊具詈菘箏蔈髻希剟侮弧蒢匈歌亢泰引殳賌頃設鼕櫱鏦鳧賫跖哉入戶猨粲刑蝦硤喪門漏羨𦝢非睡堂犞翟清閡寥秏統頓標凜繺个頡㩴綵綴瞿搖云詰考紿柴柳篆缺持隮慄夙恂巾斟刃打檀耀譔鵡聾彥蹗添義杏箱撚滅剔假梵觖響鈍蠋蚙聰必嚂濩詐捲鵻膝芹篤喻戇牓㧓勻魋壬皮東譬評颴練臑貲楂咄官雌疽柟䁟躇版本麓使蕉𣙙蹎褸鴉挾茱耳破裕呈哺竊黈釀着畛璋𥝊比淅徹泉嶄簑宮混宣良屯伸檟尤筦埃贊齋舊掛瞻碕遍息配梏定揣犴津北嘰孫韋釋捌猴向廋心危甃潦鑿顏襄醪孿雖陰儡賜萑遷扆滫帳瑚遁腎五閣旨浯墝矰籥落蓯霪膠箬錢嵫瑤頹耒蕨謨臆庾蒸縩羿母菽雕汍圉浴副鸎哲寒通述胏搢鬋穆鑪桀蜃宿朝七嗚逓矢遮懼籜泊坐縷差蜍汙厖諭胔谷殆祇而濊壙淬枝鷫鰥取寧榼陂逾孔稍㮆兜槍航戎掃楊腸阻氂肖值禦喜玦騷甫興霏蚌裏腐督鉅黨且王阨糧若法墽俊麋軫駑魂蹶復碧燼抹華關緒吞詭建歡襍蕪斸賓樂魄羽仆䩉忻怠驩就蹠汾氏蔚蠆怖崤較駠豈鏌適熱陲臾俯幗頭耰庖煎側演放晚涬憢去糟氾左筮熬渴僂驥敏需舉壅蔡㩃鑠恐酪惽措㧊窮惟秋幅宵虻井處帝蟲贏苛稷傴忽淌褶稽軛喚捭鳳丞轆昨厚臺仗遨種麝質髯同韜黼誹結揮痛揳灌牲用杖河織蠕敗券伉靂霓抶楹蛇帚珊鍛湯矩壤肱誳卞銜威枻甲俞林綰籍踈鎛踞鷇䎚飽升殛寇舜蛟藤役古撻廄駼甸絺胅肌貐憫網癩倒椅著垸閑䤿語鞈保賃司循佚紀葅泱亭潠炮駙螟蛻頌攉梲鎩增理堅濫捷帆遂奪擁礙管鵠湜邵㗸鞀蠖鐸謹爟蛭駟麑贕倦楓慮騧沂唫祠抉檠想臊蠐晽滿噆闇錞礪播琉革意藏面源侈謌丙梓鯁汪盈舂鞭菖嶢啓匠蹏墜甬毇讀京托澖閟祟撤胝菜菱湫詟令補埆瀁貽湍詎淇裨重㗖場蜄眩社尉滒蛩湡憑宄蛾狡忍桴蚈褰誰泓琵鸚創煬讒紾菟約項迕禁鬻鹿策騰祖圃帷拱濞洒礛簠金毀鬢線藕寞脛賁悅幢宜旅葬段弩翠點柚杕啳陵臂赤聒隙藉裊鼠岸書鬭鞟坯固謳淢熳窺輦絕桁礜積眾猵譟涔零颯唈召狩生顇幼削鋋問幌魯察驪覿輓罕跂鍪右醯琅酒躩齰繶判樾草踏侳偷貝相是蔣戟諧暑涕稃好注牒嘯翅呼鵶虎民康繹猩陶苧枺黔餘祿蒯袖牢裁漳笋碑鼇欄更啼黑綬逕床夔廟靈尺黜苟震磯獫漁旄憒急啜貿銷炷韶家教逶蟠嬛禿癭誋死刷籌白賴䵻瓊戰曰攝廢凡暴熯莒啄蕃彿住香駒佾波驚遑瓠丱仙黓骴媧槐嗔漚當說帔州彼訢窕諝愨陋灟戊列紙證渙衿陬餽芭襟灸初捉郄近髓埵烏序騅沖荔擲善猶寡諷㳂濃彗袂鬉擿棲減直攄䤄詠周火磽駐龜基御叢險叱測篪殞芍頂筆徒展癃妃梣袒暍靴豆遵螾戲彭畜宁埏選艸毫屈盥喙隅鉗雿疲楔輒眸脫虙蝗匣銋邪遭飂撰萌千延臒躐風軒蒨陊醲每兕吐築植脯載姝塘寐愷繕峽衙饉漬洽炎泆鑽篇梨望眥豨騶敕文虬韂悴缶移丘瓮雀趢樓骭蟄僦刀緝歧亳總謫踡何乾刻逆唱荊橢桃咿莦峭臉穴粱戴崖惲鵀苗鶴勢挻堨軋嵇蘧酤國寫臿剌斧衽繒磎皰烑扇醫輊狹殖娶倩韀犯覘捎峩槲境慷抵濆止搶克喉鳥邀礦銅蔐蠶踰硯𠏉屩覩名襜禘桎簞傾竿猘淋猛浩煩齊嘔魚沼蠬害弗檉忌慨霧廉桔樞蝍板兌脅柔祗逵揆枘岑足廳繩土踆廛眄弦負踹程飄凍儷隆正袨氐繪念隧牿造迥摯暖撲勒替囀射將驕貉螬淚拙篁災買滴溪反并庫拊戌祚卒碎壚臣虆默縹筋釂大齲爁慅牙我矜觴濱途憀散地斬蓐維褥紂樸出衝幘鸊空紱桐檜忿鎒蔭耦讓蕙兒袀跳驛時薪䍡劂狠膳隨枕鳴爰瀆閹耘挐刲肆牕貶馥午阿橈試糺泫劄成韓眯喑蝨憐賄摲沓衾難瑞斑洲飡宏單蛷顙㪍勺拜豪兔氣鮑羅机悌味醮溺鞅佹挃萸堯虛粟人郯榘己食裹聖蛖解犇誅賞銖緌瓶範薰誂蜥夫鬼旱貍豫既拒胼鷰鎖娘逃珮庶婪黏偽鉒蒼冤別終謗僕鹽窬蚨奔誡奉嬰瘧霽突昆羊見琪炙釭虹榻硝計式鴟祀髀葉論象萇淵任絝慬複岫奏曳拗瑯鞬耎傑鬟芒握宴悖樽簀飫慊枳怵盜鯤殷澆蝮崇拋薦狗槥柵于沱易脊簵臨亦瀉饒斫慢犢苻方埋撓禮畢嘻秉擺漂畫晉朅憎紈暈師前橋囿莘盛壇然寬辰鐃價競蕘聚窔佐恥颣助謂丈墓醴略典仍綌軸桂微踐鸞餮並摸箘鄢致涼舴怯确篡夏講經簦導隋撝薄蟆榴郎妁亨池舍氓佗翎栽銳湣擾已勁睿思域晴騕爵秣莊菉傲壑探簳焉蘅繆稼蛤觥辱軵耻璜騊墮欣要螢暫蠟堮簡燿冒渺佩褐俎柱矗辛咼形極徧像營汶蟾顛廊企箄嫉嗜嘶詮貂栗綆鎮惰伐忤濮楮叫蜚咐矛氛縈岐霄芬絆蔟驉徽鈐搏惛壺擅胡嗷鍵筑湼沾楞稅勤縫吻縗掇凰貸彌為籬暇挫批黂冀㝱敝鷙皓割簪撫昭輯裾紳系磨儀擯佔泣輪賣輔韻娥澁姑撜諾女躃繞瀚括齵垠趺游掠侏殯憾浮壘皇貰奚箑牡概紲血砥樹六婺吝盾劫圍熟流霆篦謁烘骸薶儁詞販粗恒杵崔涘嗇阤悼府儲度昱恭晨凈錙車予妻芰纊屬袤再其絞臼糲敘丹頗瓘技慧畔拭夜諫藹燈橉伽壁他溶棄疊槁隳整肩表紵洛妄雪勉煙泲猿振酢槩耆饗濁遽淡堿 35 |
36 | 39 | 40 | -------------------------------------------------------------------------------- /screenshots/gif001.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/screenshots/gif001.gif -------------------------------------------------------------------------------- /screenshots/gif002.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/screenshots/gif002.gif -------------------------------------------------------------------------------- /screenshots/gif003.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/screenshots/gif003.gif -------------------------------------------------------------------------------- /screenshots/gif004.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/screenshots/gif004.gif -------------------------------------------------------------------------------- /screenshots/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/screenshots/loading.gif -------------------------------------------------------------------------------- /screenshots/screenshot001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/screenshots/screenshot001.png -------------------------------------------------------------------------------- /screenshots/screenshot002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/screenshots/screenshot002.png -------------------------------------------------------------------------------- /screenshots/sheet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/screenshots/sheet.jpg -------------------------------------------------------------------------------- /screenshots/sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/screenshots/sheet.png -------------------------------------------------------------------------------- /scripts/releasenotes.js: -------------------------------------------------------------------------------- 1 | const exec = require('child_process').execSync 2 | 3 | const latestVersion = process.argv[2] 4 | const version = process.argv[3] 5 | 6 | exec(`git log --pretty=format:\"* %s (%h)\" ${latestVersion}...HEAD`, { stdio: 'inherit' }) 7 | 8 | console.log(` 9 | ----- 10 | 11 | - **qiji.ttf** The 5916 core glyphs. 12 | - **qiji-fallback.ttf** Fallback glyphs covering unicode entry point 0x4e00 - 0x9feb. Generated by adding noise and distortion to a digital font, simulating woodblock printed quality. Based on [Source Han Serif](https://github.com/adobe-fonts/source-han-serif), see [their SIL license](https://github.com/adobe-fonts/source-han-serif/blob/master/LICENSE.txt). 13 | - **qiji-combo.ttf** Core and fallback combined in one font file, covering 0x4e00 - 0x9feb plus punctuations, for convenience. 14 | `) -------------------------------------------------------------------------------- /workflow/anim.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/workflow/anim.gif -------------------------------------------------------------------------------- /workflow/check_progress.py: -------------------------------------------------------------------------------- 1 | from glob import glob 2 | import json 3 | 4 | # odd = {x.split("\t")[0]:x.split("\t")[1] for x in open("../data/variant_map.txt",'r').read().split("\n")} 5 | # def uni(s): 6 | # t = "" 7 | # for x in s: 8 | # if x in odd: 9 | # t += odd[x] 10 | # else: 11 | # t += x 12 | # return t 13 | 14 | # ocr_ret = [y.split("\t") for y in ("\n".join([open(x,'r').read() for x in glob("../tmp/ocr_ret*.txt")])).split("\n") if len(y)] 15 | # hnz = list(set(open('../data/labels_hnz_raw.txt','r').read())) 16 | 17 | 18 | # tc2sc = json.loads(open("../data/TC2SC.json",'r').read()) 19 | # sc2tc = {} 20 | # for k in tc2sc: 21 | # sc2tc[tc2sc[k]]=k 22 | 23 | # new = list(set([(sc2tc[x[1][0]] if x[1][0] in sc2tc else x[1][0]) for x in ocr_ret if len(x[1])])) 24 | 25 | old = [x.split("\t")[1] for x in open("../data/labels_all.txt",'r').read().split("\n") if len(x)] 26 | 27 | # add = [x for x in new if x not in old] 28 | 29 | # addhnz = [x for x in hnz if x not in old] 30 | 31 | # print(add,len(add)) 32 | 33 | # print(addhnz,len(addhnz)) 34 | 35 | # unionhnz = addhnz+old 36 | 37 | 38 | corp = "".join([open(x,'r').read() for x in glob("../../wenyan-book/*.md")]) 39 | scorp = "".join(sorted(list(set([x for x in list(corp) if 0x4e00 < ord(x) < 0x9fff])))) 40 | 41 | chuci = list(set(open("../../../Downloads/chuci.txt",'r').read())) 42 | 43 | common = set(open("../data/common4808.txt",'r').read()) 44 | 45 | lack = [x for x in scorp if x not in old and x not in chuci] 46 | print(lack,len(lack)) 47 | 48 | print(len(old)) 49 | 50 | lackc = [x for x in scorp if x not in old] 51 | print("".join(lackc),len(lackc)) -------------------------------------------------------------------------------- /workflow/compact_pages.py: -------------------------------------------------------------------------------- 1 | from glob import glob 2 | import cv2 3 | import numpy as np 4 | cv = cv2 5 | 6 | pages = glob("../pages/*.png") 7 | for p in pages: 8 | print(p) 9 | im = cv.imread(p,0).astype(np.float32)/255 10 | m = np.min(im)+0.1 11 | M = np.max(im)-0.1 12 | nml = (im-m)/(M-m) 13 | nml = np.clip(nml,0,1) 14 | cv2.imwrite("../tmp/compact_pages/"+p.split("/")[-1],cv2.resize((nml*255).astype(np.uint8),(0,0),fx=0.1,fy=0.1,interpolation=cv2.INTER_AREA)) -------------------------------------------------------------------------------- /workflow/extract.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | cv = cv2 3 | from glob import glob 4 | import numpy as np 5 | import random 6 | 7 | def f2t(f): 8 | return "../data/rects/"+f.split(" ")[1].split(".")[0]+".tsv" 9 | 10 | # files = glob("pages/李长吉歌诗.4卷.外诗集1卷.李贺撰.刘辰翁评.明末凌濛初刊闵氏朱墨套印本 11.png") 11 | 12 | files = glob("../pages/* H*.png") 13 | files = glob("../pages/* H230.png") 14 | 15 | done = glob("../output/coarse/*.png") 16 | 17 | def show(x): 18 | cv2.imshow('',x);cv2.waitKey(0) 19 | 20 | for f in files: 21 | 22 | print(f) 23 | rects = [[int(y) for y in x.split("\t")] for x in open(f2t(f),'r').read().split("\n") if len(x)] 24 | im = cv2.imread(f); 25 | for r in rects: 26 | if (not r[2]) or (not r[3]): 27 | continue 28 | # if not (4500 th.shape[0]-5): 70 | return False 71 | if (r[0]+r[2] > th.shape[1]-5): 72 | return False 73 | 74 | if (r[2]<20): 75 | if (r[0] < 20): 76 | return False 77 | if (r[0]+r[2] > th.shape[1]-20): 78 | return False 79 | 80 | if (r[3]<20): 81 | if (r[1] < 20): 82 | return False 83 | if (r[1]+r[3] > th.shape[0]-20): 84 | return False 85 | 86 | if (r[2] < 10 and r[3] < 10): 87 | return False 88 | return True 89 | 90 | for i in range(len(contours)): 91 | rc = boundRect[i] 92 | if not rectok(rc): 93 | continue 94 | is_hole = hier[0][i][3] >= 0; 95 | if not is_hole: 96 | color = (random.randrange(128,255), random.randrange(128,255), random.randrange(128,255)) 97 | else: 98 | color = (0,0,0) 99 | # print(hier[0][i]) 100 | 101 | cnt = contours[i] 102 | approx = cv2.approxPolyDP(cnt,1.5,True) 103 | 104 | cv.drawContours(drawing, [approx], 0, color, -1) 105 | for x in approx: 106 | cv.rectangle(drawing, (x[0,0]-1,x[0,1]-1), (x[0,0]+1,x[0,1]+1), (0,0,255), 1) 107 | 108 | if not is_hole: 109 | nhier[i] = [] 110 | mask.append(i) 111 | else: 112 | p = hier[0][i][3] 113 | if rectok(boundRect[p]): 114 | if not (p in nhier): 115 | nhier[p] = [] 116 | nhier[p].append(i) 117 | mask.append(i) 118 | 119 | ncnt = [] 120 | for i in range(len(contours)): 121 | approx = cv2.approxPolyDP(contours[i],1.5,True) 122 | # approx = contours[i] 123 | approx = [x[0] for x in approx] 124 | ncnt.append(approx) 125 | # print(n cnt) 126 | pts = [] 127 | for i in mask: 128 | for j in range(len(ncnt[i])): 129 | pts.append(ncnt[i][j]) 130 | if (len(pts) == 0): 131 | continue 132 | bd = cv.boundingRect(np.array(pts)) 133 | 134 | px,py = 0,0 135 | s = 1 136 | if bd[2]>bd[3]: 137 | py = (bd[2]-bd[3])/2 138 | s = 1/bd[2] 139 | else: 140 | px = (bd[3]-bd[2])/2 141 | s = 1/bd[3] 142 | 143 | for i in mask: 144 | for j in range(len(ncnt[i])): 145 | x = round((ncnt[i][j][0]-bd[0]+px)*s*256) 146 | y = round((ncnt[i][j][1]-bd[1]+py)*s*256) 147 | ncnt[i][j][0] = x 148 | ncnt[i][j][1] = y 149 | 150 | ren = np.ones((256,256),np.uint8)*255 151 | 152 | 153 | for k in nhier: 154 | cv.drawContours(ren, [np.array(ncnt[k])], 0, (0,0,0), -1); 155 | 156 | for k1 in nhier[k]: 157 | cv.drawContours(ren, [np.array(ncnt[k1])], 0, (255,255,255), -1); 158 | 159 | 160 | for i in nhier: 161 | re = boundRect[i] 162 | cv.rectangle(drawing, (int(re[0]), int(re[1])), (int(re[0]+re[2]), int(re[1]+re[3])), (255,255,255), 1) 163 | 164 | # show(ren) 165 | # show(c3) 166 | # show(thd) 167 | # show(drawing) 168 | 169 | cv2.imwrite("../tmp/dbg/"+oname,drawing) 170 | cv2.imwrite("../output/coarse/"+oname,ren) 171 | -------------------------------------------------------------------------------- /workflow/extras.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | cv = cv2 3 | 4 | im = cv2.imread("../singles/Snip20200131_9.png",0) 5 | im = cv2.resize(im,(512,512)) 6 | im = cv2.GaussianBlur(im,(5,5),0) 7 | im = cv2.adaptiveThreshold(im,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,151,5) 8 | 9 | cv2.imshow('',im);cv2.waitKey(0) 10 | 11 | cv2.imwrite("../output/singles/、.bmp",im) -------------------------------------------------------------------------------- /workflow/fine_tune.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | // var stage = fs.readdirSync("../output/stage").filter(x=>x.endsWith(".svg")) 3 | 4 | var glyph_keys = fs.readFileSync("../data/labels_all.txt").toString().split("\n").filter(x=>x.length).map(x=>x.split("\t")[0].replace(".png",".svg")) 5 | 6 | var glyphs = {} 7 | // for (var i = 0; i < stage.length; i++){ 8 | // glyphs[stage[i]]=fs.readFileSync("../output/stage/"+stage[i]).toString() 9 | // } 10 | for (var i = 0; i < glyph_keys.length; i++){ 11 | glyphs[glyph_keys[i]]=fs.readFileSync("../output/fine/"+glyph_keys[i]).toString() 12 | .replace('width="512.000000pt" height="512.000000pt" viewBox','width="100" height="100" viewBox') 13 | } 14 | var xforms_str = "{}"; 15 | try{ 16 | xforms_str = fs.readFileSync("../data/svg_tweak.json").toString() 17 | }catch(e){ 18 | 19 | } 20 | function make_page(){ 21 | var W = 64; 22 | var NPR= 10; 23 | var glyph_keys = Object.keys(glyphs); 24 | var s = ""; 25 | 26 | // glyph_keys = glyph_keys.filter(x=>{ 27 | // if (! (x in xforms)){ 28 | // return true; 29 | // } 30 | // if (xforms[x].x == 0 && xforms[x].y == 0 && xforms[x].rotate == 0 && xforms[x].scale == 1){ 31 | // return true; 32 | // } 33 | // return false; 34 | // }) 35 | for (var i = 0; i < glyph_keys.length; i++){ 36 | var k = glyph_keys[i] 37 | s+=glyphs[k].replace(/0); 49 | if (i % 100 == 0){ 50 | console.log(i,"/",glyph_keys.length); 51 | } 52 | } 53 | 54 | var rh = W*Math.ceil(glyph_keys.length/NPR)*0.8; 55 | var rule = `` 56 | 57 | for (var i = 0; i < glyph_keys.length; i++){ 58 | var k = glyph_keys[i] 59 | var d = document.getElementById(k) 60 | d.style.outerHTML = glyphs[k]; 61 | d.style.position="absolute"; 62 | d.style.left=((i % NPR)*W*1.2)+"px" 63 | d.style.top=(Math.floor(i / NPR)*W*0.8)+"px" 64 | d.style.zIndex="100" 65 | d.onclick = function(){update_hl(this.id)} 66 | 67 | rule += `` 68 | rule += `` 69 | 70 | rule += `` 71 | rule += `` 72 | } 73 | for (var i = 0; i < NPR; i++){ 74 | rule += `` 75 | rule += `` 76 | rule += `` 77 | } 78 | 79 | rule += "" 80 | document.getElementById("rule").innerHTML+=rule 81 | 82 | var hl = document.createElement("div"); 83 | hl.style.border = "1px solid cyan"; 84 | hl.style.position = "absolute" 85 | document.body.appendChild(hl) 86 | function update_hl(eid){ 87 | glyph_hl = eid; 88 | hl.style.left = document.getElementById(eid).style.left; 89 | hl.style.top = document.getElementById(eid).style.top; 90 | hl.style.width = W+"px"; 91 | hl.style.height = W+"px"; 92 | } 93 | function update_xform(f){ 94 | var svgin = glyphs[glyph_hl].replace(/[^ç]*/g,"").replace(/<\/svg>/g,""); 95 | var t = xforms[glyph_hl]; 96 | f(t); 97 | var gstr = `` 98 | // console.log(gstr) 99 | document.getElementById(glyph_hl).innerHTML = gstr+svgin+""; 100 | } 101 | var rule_hidden = false; 102 | document.body.onkeypress = function(e){ 103 | if (e.code=="KeyA"){ 104 | update_xform((t)=>{t.x-=1}) 105 | }else if (e.code=="KeyD"){ 106 | update_xform((t)=>{t.x+=1}) 107 | }else if (e.code=="KeyW"){ 108 | update_xform((t)=>{t.y-=1}) 109 | }else if (e.code=="KeyS"){ 110 | update_xform((t)=>{t.y+=1}) 111 | }else if (e.code=="KeyZ"){ 112 | update_xform((t)=>{t.scale-=0.01}) 113 | }else if (e.code=="KeyX"){ 114 | update_xform((t)=>{t.scale+=0.01}) 115 | }else if (e.code=="KeyQ"){ 116 | update_xform((t)=>{t.rotate-=1}) 117 | }else if (e.code=="KeyE"){ 118 | update_xform((t)=>{t.rotate+=1}) 119 | }else if (e.code=="KeyR"){ 120 | update_xform((t)=>{t.rotate=0;t.x=0;t.y=0;t.scale=1}) 121 | }else if (e.code=="KeyF"){ 122 | saveData(JSON.stringify(xforms),"svg-tweak-"+(new Date()).getTime().toString()+".json") 123 | }else if (e.code=="KeyH"){ 124 | rule_hidden = !rule_hidden 125 | document.getElementById("rule").style.opacity=rule_hidden?"0":"1" 126 | } 127 | } 128 | 129 | } 130 | 131 | var html = ` 132 | 133 | 134 |
135 |
136 |
137 |
138 | 161 | 162 | ` 163 | fs.writeFileSync("../tmp/fine_tune.html",html) 164 | -------------------------------------------------------------------------------- /workflow/forge_font.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # fontforge -lang=py -script forge_font.py 3 | 4 | # generate a TTF font using fontforge 5 | 6 | from glob import glob 7 | import os 8 | import sys 9 | import json 10 | import fontforge 11 | 12 | odd = [x.split("\t") for x in open("../data/variant_map.txt",'r').read().split("\n") if len(x)] 13 | simp = json.loads(open("../data/TC2SC.json",'r').read()) 14 | simp = [[x,simp[x]] for x in simp] 15 | version = json.loads(open("../package.json", "r").read())["version"] 16 | 17 | font = fontforge.font() 18 | font.familyname = "QIJI" 19 | font.fontname = "QIJI" 20 | font.fullname= "QIJI" 21 | font.copyright = "Copyright (c) 2020, Lingdong Huang" 22 | font.version = version 23 | 24 | 25 | care = {x.split("\t")[0].split("/")[-1].split(".")[0]:x.split("\t")[1] for x in open("../data/labels_all.txt",'r').read().split("\n") if len(x)} 26 | 27 | # print(care) 28 | # for f in glob("../output/stage/*.svg"): 29 | for pth in care: 30 | 31 | char = care[pth] 32 | # if f.split("/")[-1].split(".")[0] not in care: 33 | # exit() 34 | # continue 35 | # char = care[f.split("/")[-1].split(".")[0]] 36 | f = "../output/stage/"+pth+".svg" 37 | 38 | other = set() 39 | for o in odd: 40 | if o[0] == char: 41 | other.add(o[1]) 42 | elif o[1] == char: 43 | other.add(o[0]) 44 | 45 | for o in simp: 46 | if o[0] == char: 47 | other.add(o[1]) 48 | elif o[1] == char: 49 | other.add(o[0]) 50 | 51 | 52 | hx = ord(char) 53 | print(hx,char,list(other)) 54 | glyph = font.createChar(hx) 55 | try: 56 | glyph.importOutlines(f) 57 | except: 58 | print("lack",f) 59 | exit() 60 | continue 61 | glyph.width=800 62 | # glyph.simplify() 63 | 64 | other = other - set(care.values()) 65 | if len(other) > 0: 66 | glyph.altuni = [ ord(o) for o in other ] 67 | 68 | # for o in other: 69 | # if o not in list(care.values()): 70 | # hx = ord(o) 71 | # glyph = font.createChar(hx) 72 | # glyph.importOutlines(f) 73 | # glyph.width=800 74 | # print(o,"copied") 75 | # else: 76 | # pass 77 | # print(o,"has own glyph") 78 | 79 | glyph = font.createChar(0x3001) 80 | glyph.importOutlines("../output/singles/、f.svg") 81 | glyph.width=800 82 | glyph = font.createChar(0x3002) 83 | glyph.importOutlines("../output/singles/。f.svg") 84 | glyph.width=800 85 | glyph = font.createChar(0x3000) 86 | glyph.width=800 87 | glyph = font.createChar(0x20) 88 | glyph.width=800 89 | 90 | print(len(list(font.glyphs()))) 91 | 92 | font.generate("../dist/qiji.ttf") 93 | 94 | -------------------------------------------------------------------------------- /workflow/judge.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | cv = cv2 4 | import json 5 | 6 | 7 | # known_problem = ["/Users/admin/proj/qiji-font/coarse/"+x for x in open("../data/ocr_crashers.txt",'r').read().split("\n")] 8 | 9 | goodone = [x.split("\t") for x in open("../tmp/labels.txt",'r').read().split("\n")] 10 | misdone = [x.split("\t") for x in open("../tmp/mislabels.txt",'r').read().split("\n")] 11 | 12 | mislabel = misdone 13 | goodlabel = goodone 14 | nolabel = []#known_problem 15 | 16 | tc2sc = json.loads(open("../data/TC2SC.json",'r').read()) 17 | sc2tc = {} 18 | for k in tc2sc: 19 | # if tc2sc[k] not in sc2tc: 20 | # sc2tc[tc2sc[k]] = [] 21 | # sc2tc[tc2sc[k]].append(k) 22 | sc2tc[tc2sc[k]]=k 23 | 24 | files = [x.replace("\t\t","\t").split("\t") for x in open("../data/labels_hnz_raw.txt",'r').read().split("\n") if len(x)] 25 | files = [["../output/coarse/"+x[0],x[1]] for x in files] 26 | 27 | done = [x.split("\t")[1] for x in open("../data/labels_lh.txt",'r').read().split("\n") if len(x)] 28 | 29 | for f in files: 30 | if len(f) != 2: 31 | print(f) 32 | 33 | 34 | collect = {} 35 | for f,xs in files: 36 | # xs = [x for x in list(xs) if 0x4e00 < ord(x) < 0x9fff] 37 | if (len(xs) == 0): 38 | nolabel.append(f) 39 | for x in xs: 40 | if x not in done: 41 | if x not in collect: 42 | collect[x] = [] 43 | collect[x].append(f) 44 | 45 | print(collect.keys(),len(collect.keys())) 46 | 47 | open("../tmp/nolabels.txt",'w').write("\n".join(nolabel)) 48 | 49 | mouse_x, mouse_y = 0,0 50 | def get_mouse(event,x,y,flags,param): 51 | global mouse_x,mouse_y 52 | mouse_x = x 53 | mouse_y = y 54 | 55 | cv2.namedWindow('im') 56 | cv2.setMouseCallback('im',get_mouse) 57 | 58 | 59 | cnt = 0 60 | for c in collect: 61 | cnt +=1 62 | is_done = False; 63 | for x in collect[c]: 64 | for y in mislabel+goodlabel: 65 | if x == y[0]: 66 | is_done = True 67 | break 68 | 69 | if is_done: 70 | print("done",c) 71 | continue 72 | imgs = [] 73 | for x in collect[c]: 74 | if cv.imread(x) is None: 75 | print("no img",c,x) 76 | else: 77 | imgs.append(x) 78 | if not len(imgs): 79 | continue 80 | im = np.hstack([cv.imread(i) for i in imgs[0:50]]) 81 | c0 = c 82 | c2 = c 83 | if c in sc2tc: 84 | c = sc2tc[c] 85 | 86 | mlbl= [] 87 | glbl = [] 88 | cv2.imshow('im',im) 89 | 90 | n = 0 91 | 92 | print(cnt,'/',len(collect.keys()),'【',c,'】') 93 | 94 | 95 | def calc_n(): 96 | global n 97 | n = mouse_x//256 98 | if (n < 0): 99 | n = 0 100 | if (n >= len(collect[c0])): 101 | n = len(collect[c0])-1 102 | 103 | while 1: 104 | draw = im.copy() 105 | 106 | calc_n() 107 | # print(glbl,mlbl) 108 | for i,x in enumerate(collect[c0]): 109 | for m in mlbl: 110 | if x == m[0]: 111 | cv2.rectangle(draw,(i*256,0),(i*256+256,256),(0,0,255),30) 112 | for m in glbl: 113 | if x == m[0]: 114 | cv2.rectangle(draw,(i*256,0),(i*256+256,256),(0,255,0),20) 115 | 116 | cv2.imshow('im',draw) 117 | k = cv2.waitKey(0) 118 | if k == ord('1'): 119 | calc_n() 120 | lx = (collect[c0][n],c) 121 | glbl.append(lx) 122 | print("goodlabel",len(glbl),lx) 123 | cv2.imshow('im',draw) 124 | elif k == ord('2'): 125 | calc_n() 126 | lx = (collect[c0][n],c) 127 | mlbl.append(lx) 128 | print("mislabel",len(mlbl),lx) 129 | cv2.imshow('im',draw) 130 | elif k == ord('3'): 131 | calc_n() 132 | c,c2 = c2,c 133 | print("tradswap",c) 134 | cv2.imshow('im',draw) 135 | elif k == ord('4'): 136 | glbl = [] 137 | mlbl = [] 138 | elif k == ord(' '): 139 | break; 140 | cv2.imshow('im',draw) 141 | 142 | for m in mlbl: 143 | if m not in mislabel: 144 | mislabel.append(m) 145 | for m in glbl: 146 | if m not in goodlabel: 147 | goodlabel.append(m) 148 | 149 | open("../tmp/labels.txt",'w').write("\n".join(["\t".join(list(x)) for x in goodlabel])) 150 | open("../tmp/mislabels.txt",'w').write("\n".join(["\t".join(list(x)) for x in mislabel])) 151 | print(collect) -------------------------------------------------------------------------------- /workflow/lay_grid.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | cv = cv2 3 | from glob import glob 4 | import numpy as np 5 | import random 6 | 7 | # PAGE_COLS = 8 8 | # PAGE_ROWS = 19 9 | PAGE_COLS = 9 10 | PAGE_ROWS = 20 11 | 12 | def f2t(f): 13 | return "../data/rects/"+f.split(" ")[1].split(".")[0]+".tsv" 14 | 15 | # files = glob("../pages/李长吉歌诗.4卷.外诗集1卷.李贺撰.刘辰翁评.明末凌濛初刊闵氏朱墨套印本 11.png") 16 | 17 | files = glob("../pages/*.png") 18 | done = glob("../data/rects/*.tsv") 19 | print(files) 20 | print(done) 21 | files = [f for f in files if f2t(f) not in done] 22 | print(len(files)) 23 | 24 | def generate_grid(x,y,w,h,o,m): 25 | cols = PAGE_COLS 26 | rows = PAGE_ROWS 27 | u = w/cols 28 | v = h/rows 29 | px = 0.02 * w 30 | py = 0 * h 31 | R = [] 32 | oo = 0 33 | 34 | for i in range(rows): 35 | mm = 0 36 | for j in range(cols): 37 | rx = x + u * j + px + oo 38 | ry = y + v * i + py + mm 39 | rw = u - 2 * px 40 | rh = v - 2 * py 41 | R.append([rx,ry,rw,rh]) 42 | mm += m 43 | oo += o 44 | 45 | return R 46 | 47 | mouse_x, mouse_y = 0,0 48 | def get_mouse(event,x,y,flags,param): 49 | global mouse_x,mouse_y 50 | mouse_x = x 51 | mouse_y = y 52 | 53 | cv2.namedWindow('im') 54 | cv2.setMouseCallback('im',get_mouse) 55 | 56 | print(len(files)) 57 | for f in files: 58 | print(files.index(f),'/',len(files),f) 59 | im = cv2.imread(f); 60 | im = cv2.resize(im,(0,0),fx=0.5,fy=0.5) 61 | x0 = 0 62 | y0 = 0 63 | x1 = 0 64 | y1 = 0 65 | x2 = 0 66 | y2 = 0 67 | x3 = 0 68 | y3 = 0 69 | o0 = 0 70 | o1 = 0 71 | m0 = 0 72 | m1 = 0 73 | R1,R2 = [],[] 74 | 75 | cv2.imshow("im",im) 76 | 77 | while 1: 78 | drawing = np.copy(im) 79 | 80 | 81 | k = cv2.waitKey(0) 82 | 83 | if k == ord('1'): 84 | x0 = mouse_x 85 | y0 = mouse_y 86 | 87 | elif k == ord('2'): 88 | x1 = mouse_x 89 | y1 = mouse_y 90 | 91 | elif k == ord('3'): 92 | x2 = mouse_x 93 | y2 = mouse_y 94 | 95 | elif k == ord('4'): 96 | x3 = mouse_x 97 | y3 = mouse_y 98 | 99 | elif k == ord('q'): 100 | o0 -=0.2 101 | elif k == ord('w'): 102 | o0 +=0.2 103 | elif k == ord('e'): 104 | o1 -=0.2 105 | elif k == ord('r'): 106 | o1 +=0.2 107 | 108 | elif k == ord('a'): 109 | m0 -=0.2 110 | elif k == ord('s'): 111 | m0 +=0.2 112 | elif k == ord('d'): 113 | m1 -=0.2 114 | elif k == ord('f'): 115 | m1 +=0.2 116 | 117 | 118 | elif k == ord(' '): 119 | break 120 | elif k == ord('t'): 121 | x0 = 0 122 | y0 = 0 123 | x1 = 0 124 | y1 = 0 125 | x2 = 0 126 | y2 = 0 127 | x3 = 0 128 | y3 = 0 129 | o0 = 0 130 | o1 = 0 131 | m0 = 0 132 | m1 = 0 133 | 134 | print(x0,y0,x1,y1,x2,y2,x3,y3 ) 135 | 136 | # R = generate_grid(251,1001,2635,3812) 137 | R1 = generate_grid(x0,y0,x1-x0,y1-y0,o0,m0) 138 | R2 = generate_grid(x2,y2,x3-x2,y3-y2,o1,m1) 139 | 140 | for r in R1: 141 | cv.rectangle(drawing, (int(r[0]),int(r[1])), (int(r[0]+r[2]),int(r[1]+r[3])), (0,255,255), 4) 142 | 143 | for r in R2: 144 | cv.rectangle(drawing, (int(r[0]),int(r[1])), (int(r[0]+r[2]),int(r[1]+r[3])), (255,255,0), 4) 145 | 146 | cv.rectangle(drawing, (int(x0),int(y0)), (int(x1),int(y1)), (0,0,255), 2) 147 | cv.rectangle(drawing, (int(x2),int(y2)), (int(x3),int(y3)), (0,0,255), 2) 148 | 149 | cv2.imshow("im",drawing) 150 | 151 | R = [] 152 | if x0 != 0: 153 | R += R1 154 | if x2 != 0: 155 | R += R2 156 | 157 | open(f2t(f),'w').write("\n".join(["\t".join([str(int(y*2)) for y in x]) for x in (R1+R2)])) 158 | 159 | -------------------------------------------------------------------------------- /workflow/lay_grid_corner.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | cv = cv2 3 | from glob import glob 4 | import numpy as np 5 | import random 6 | 7 | # PAGE_COLS = 8 8 | # PAGE_ROWS = 19 9 | PAGE_COLS = 9 10 | PAGE_ROWS = 20 11 | 12 | def f2t(f): 13 | return "../data/rects/"+f.split(" ")[1].split(".")[0]+".tsv" 14 | 15 | # files = glob("../pages/李长吉歌诗.4卷.外诗集1卷.李贺撰.刘辰翁评.明末凌濛初刊闵氏朱墨套印本 11.png") 16 | 17 | files = glob("../pages/*.png") 18 | done = glob("../data/rects/*.tsv") 19 | print(files) 20 | print(done) 21 | files = [f for f in files if f2t(f) not in done] 22 | print(len(files)) 23 | 24 | def generate_grid(x0,y0,x1,y1,x2,y2,x3,y3): 25 | cols = PAGE_COLS 26 | rows = PAGE_ROWS 27 | 28 | w = (x1-x0)/cols 29 | h = (y2-y0)/rows 30 | 31 | R = [] 32 | 33 | for i in range(rows): 34 | s = i/rows 35 | for j in range(cols): 36 | t = 0.01+(j/cols)*0.98 37 | # t=(j/cols) 38 | xtop = x0*(1-t)+x1*t 39 | ytop = y0*(1-t)+y1*t 40 | 41 | xbot = x3*(1-t)+x2*t 42 | ybot = y3*(1-t)+y2*t 43 | 44 | x = xtop*(1-s)+xbot*s 45 | y = ytop*(1-s)+ybot*s 46 | 47 | R.append([x+w*0.1,y,w*0.8,h]) 48 | return R 49 | 50 | mouse_x, mouse_y = 0,0 51 | def get_mouse(event,x,y,flags,param): 52 | global mouse_x,mouse_y 53 | mouse_x = x 54 | mouse_y = y 55 | 56 | cv2.namedWindow('im') 57 | cv2.setMouseCallback('im',get_mouse) 58 | 59 | print(len(files)) 60 | files.sort(key= lambda x: int(x.split(" ")[1].split(".")[0][1:])) 61 | for f in files: 62 | print(files.index(f),'/',len(files),f) 63 | im = cv2.imread(f); 64 | im = cv2.resize(im,(0,0),fx=0.5,fy=0.5) 65 | 66 | x0 = 0 67 | y0 = 0 68 | x1 = 0 69 | y1 = 0 70 | x2 = 0 71 | y2 = 0 72 | x3 = 0 73 | y3 = 0 74 | 75 | x4 = 0 76 | y4 = 0 77 | x5 = 0 78 | y5 = 0 79 | x6 = 0 80 | y6 = 0 81 | x7 = 0 82 | y7 = 0 83 | 84 | R1,R2 = [],[] 85 | 86 | cv2.imshow("im",im) 87 | 88 | while 1: 89 | drawing = np.copy(im) 90 | 91 | 92 | k = cv2.waitKey(0) 93 | 94 | if k == ord('1'): 95 | x0 = mouse_x 96 | y0 = mouse_y 97 | 98 | elif k == ord('2'): 99 | x1 = mouse_x 100 | y1 = mouse_y 101 | 102 | elif k == ord('3'): 103 | x2 = mouse_x 104 | y2 = mouse_y 105 | 106 | elif k == ord('4'): 107 | x3 = mouse_x 108 | y3 = mouse_y 109 | 110 | elif k == ord('5'): 111 | x4 = mouse_x 112 | y4 = mouse_y 113 | 114 | elif k == ord('6'): 115 | x5 = mouse_x 116 | y5 = mouse_y 117 | 118 | elif k == ord('7'): 119 | x6 = mouse_x 120 | y6 = mouse_y 121 | 122 | elif k == ord('8'): 123 | x7 = mouse_x 124 | y7 = mouse_y 125 | 126 | elif k == ord(' '): 127 | break 128 | 129 | elif k == ord('t'): 130 | x0 = 0 131 | y0 = 0 132 | x1 = 0 133 | y1 = 0 134 | x2 = 0 135 | y2 = 0 136 | x3 = 0 137 | y3 = 0 138 | o0 = 0 139 | o1 = 0 140 | m0 = 0 141 | m1 = 0 142 | 143 | print(x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7) 144 | 145 | # R = generate_grid(251,1001,2635,3812) 146 | R1 = generate_grid(x0,y0,x1,y1,x2,y2,x3,y3) 147 | R2 = generate_grid(x4,y4,x5,y5,x6,y6,x7,y7) 148 | 149 | for r in R1: 150 | cv.rectangle(drawing, (int(r[0]),int(r[1])), (int(r[0]+r[2]),int(r[1]+r[3])), (0,255,255), 4) 151 | 152 | for r in R2: 153 | cv.rectangle(drawing, (int(r[0]),int(r[1])), (int(r[0]+r[2]),int(r[1]+r[3])), (255,255,0), 4) 154 | 155 | cv.circle(drawing, (int(x0),int(y0)), 20, (0,0,255), 5) 156 | cv.circle(drawing, (int(x1),int(y1)), 20, (0,0,255), 5) 157 | cv.circle(drawing, (int(x2),int(y2)), 20, (0,0,255), 5) 158 | cv.circle(drawing, (int(x3),int(y3)), 20, (0,0,255), 5) 159 | cv.circle(drawing, (int(x4),int(y4)), 20, (0,0,255), 5) 160 | cv.circle(drawing, (int(x5),int(y5)), 20, (0,0,255), 5) 161 | cv.circle(drawing, (int(x6),int(y6)), 20, (0,0,255), 5) 162 | cv.circle(drawing, (int(x7),int(y7)), 20, (0,0,255), 5) 163 | 164 | cv2.imshow("im",drawing) 165 | 166 | R = [] 167 | if x0 != 0: 168 | R += R1 169 | if x2 != 0: 170 | R += R2 171 | 172 | open(f2t(f),'w').write("\n".join(["\t".join([str(int(y*2)) for y in x]) for x in (R1+R2)])) 173 | 174 | -------------------------------------------------------------------------------- /workflow/loading_anim.js: -------------------------------------------------------------------------------- 1 | 2 | var name_eq_main = typeof require !== 'undefined' && require.main === module; 3 | 4 | 5 | module.exports = async function (){ 6 | 7 | const fs = require('fs') 8 | const { createCanvas, loadImage } = require('canvas') 9 | var root = "../" 10 | 11 | var chars = ["字"] 12 | var labels = Object.fromEntries(fs.readFileSync(root+"data/labels_all.txt").toString().split("\n").filter(x=>x.length).map(x=>[x.split("\t")[1],x.split("\t")[0].replace(".png",".svg")])) 13 | 14 | var W = 100; 15 | var masks = []; 16 | 17 | var glyphs = chars.map(x=>fs.readFileSync(root+"output/stage/"+labels[x]).toString()) 18 | for (var i = 0; i < glyphs.length; i++){ 19 | var btoa = x=>Buffer.from(x).toString('base64') 20 | var svg64 = 'data:image/svg+xml;base64,'+btoa(glyphs[i]); 21 | var img = await loadImage(svg64); 22 | 23 | var canv = createCanvas(W,W); 24 | var ctx = canv.getContext('2d') 25 | ctx.drawImage(img,0,0); 26 | var dat = ctx.getImageData(0,0,100,100).data 27 | var mask = [] 28 | for (var j = 0; j < dat.length; j+=4){ 29 | mask[j/4]=dat[j+3]//(dat[j+3]>128)*255 30 | } 31 | masks.push(mask) 32 | } 33 | 34 | function main(){ 35 | var is_node = typeof requestAnimationFrame == 'undefined'; 36 | var W = 100; 37 | 38 | var canv; 39 | if (is_node){ 40 | const { createCanvas } = require('canvas') 41 | var fs = require('fs') 42 | canv = createCanvas(W,W); 43 | }else{ 44 | var div = document.createElement("div"); 45 | var liv = document.createElement("div"); 46 | 47 | canv = document.createElement("canvas"); 48 | canv.width=W; 49 | canv.height=W; 50 | canv.style.border = "1px solid black"; 51 | liv.appendChild(canv) 52 | 53 | var loading = document.createElement("div"); 54 | loading.innerHTML = "LOADING..." 55 | loading.style.fontFamily="monospace" 56 | loading.style.width = "100px"; 57 | loading.style.textAlign="center" 58 | liv.appendChild(loading); 59 | 60 | 61 | liv.style.position="absolute"; 62 | liv.style.left="calc(50% - 50px)"; 63 | liv.style.top="calc(50% - 80px)"; 64 | 65 | div.appendChild(liv); 66 | div.style.position="absolute"; 67 | div.style.left="0px"; 68 | div.style.top="0px"; 69 | div.style.width="100%"; 70 | div.style.height="100%"; 71 | div.style.background="rgba(255,255,255,0.8)" 72 | div.style.zIndex="100" 73 | document.body.appendChild(div); 74 | } 75 | 76 | var ctx = canv.getContext("2d") 77 | 78 | var head = [0,W,1]; 79 | var parts = [] 80 | var idx = 0; 81 | 82 | var killed = false; 83 | function kill(){ 84 | killed = true; 85 | } 86 | 87 | var frame = -1; 88 | 89 | if (typeof requestAnimationFrame == 'undefined'){ 90 | requestAnimationFrame = function(x){ 91 | 92 | var dat = ctx.getImageData(0,0,W,W).data; 93 | var ok = false; 94 | for (var i = 0; i < dat.length; i++){ 95 | if (dat[i] != 0){ 96 | ok = true; 97 | break; 98 | } 99 | } 100 | if (ok && (frame % 4 == 3)){ 101 | frame++; 102 | console.log(frame/4); 103 | fs.writeFileSync(`../tmp/loader/${(frame/4).toString().padStart(5,"0")}.png`, canv.toBuffer()) 104 | }else{ 105 | if (ok){ 106 | frame++; 107 | } 108 | } 109 | setTimeout(x,0) 110 | } 111 | } 112 | function a_pour(){ 113 | 114 | if (killed){ 115 | if (!is_node){ 116 | document.body.removeChild(div); 117 | } 118 | return; 119 | } 120 | var mask = masks[idx]; 121 | 122 | if (parts.length == 0){ 123 | var z = mask[head[1]*W+head[0]]; 124 | 125 | ctx.clearRect(head[0]-head[2],0,1,head[1]-1); 126 | if (z > 0){ 127 | ctx.fillStyle=`rgba(0,0,0,${z})` 128 | ctx.fillRect(head[0],0,1,head[1]); 129 | } 130 | head[0]+=head[2] 131 | if (head[0]>=W || head[0] < 0){ 132 | head[2] *= -1; 133 | head[1] -= 1; 134 | } 135 | if (head[1] <= 0){ 136 | head = [0,W,1]; 137 | for (var i = 0; i < mask.length; i++){ 138 | if (mask[i]>128){ 139 | var t = (i%W)/W; 140 | var s = Math.cos(t*10)+1//+(1.5*Math.floor(i/W)/W); 141 | parts.push([i%W,Math.floor(i/W),0,s*Math.random()*3+3]) 142 | } 143 | } 144 | if (is_node){ 145 | idx=idx + 1; 146 | }else{ 147 | idx=(idx+1)%masks.length; 148 | } 149 | setTimeout(a_pour,300); 150 | }else if (z == 0 || head[0] % 5 != 0){ 151 | a_pour(); 152 | }else{ 153 | requestAnimationFrame(a_pour); 154 | } 155 | }else{ 156 | 157 | ctx.clearRect(0,0,W,W); 158 | ctx.fillStyle="black"; 159 | for (var i = parts.length-1; i >= 0; i--){ 160 | parts[i][0]+=parts[i][2]; 161 | parts[i][1]+=parts[i][3]; 162 | ctx.fillRect(parts[i][0],parts[i][1],1,1); 163 | if (parts[i][1] > W){ 164 | parts.splice(i,1); 165 | } 166 | } 167 | if (parts.length == 0 && idx>=masks.length){ 168 | return; 169 | }else{ 170 | requestAnimationFrame(a_pour); 171 | } 172 | } 173 | } 174 | a_pour(); 175 | return kill; 176 | } 177 | return ` 178 | var masks = ${JSON.stringify(masks)}; 179 | var killLoader = (${main.toString()})(); 180 | ` 181 | } 182 | 183 | 184 | 185 | if (name_eq_main){(async ()=>{ 186 | var src = await module.exports() 187 | // console.log(src) 188 | eval(src); 189 | })();} 190 | 191 | 192 | 193 | -------------------------------------------------------------------------------- /workflow/make_sheet.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | var charset = fs.readFileSync("../data/labels_all.txt").toString().split("\n").filter(x=>x.length) 3 | .map(x=>[x.split("\t")[1],x.split("\t")[0].replace(".png",".svg")]) 4 | .sort().map(x=>[x[1],x[0]]) 5 | 6 | var glyphs = {} 7 | 8 | for (var i = 0; i < charset.length; i++){ 9 | glyphs[charset[i][0]]=fs.readFileSync("../output/stage/"+charset[i][0]).toString().split("")[1].split("")[0] 10 | } 11 | // charset = charset.slice(0,4) 12 | // console.log(glyphs[Object.keys(glyphs)[0]]) 13 | var uw = 64 14 | var px = 12.8 15 | var py = -4 16 | var cols = 30 17 | var rows = Math.ceil(charset.length/cols) 18 | var color_anno = "salmon" 19 | var color_hint = "salmon" 20 | 21 | var svgw = cols*(uw+px*2)+px 22 | var svgh = rows*(uw+py*2)+py 23 | var svgp = 20 24 | var svg = `` 25 | svg += `` 26 | for (var i = 0; i < charset.length; i++){ 27 | var r = i % rows 28 | var c = cols-Math.floor(i/rows)-1 29 | // console.log(r,c) 30 | var hex = " " 31 | var char = " " 32 | if(charset[i][1].length == 1){ 33 | hex = charset[i][1].charCodeAt(0).toString(16).toUpperCase() 34 | char = charset[i][1] 35 | } 36 | svg += `` 37 | svg += `${hex.slice(0,2)}` 38 | svg += `${hex.slice(2)}` 39 | svg += `${char}` 40 | 41 | svg += `` 42 | svg += `` 43 | 44 | svg += `` 45 | svg += `` 46 | 47 | svg += `${glyphs[charset[i][0]]}` 48 | } 49 | svg += "" 50 | fs.writeFileSync("../tmp/sheet.svg",svg) -------------------------------------------------------------------------------- /workflow/relabel.py: -------------------------------------------------------------------------------- 1 | # import cv2 2 | # bads = [x.split("\t")[0] for x in open("../tmp/mislabels.txt",'r').read().split("\n") if len(x)] 3 | 4 | # for b in bads: 5 | # try: 6 | # im = cv2.imread(b) 7 | # cv2.imwrite(b.replace("output/coarse","tmp/relabel"),im) 8 | # except: 9 | # print(b) 10 | 11 | 12 | from glob import glob 13 | 14 | olbl = [x.split("\t") for x in open("../data/labels_lh.txt",'r').read().split("\n") if len(x)] 15 | nlbl = [x.split("\t") for x in open("../tmp/labels.txt",'r').read().split("\n") if len(x)] 16 | 17 | clbl = olbl+nlbl 18 | 19 | rl = [x.split("/")[-1] for x in glob("../tmp/relabel/*.png") if x.split("/")[-1][0] != "-"] 20 | rlbl = [["-"+"-".join(x.split("-")[1:]),x.split("-")[0]] for x in rl] 21 | 22 | rlbl = [x for x in rlbl if x[1] not in [y[1] for y in clbl]] 23 | 24 | dlbl = clbl+rlbl 25 | elbl = [x for x in nlbl+rlbl if x[1] not in [y[1] for y in olbl]] 26 | # print(elbl,len(elbl)) 27 | 28 | 29 | open("../data/labels_hnz.txt",'w').write(("\n".join([x[0]+"\t"+x[1] for x in elbl])).replace("../output/coarse/","")) 30 | 31 | ks = set([x[1] for x in olbl]+[x[1] for x in nlbl]+[x[1] for x in rlbl]) 32 | vs = olbl+nlbl+rlbl 33 | flbl = [] 34 | for k in ks: 35 | for v in vs: 36 | if k == v[1]: 37 | break 38 | flbl.append(v) 39 | # print(flbl,len(flbl)) 40 | 41 | s = "\n".join([x[0]+"\t"+x[1] for x in flbl]) 42 | s = s.replace("../output/coarse/","") 43 | open("../data/labels_all.txt",'w').write(s) 44 | 45 | # import cv2 46 | # cv = cv2 47 | # import numpy as np 48 | # from glob import glob 49 | # files = glob("./nolabel/*.png") 50 | 51 | 52 | # new = [] 53 | # st = set() 54 | # for f in files: 55 | # ch = f.split("-")[-3].split("/")[-1] 56 | # if len(ch) == 0: 57 | # continue 58 | # st.add(ch) 59 | # pth = f.replace(ch,'').replace('nolabel','rend') 60 | # new.append([pth,ch]) 61 | 62 | 63 | # done = [x.split("\t") for x in open("new-new-labels.txt",'r').read().split("\n") if len(x)] 64 | 65 | 66 | # comb = done+new 67 | # collect = {} 68 | # for c in comb: 69 | # if c[1] not in collect: 70 | # collect[c[1]]=[] 71 | # collect[c[1]].append(c[0]) 72 | 73 | # # print(len(collect.keys())) 74 | # for c in collect: 75 | # if len(collect[c]) > 1: 76 | # print(c,len(collect[c])) 77 | # # print(collect) 78 | 79 | 80 | # mouse_x, mouse_y = 0,0 81 | # def get_mouse(event,x,y,flags,param): 82 | # global mouse_x,mouse_y 83 | # mouse_x = x 84 | # mouse_y = y 85 | 86 | # cv2.namedWindow('im') 87 | # cv2.setMouseCallback('im',get_mouse) 88 | 89 | 90 | # goodlabel = done 91 | # mislabel = [] 92 | 93 | # cnt = 0 94 | # for c in collect: 95 | # cnt +=1 96 | # is_done = False; 97 | # for x in collect[c]: 98 | # for y in mislabel+goodlabel: 99 | # if x == y[0]: 100 | # is_done = True 101 | # break 102 | 103 | # if is_done: 104 | # print("done",c) 105 | # continue 106 | # for x in collect[c]: 107 | # if cv.imread(x) is None: 108 | # print("no img",x) 109 | # im = np.hstack([cv.imread(i) for i in collect[c]]) 110 | # c0 = c 111 | # c2 = c 112 | # # if c in sc2tc: 113 | # # c = sc2tc[c] 114 | 115 | # if (len(collect[c]) == 1): 116 | # goodlabel.append((collect[c][0],c)) 117 | # open("new-new-new-labels.txt",'w').write("\n".join(["\t".join(list(x)) for x in goodlabel])) 118 | # continue 119 | 120 | # mlbl= [] 121 | # glbl = [] 122 | # cv2.imshow('im',im) 123 | 124 | # n = 0 125 | 126 | # print(cnt,'/',len(collect.keys()),'【',c,'】') 127 | 128 | 129 | # def calc_n(): 130 | # global n 131 | # n = mouse_x//256 132 | # if (n < 0): 133 | # n = 0 134 | # if (n >= len(collect[c0])): 135 | # n = len(collect[c0])-1 136 | 137 | # while 1: 138 | # draw = im.copy() 139 | 140 | # calc_n() 141 | # # print(glbl,mlbl) 142 | # for i,x in enumerate(collect[c0]): 143 | # for m in mlbl: 144 | # if x == m[0]: 145 | # cv2.rectangle(draw,(i*256,0),(i*256+256,256),(0,0,255),30) 146 | # for m in glbl: 147 | # if x == m[0]: 148 | # cv2.rectangle(draw,(i*256,0),(i*256+256,256),(0,255,0),20) 149 | 150 | # cv2.imshow('im',draw) 151 | # k = cv2.waitKey(0) 152 | # if k == ord('1'): 153 | # calc_n() 154 | # lx = (collect[c0][n],c) 155 | # glbl.append(lx) 156 | # print("goodlabel",len(glbl),lx) 157 | # cv2.imshow('im',draw) 158 | # elif k == ord('2'): 159 | # calc_n() 160 | # lx = (collect[c0][n],c) 161 | # mlbl.append(lx) 162 | # print("mislabel",len(mlbl),lx) 163 | # cv2.imshow('im',draw) 164 | # elif k == ord('3'): 165 | # calc_n() 166 | # c,c2 = c2,c 167 | # print("tradswap",c) 168 | # cv2.imshow('im',draw) 169 | # elif k == ord('4'): 170 | # glbl = [] 171 | # mlbl = [] 172 | # elif k == ord(' '): 173 | # break; 174 | # cv2.imshow('im',draw) 175 | 176 | # for m in mlbl: 177 | # if m not in mislabel: 178 | # mislabel.append(m) 179 | # for m in glbl: 180 | # if m not in goodlabel: 181 | # goodlabel.append(m) 182 | # print(goodlabel) 183 | # open("new-new-new-labels.txt",'w').write("\n".join(["\t".join(list(x)) for x in goodlabel])) 184 | # print(collect) 185 | 186 | -------------------------------------------------------------------------------- /workflow/run_ocr.py: -------------------------------------------------------------------------------- 1 | import uuid 2 | import json 3 | import os 4 | import time 5 | import cv2 6 | cv = cv2 7 | import numpy as np 8 | import sys 9 | 10 | import os 11 | from glob import glob 12 | 13 | bpath="/Users/admin/proj/qiji-font/output/coarse/" 14 | known_problem = [bpath+x for x in open("../data/ocr_crashers.txt",'r').read().split("\n")] 15 | files = glob(bpath+"-H*.png") 16 | # files=known_problem 17 | # known_problem=[] 18 | 19 | donfs = "\n".join([open(x,'r').read() for x in glob("../tmp/ocr_ret*.txt")]) 20 | done = [x.split("\t")[0] for x in donfs.split("\n") if len(x)] 21 | 22 | 23 | os.chdir('/Users/admin/Downloads/darknet-ocr-master') 24 | 25 | import sys 26 | sys.path.append('/Users/admin/Downloads/darknet-ocr-master') 27 | from dnn.main import text_ocr 28 | 29 | 30 | for f in files: 31 | if f in done or f in known_problem: 32 | print(f,"done", file=sys.stderr) 33 | continue 34 | 35 | try: 36 | print(f+"\t",end="") 37 | sys.stdout.flush() 38 | # print(f, file=sys.stderr) 39 | image = cv2.imread(f) 40 | image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) 41 | p = 100 42 | image = 255-cv2.copyMakeBorder( 255-image, p,p,p,p, cv.BORDER_CONSTANT, (0,0,0) ); 43 | # cv2.imshow('',image);cv.waitKey(0) 44 | # print(image,scale,maxScale,TEXT_LINE_SCORE) 45 | data = text_ocr(image,200,300,0.0) 46 | 47 | o = ''.join([x['text'] for x in data]) 48 | 49 | print(o) 50 | print(f+"\t"+o,file=sys.stderr) 51 | sys.stdout.flush() 52 | 53 | except: 54 | print(f,"fail", file=sys.stderr) 55 | -------------------------------------------------------------------------------- /workflow/run_ocr.sh: -------------------------------------------------------------------------------- 1 | python3 run_ocr.py > ../tmp/ocr_ret01.txt 2 | python3 run_ocr.py > ../tmp/ocr_ret02.txt 3 | python3 run_ocr.py > ../tmp/ocr_ret03.txt 4 | python3 run_ocr.py > ../tmp/ocr_ret04.txt 5 | python3 run_ocr.py > ../tmp/ocr_ret05.txt 6 | python3 run_ocr.py > ../tmp/ocr_ret06.txt 7 | python3 run_ocr.py > ../tmp/ocr_ret07.txt 8 | python3 run_ocr.py > ../tmp/ocr_ret08.txt 9 | python3 run_ocr.py > ../tmp/ocr_ret09.txt 10 | 11 | python3 run_ocr.py > ../tmp/ocr_ret10.txt 12 | python3 run_ocr.py > ../tmp/ocr_ret11.txt 13 | python3 run_ocr.py > ../tmp/ocr_ret12.txt 14 | python3 run_ocr.py > ../tmp/ocr_ret13.txt 15 | python3 run_ocr.py > ../tmp/ocr_ret14.txt 16 | python3 run_ocr.py > ../tmp/ocr_ret15.txt 17 | python3 run_ocr.py > ../tmp/ocr_ret16.txt 18 | python3 run_ocr.py > ../tmp/ocr_ret17.txt 19 | python3 run_ocr.py > ../tmp/ocr_ret18.txt 20 | python3 run_ocr.py > ../tmp/ocr_ret19.txt 21 | 22 | python3 run_ocr.py > ../tmp/ocr_ret20.txt 23 | python3 run_ocr.py > ../tmp/ocr_ret21.txt 24 | python3 run_ocr.py > ../tmp/ocr_ret22.txt 25 | python3 run_ocr.py > ../tmp/ocr_ret23.txt 26 | python3 run_ocr.py > ../tmp/ocr_ret24.txt 27 | python3 run_ocr.py > ../tmp/ocr_ret25.txt 28 | python3 run_ocr.py > ../tmp/ocr_ret26.txt 29 | python3 run_ocr.py > ../tmp/ocr_ret27.txt 30 | python3 run_ocr.py > ../tmp/ocr_ret28.txt 31 | python3 run_ocr.py > ../tmp/ocr_ret29.txt 32 | 33 | python3 run_ocr.py > ../tmp/ocr_ret30.txt 34 | python3 run_ocr.py > ../tmp/ocr_ret31.txt 35 | python3 run_ocr.py > ../tmp/ocr_ret32.txt 36 | python3 run_ocr.py > ../tmp/ocr_ret33.txt 37 | python3 run_ocr.py > ../tmp/ocr_ret34.txt 38 | python3 run_ocr.py > ../tmp/ocr_ret35.txt 39 | python3 run_ocr.py > ../tmp/ocr_ret36.txt 40 | python3 run_ocr.py > ../tmp/ocr_ret37.txt 41 | python3 run_ocr.py > ../tmp/ocr_ret38.txt 42 | python3 run_ocr.py > ../tmp/ocr_ret39.txt 43 | 44 | python3 run_ocr.py > ../tmp/ocr_ret40.txt 45 | python3 run_ocr.py > ../tmp/ocr_ret41.txt 46 | python3 run_ocr.py > ../tmp/ocr_ret42.txt 47 | python3 run_ocr.py > ../tmp/ocr_ret43.txt 48 | python3 run_ocr.py > ../tmp/ocr_ret44.txt 49 | python3 run_ocr.py > ../tmp/ocr_ret45.txt 50 | python3 run_ocr.py > ../tmp/ocr_ret46.txt 51 | python3 run_ocr.py > ../tmp/ocr_ret47.txt 52 | python3 run_ocr.py > ../tmp/ocr_ret48.txt 53 | python3 run_ocr.py > ../tmp/ocr_ret49.txt 54 | 55 | python3 run_ocr.py > ../tmp/ocr_ret50.txt 56 | python3 run_ocr.py > ../tmp/ocr_ret51.txt 57 | python3 run_ocr.py > ../tmp/ocr_ret52.txt 58 | python3 run_ocr.py > ../tmp/ocr_ret53.txt 59 | python3 run_ocr.py > ../tmp/ocr_ret54.txt 60 | python3 run_ocr.py > ../tmp/ocr_ret55.txt 61 | python3 run_ocr.py > ../tmp/ocr_ret56.txt 62 | python3 run_ocr.py > ../tmp/ocr_ret57.txt 63 | python3 run_ocr.py > ../tmp/ocr_ret58.txt 64 | python3 run_ocr.py > ../tmp/ocr_ret59.txt 65 | 66 | python3 run_ocr.py > ../tmp/ocr_ret60.txt 67 | python3 run_ocr.py > ../tmp/ocr_ret61.txt 68 | python3 run_ocr.py > ../tmp/ocr_ret62.txt 69 | python3 run_ocr.py > ../tmp/ocr_ret63.txt 70 | python3 run_ocr.py > ../tmp/ocr_ret64.txt 71 | python3 run_ocr.py > ../tmp/ocr_ret65.txt 72 | python3 run_ocr.py > ../tmp/ocr_ret66.txt 73 | python3 run_ocr.py > ../tmp/ocr_ret67.txt 74 | python3 run_ocr.py > ../tmp/ocr_ret68.txt 75 | python3 run_ocr.py > ../tmp/ocr_ret69.txt -------------------------------------------------------------------------------- /workflow/run_trace.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | 4 | # lbls = {x.split("\t")[1]:x.split("\t")[0] for x in open("../data/labels_all.txt").read().split("\n") if len(x)} 5 | # care = [x.split("\t") for x in open("../data/bigger.txt").read().split("\n")] 6 | 7 | # for m in care: 8 | # cmd = "/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/"+lbls[m[0]][:-4]+".bmp" 9 | # print(cmd) 10 | # os.system(cmd) 11 | 12 | 13 | # os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-1*.bmp") 14 | # os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-2*.bmp") 15 | # os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-3*.bmp") 16 | # os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-4*.bmp") 17 | # os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-5*.bmp") 18 | # os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-6*.bmp") 19 | # os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-7*.bmp") 20 | # os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-8*.bmp") 21 | # os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-9*.bmp") 22 | # os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-H*.bmp") 23 | 24 | # os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-H13-255_3941_238_197.bmp") 25 | 26 | 27 | os.system("/Users/admin/Downloads/potrace-1.16.mac-x86_64/potrace --svg ../output/fine/-H111-1427_2332_233_191.bmp") 28 | 29 | import stage_svg 30 | 31 | print("done") -------------------------------------------------------------------------------- /workflow/split_pdf.workflow/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | split_pdf 7 | 8 | 9 | -------------------------------------------------------------------------------- /workflow/split_pdf.workflow/Contents/QuickLook/Preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LingDong-/qiji-font/f7971a4345b1101796763092425ba10b8f5ad95e/workflow/split_pdf.workflow/Contents/QuickLook/Preview.png -------------------------------------------------------------------------------- /workflow/stage_svg.py: -------------------------------------------------------------------------------- 1 | from glob import glob 2 | import re 3 | import json 4 | 5 | tweak = json.loads(open("../data/svg_tweak.json",'r').read()) 6 | 7 | n = 0 8 | t = 0 9 | for f in glob("../output/fine/*.svg"): 10 | bname = f.split("/")[-1] 11 | try: 12 | t += tweak[bname]['scale'] 13 | except: 14 | t += 1 15 | n+=1 16 | 17 | avgsc = int((1/(t/n))*10000)/10000 18 | 19 | 20 | for f in glob("../output/fine/*.svg"): 21 | bname = f.split("/")[-1] 22 | try: 23 | t = tweak[bname] 24 | except: 25 | t = {'x':0,'y':0,'scale':1,'rotate':0} 26 | gstr = f'' 27 | 28 | s = open(f,'r').read() 29 | # s = s.replace('width="512.000000pt" height="512.000000pt" viewBox="0 0 512.000000 512.000000"\ 30 | # \n preserveAspectRatio="xMidYMid meet"', 31 | # 'width="100" height="100" viewBox="-256 -256 1024 1024"') 32 | 33 | s = s.replace('width="512.000000pt" height="512.000000pt" viewBox', 34 | 'width="100" height="100" viewBox').replace("", 35 | "(modified)"+gstr).replace("","") 36 | 37 | # s = re.sub(r"(\d+?)([ \nz])",r"0.\1\2",s) 38 | open(f.replace("fine","stage"),'w').write(s) 39 | 40 | 41 | print("staged") -------------------------------------------------------------------------------- /workflow/vis.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import cv2 3 | cv = cv2 4 | import numpy as np 5 | 6 | labels = [x.split("\t") for x in open("../data/labels.txt",'r').read().split("\n")] 7 | labels.sort(key=lambda x:x[1]) 8 | 9 | mapper = {x[1]:x[0] for x in labels} 10 | 11 | # im = np.vstack([np.hstack([cv2.resize(cv.imread(x[0].replace('rend','xrend')),(64,64),cv2.INTER_AREA) for x in labels[i:i+50]]) for i in range(0,2500,50)]) 12 | # cv2.imshow('',im) 13 | # cv2.waitKey(0) 14 | 15 | txt = "秋風吹地百草乾華容碧影生晚寒我當二十不得意一心愁謝如枯蘭衣如飛鶉馬如狗臨歧擊劍生銅吼旗亭下馬解秋衣請貰宜陽一壺酒壺中喚天雲不開白晝萬里閑淒迷主人勸我養心骨莫受俗物相填豗" 16 | txt += "越羅衫袂迎春風玉刻麒麟腰帶紅樓頭曲宴仙人語帳底吹笙香霧濃人間酒暖春茫茫花枝入簾白日長飛窗復道傳籌飲十夜銅盤膩燭黃禿衿小袖調鸚鵡紫繡麻鞋踏哮虎斫桂燒金待曉筵白鹿青蘇夜半煮桐英永巷騎新馬內屋深屏生色畫開門爛用水衡錢卷起黃河向身瀉皇天厄運猶曾裂秦宮一生花底活鸞篦奪得不還人醉睡氍毹滿堂月" 17 | txt += "北虜膠堪折秋沙亂曉鼙髯鬍頻犯塞驕氣似橫霓灞水樓船渡營門細柳開將軍馳白馬豪彥騁雄材箭射欃槍落旗懸日月低榆稀山易見甲重馬頻嘶天遠星光沒沙平草葉齊風吹雲路火雪汙玉關泥屢斷呼韓頸曾然董卓臍太常猶舊寵光祿是新隮寳玦麒麟起銀壺狒狖啼桃花連馬發綵絮撲鞍來呵臂懸金斗當脣注玉罍清蘇和碎蟻紫膩卷浮杯虎鞹先蒙馬魚腸且斷犀䟃𧽼西旅狗蹙額北方奚守帳然香暮看鷹永夜棲黃龍就別鏡青塚念陽臺周處長橋役侯調短弄哀錢塘階鳳羽正室擘鸞釵內子攀琪樹羌兒奏落梅今朝擎劍去何日刺蛟廻" 18 | 19 | for www in range(1): 20 | 21 | w = 128 22 | ww = 100 23 | W = ww*20 24 | 25 | c = 0 26 | r = 0 27 | im = np.zeros((W,W*2),np.float32) 28 | for p in txt: 29 | if p not in mapper: 30 | print(p) 31 | continue 32 | # _,iid,bstr = mapper[p].split("/")[-1].split(".")[0].split("-") 33 | # x,y,_w,_h=[int(a) for a in bstr.split("_")] 34 | # a = cv2.imread("pages/李长吉歌诗.4卷.外诗集1卷.李贺撰.刘辰翁评.明末凌濛初刊闵氏朱墨套印本 "+iid+".png",0)[y:y+_h,x:x+_w] 35 | 36 | 37 | a = 1-cv2.imread("../output/fine/"+mapper[p].replace(".png",".bmp"),0).astype(np.float32)/255 38 | 39 | # a = cv2.dilate(a,np.array([[0,0,0,0,0],[0,1,1,1,0],[1,1,1,1,1],[0,1,1,1,0],[0,0,0,0,0]],np.uint8),iterations = 5) 40 | # a = cv2.dilate(a,np.array([[0,0,1,0,0],[0,1,1,1,0],[0,1,1,1,0],[0,1,1,1,0],[0,0,1,0,0]],np.uint8),iterations = 1) 41 | # a = cv2.dilate(a,np.array([[0,1,0],[0,1,0],[0,1,0]],np.uint8),iterations = 1) 42 | # a = cv2.erode(a,cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3)),iterations = 5) 43 | # a = cv2.erode(a,np.array([[0,0,0,0,0],[0,1,1,1,0],[1,1,1,1,1],[0,1,1,1,0],[0,0,0,0,0]],np.uint8),iterations = 2) 44 | 45 | a = cv2.resize(a,(w,w),interpolation = cv2.INTER_AREA) 46 | 47 | # cv2.imshow('',a); 48 | # cv2.waitKey(0) 49 | 50 | # print(p,a.shape) 51 | try: 52 | im[r*ww:r*ww+w,int(im.shape[1]-c*w-w):int(im.shape[1]-c*w)]+=a 53 | except: 54 | pass 55 | # cv2.imshow('',im) 56 | # cv2.waitKey(0) 57 | r += 1 58 | if (r+1)*ww >= W: 59 | r = 0 60 | c += 1.3 61 | try: 62 | pass 63 | # im[:,im.shape[1]-int(c*w)+10:im.shape[1]-int(c*w)+12]=1 64 | except: 65 | pass 66 | if c*w >= im.shape[1]: 67 | break 68 | 69 | im = (255*im).astype(np.uint8) 70 | 71 | # im = cv2.dilate(im,np.array([[0,0,0,0,0],[0,1,1,1,0],[1,1,1,1,1],[0,1,1,1,0],[0,0,0,0,0]],np.uint8),iterations = 1) 72 | # im = cv2.dilate(im,np.array([[0,0,1,0,0],[0,1,1,1,0],[0,1,1,1,0],[0,1,1,1,0],[0,0,1,0,0]],np.uint8),iterations = 1) 73 | # im = cv2.dilate(im,np.array([[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1],[0,0,0,0,0],[0,0,0,0,0]],np.uint8),iterations = 1) 74 | 75 | 76 | cv2.imshow('',255-im) 77 | cv2.waitKey(0) 78 | 79 | cv2.imwrite("tmp/vis.png",255-im) 80 | 81 | 82 | #-72-5166_952_222_207 -------------------------------------------------------------------------------- /workflow/woff2convert.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs'); 2 | var ttf2woff2 = require('ttf2woff2'); 3 | var input; 4 | 5 | input = fs.readFileSync('../dist/qiji.ttf'); 6 | fs.writeFileSync('../dist/qiji.woff2', ttf2woff2(input)); 7 | console.log("√") 8 | 9 | input = fs.readFileSync('../dist/qiji-fallback.ttf'); 10 | fs.writeFileSync('../dist/qiji-fallback.woff2', ttf2woff2(input)); 11 | console.log("√") 12 | 13 | 14 | input = fs.readFileSync('../dist/qiji-combo.ttf'); 15 | fs.writeFileSync('../dist/qiji-combo.woff2', ttf2woff2(input)); 16 | console.log("√") --------------------------------------------------------------------------------