Qiji-font (齊伋體) is:
📢 聲明:敝字體近日頗見流傳於網絡,然皆訛作“‘凌’东齐伋体”。鄙人名令東,字體名齊伋;強欲冠後以前者,亦以“令東齊伋體”為宜,望周知。🤦♂️
| Unique Glyphs | Covered Characters | Books Scanned | |---|---|---| | 4569 | 5916* | 李長吉歌詩 / 淮南鴻烈解 |
* Simplified forms fall back to traditional forms, more common traditional variants fall back to less common variant forms.
Step I: Download high resolution PDFs (from shuge.org) and split pages into images.
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).
Step III: Generate a low-poly mask for each character on the grid, and save the thumbnails (using OpenCV). 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.)
Step IV: Feed each thumbnail one by one into neural-net Chinese OCR to recognize the characters (currently using chineseocr/darknet-ocr, low detection rate, mediocre accuracy, very slow on CPU, looking for better alternatives).
Step V: Manually judge output of OCR: pick the best-looking instance of a given character, and flag incorrectly recognized characters.
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.
Step VII: Raster-to-vector tracing software potrace is used to convert the raster rendrings into SVG's. FontForge's python library is used to generate the final font file. Done!
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.
Requirements:
pip3 install opencv-python
)brew install fontforge
)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 :)
Sheet of all unique glyphs sorted by unicode entry point, click to enlarge. (this is lossy JPEG, for full PNG, check here, for SVG, run node workflow/make_sheet.js
)
Removes flat. It's no longer used after updating ancestor dependency release-it. These dependencies need to be updated together.
Removes flat
Updates release-it
from 12.4.3 to 15.6.0
Sourced from release-it's releases.
Release 15.6.0
- Fix specs for #966 (39a318b)
- Move space (quickfix) (cfae247)
- fix: use spec formdata (#958) (c21e6b6)
- Fix
npm.isCollaborator()
on npm v9 (#966) (3bd405a)- feat(git): added option to use --exclude option on git describe (#963) (2b484bf)
Release 15.5.1
- Update dependencies (aa89cbd)
- Prompt for npm OTP in --only-version (fixes #948) (ff626d1)
- Remove unused export/function (331b0de)
- Add knip + config (ee99f63)
Release 15.5.0
- Update dependencies (5d035be)
- Add
npm.versionArgs
option (5efc57f)Release 15.4.3
- Update dependencies (67da5d9)
- Update got to 12.5.1 (#943) (a9c8c34)
Release 15.4.2
- Update dependencies (97095d5)
- Defer dry run bail out in asset globbing (to include the warning in dry runs) (bf6ccc8)
- Housekeeping for Actions (feff2eb)
Release 15.4.1
- Handle file paths and dots in git urls (055a4ff)
- Update dependencies (including git-url-parse) (1851650)
Release 15.4.0
- Add
npm.name
to config.context and extend context fortagName
(closes #933) (627763f)Release 15.3.0
- Add new features to docs (e2101ed)
- Add tests for branchName in tag name (a6f6eff)
- Update dependencies (ae9ccb9)
- add branchName for template (#897) (9aa9a5d)
- add new --changelog option (#912) (5798a7a)
Release 15.2.0
- Update dependencies (b78eb1e)
- Add package.json to exports (acc66f7)
- Fixes loading scoped plugins to ensure name is preserved (#926) (145fc71)
- Add workaround for Windows by removing drive letter from git url (#924) (ce3a726)
- Enable manual triggers and disable tag triggers in test pipeline (b830876)
- Fix plugin links (b7cd505)
Release 15.1.4
- Migrate to git-url-parse v12 (41aad00)
... (truncated)
Sourced from release-it's changelog.
Changelog
This document lists breaking changes for each major release.
See the GitHub Releases page for detailed changelogs: https://github.com/release-it/release-it/releases
v15 (2022-04-30)
- Removed support for Node.js v10 and v12.
- Removed support for GitLab v12.4 and lower.
- Removed anonymous metrics (and the option to disable it).
- Programmatic usage and plugins only through ES Module syntax (
import
)Use release-it v14 in legacy environments.
v14 (2020-09-03)
- Removed
global
property from plugins. Usethis.config[key]
instead.- Removed deprecated
npm.access
option. Set this inpackage.json
instead.v13 (2020-03-07)
- Dropped support for Node v8
- Dropped support for GitLab v11.6 and lower.
- Deprecated
scripts
are removed (in favor of hooks).- Removed deprecated
--non-interactive
(-n
) argument. Use--ci
instead.- Removed old
%s
and[REV_RANGE]
syntax in command substitutions. Use${version}
and${latestTag}
instead.v12 (2019-05-03)
- The
--follow-tags
argument forgit push
has been moved to the default configuration. This is only a breaking change ifgit.pushArgs
was not empty (it was empty by default).v11
- The custom
conventional-changelog
increment (e.g."increment": "conventional:angular"
) with additional script configuration is replaced with a plugin. Please see conventional changelog how to use this plugin.- The
pkgFiles
option has been removed. If there's a need to bump other files than whatnpm version
bumps, it should be (part of) a plugin.- By default, the latest version was derived from the latest Git tag. From v11, if the repo has a
package.json
then thatversion
is used instead. Theuse
option has been removed. Also see latest version.scripts.changelog
has been moved togit.changelog
v10
- Dropped support for Node v6
... (truncated)
922827d
Release 15.6.039a318b
Fix specs for #966cfae247
Move space (quickfix)c21e6b6
fix: use spec formdata (#958)3bd405a
Fix npm.isCollaborator()
on npm v9 (#966)2b484bf
feat(git): added option to use --exclude option on git describe (#963)5c02079
Release 15.5.1aa89cbd
Update dependenciesff626d1
Prompt for npm OTP in --only-version (fixes #948)331b0de
Remove unused export/functionDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps qs from 6.5.2 to 6.5.3.
Sourced from qs's changelog.
6.5.3
- [Fix]
parse
: ignore__proto__
keys (#428)- [Fix]
utils.merge
: avoid a crash with a null target and a truthy non-array source- [Fix] correctly parse nested arrays
- [Fix]
stringify
: fix a crash withstrictNullHandling
and a customfilter
/serializeDate
(#279)- [Fix]
utils
:merge
: fix crash whensource
is a truthy primitive & no options are provided- [Fix] when
parseArrays
is false, properly handle keys ending in[]
- [Fix] fix for an impossible situation: when the formatter is called with a non-string value
- [Fix]
utils.merge
: avoid a crash with a null target and an array source- [Refactor]
utils
: reduce observable [[Get]]s- [Refactor] use cached
Array.isArray
- [Refactor]
stringify
: Avoid arr = arr.concat(...), push to the existing instance (#269)- [Refactor]
parse
: only need to reassign the var once- [Robustness]
stringify
: avoid relying on a globalundefined
(#427)- [readme] remove travis badge; add github actions/codecov badges; update URLs
- [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
- [Docs] Clarify the need for "arrayLimit" option
- [meta] fix README.md (#399)
- [meta] add FUNDING.yml
- [actions] backport actions from main
- [Tests] always use
String(x)
overx.toString()
- [Tests] remove nonexistent tape option
- [Dev Deps] backport from main
298bfa5
v6.5.3ed0f5dc
[Fix] parse
: ignore __proto__
keys (#428)691e739
[Robustness] stringify
: avoid relying on a global undefined
(#427)1072d57
[readme] remove travis badge; add github actions/codecov badges; update URLs12ac1c4
[meta] fix README.md (#399)0338716
[actions] backport actions from main5639c20
Clean up license text so it’s properly detected as BSD-3-Clause51b8a0b
add FUNDING.yml45f6759
[Fix] fix for an impossible situation: when the formatter is called with a no...f814a7f
[Dev Deps] backport from mainDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
多出:珍、詠、振、慮、
缺失:端、周、贱、睦、弊、組、魄、
错字:己、
存疑:異、
己 已 巳 是同一个样子 繁体郁 不清楚
Bumps ajv from 6.11.0 to 6.12.6.
Sourced from ajv's releases.
v6.12.6
Fix performance issue of "url" format.
v6.12.5
Fix uri scheme validation (
@ChALkeR
). Fix boolean schemas with strictKeywords option (#1270)v6.12.4
Fix: coercion of one-item arrays to scalar that should fail validation (failing example).
v6.12.3
Pass schema object to processCode function Option for strictNumbers (
@issacgerges
, #1128) Fixed vulnerability related to untrusted schemas (CVE-2020-15366)v6.12.2
Removed post-install script
v6.12.1
Docs and dependency updates
v6.12.0
Improved hostname validation (
@sambauers
, #1143) Optionkeywords
to add custom keywords (@franciscomorais
, #1137) Types fixes (@boenrobot
,@MattiAstedrone
) Docs:
- error logging example (
@RadiationSickness
)- TypeScript usage notes (
@thetric
)
fe59143
6.12.6d580d3e
Merge pull request #1298 from ajv-validator/fix-urlfd36389
fix: regular expression for "url" format490e34c
docs: link to v7-beta branch9cd93a1
docs: note about v7 in readme877d286
Merge pull request #1262 from b4h0-c4t/refactor-opt-object-typef1c8e45
6.12.5764035e
Merge branch 'ChALkeR-chalker/fix-comma'3798160
Merge branch 'chalker/fix-comma' of git://github.com/ChALkeR/ajv into ChALkeR...a3c7eba
Merge branch 'refactor-opt-object-type' of github.com:b4h0-c4t/ajv into refac...Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps node-fetch from 2.6.0 to 2.6.7.
Sourced from node-fetch's releases.
v2.6.7
Security patch release
Recommended to upgrade, to not leak sensitive cookie and authentication header information to 3th party host while a redirect occurred
What's Changed
- fix: don't forward secure headers to 3th party by
@jimmywarting
in node-fetch/node-fetch#1453Full Changelog: https://github.com/node-fetch/node-fetch/compare/v2.6.6...v2.6.7
v2.6.6
What's Changed
- fix(URL): prefer built in URL version when available and fallback to whatwg by
@jimmywarting
in node-fetch/node-fetch#1352Full Changelog: https://github.com/node-fetch/node-fetch/compare/v2.6.5...v2.6.6
v2.6.2
fixed main path in package.json
v2.6.1
This is an important security release. It is strongly recommended to update as soon as possible.
See CHANGELOG for details.
Sourced from node-fetch's changelog.
Changelog
All notable changes will be recorded here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
What's Changed
- core: update fetch-blob by
@jimmywarting
in node-fetch/node-fetch#1371- docs: Fix typo around sending a file by
@jimmywarting
in node-fetch/node-fetch#1381- core: (http.request): Cast URL to string before sending it to NodeJS core by
@jimmywarting
in node-fetch/node-fetch#1378- core: handle errors from the request body stream by
@mdmitry01
in node-fetch/node-fetch#1392- core: Better handle wrong redirect header in a response by
@tasinet
in node-fetch/node-fetch#1387- core: Don't use buffer to make a blob by
@jimmywarting
in node-fetch/node-fetch#1402- docs: update readme for TS
@types/node-fetch
by@adamellsworth
in node-fetch/node-fetch#1405- core: Fix logical operator priority to disallow GET/HEAD with non-empty body by
@maxshirshin
in node-fetch/node-fetch#1369- core: Don't use global buffer by
@jimmywarting
in node-fetch/node-fetch#1422- ci: fix main branch by
@dnalborczyk
in node-fetch/node-fetch#1429- core: use more node: protocol imports by
@dnalborczyk
in node-fetch/node-fetch#1428- core: Warn when using data by
@jimmywarting
in node-fetch/node-fetch#1421- docs: Create SECURITY.md by
@JamieSlome
in node-fetch/node-fetch#1445- core: don't forward secure headers to 3th party by
@jimmywarting
in node-fetch/node-fetch#1449New Contributors
@mdmitry01
made their first contribution in node-fetch/node-fetch#1392@tasinet
made their first contribution in node-fetch/node-fetch#1387@adamellsworth
made their first contribution in node-fetch/node-fetch#1405@maxshirshin
made their first contribution in node-fetch/node-fetch#1369@JamieSlome
made their first contribution in node-fetch/node-fetch#1445Full Changelog: https://github.com/node-fetch/node-fetch/compare/v3.1.0...v3.1.2
3.1.0
What's Changed
- fix(Body): Discourage form-data and buffer() by
@jimmywarting
in node-fetch/node-fetch#1212- fix: Pass url string to http.request by
@serverwentdown
in node-fetch/node-fetch#1268- Fix octocat image link by
@lakuapik
in node-fetch/node-fetch#1281- fix(Body.body): Normalize
Body.body
into anode:stream
by@jimmywarting
in node-fetch/node-fetch#924- docs(Headers): Add default Host request header to README.md file by
@robertoaceves
in node-fetch/node-fetch#1316- Update CHANGELOG.md by
@jimmywarting
in node-fetch/node-fetch#1292- Add highWaterMark to cloned properties by
@davesidious
in node-fetch/node-fetch#1162- Update README.md to fix HTTPResponseError by
@thedanfernandez
in node-fetch/node-fetch#1135- docs: switch
url
toURL
by@dhritzkiv
in node-fetch/node-fetch#1318- fix(types): declare buffer() deprecated by
@dnalborczyk
in node-fetch/node-fetch#1345- chore: fix lint by
@dnalborczyk
in node-fetch/node-fetch#1348- refactor: use node: prefix for imports by
@dnalborczyk
in node-fetch/node-fetch#1346- Bump data-uri-to-buffer from 3.0.1 to 4.0.0 by
@dependabot
in node-fetch/node-fetch#1319- Bump mocha from 8.4.0 to 9.1.3 by
@dependabot
in node-fetch/node-fetch#1339- Referrer and Referrer Policy by
@tekwiz
in node-fetch/node-fetch#1057- Add typing for Response.redirect(url, status) by
@c-w
in node-fetch/node-fetch#1169
... (truncated)
1ef4b56
backport of #1449 (#1453)8fe5c4e
2.x: Specify encoding as an optional peer dependency in package.json (#1310)f56b0c6
fix(URL): prefer built in URL version when available and fallback to whatwg (...b5417ae
fix: import whatwg-url in a way compatible with ESM Node (#1303)18193c5
fix v2.6.3 that did not sending query params (#1301)ace7536
fix: properly encode url with unicode characters (#1291)152214c
Fix(package.json): Corrected main file path in package.json (#1274)b5e2e41
update version number2358a6c
Honor the size
option after following a redirect and revert data uri support8c197f8
docs: Fix typos and grammatical errors in README.md (#686)This version was pushed to npm by endless, a new releaser for node-fetch since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Fixed wrong mappings and added variant mappings suggested by @Hulenkius and @Lottin0113 (Thanks!!), see below:
字 | 宇 𠾱 | 替 霏 | 霑 刊 | 可 剌 | 刺 勑 | 𤍂 卬 | 卭 啓 | 啟 啟 | 啓 怂 | 怱 斡 | 榦
font typography chinese woodcutting classical-chinese typeface computer-vision