chore: Halkyon Learn moves into apps/learn

Its server, client, app and curator, and the tools that write its
assets (maps, Anki fixtures, icons), as they are; paths are fixed in
the commits that follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-19 20:08:06 +02:00
commit 649499be23
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
40 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,45 @@
import 'dart:convert';
import 'package:halkyon_learn_curator/src/sources/alphabets.dart';
import 'package:test/test.dart';
void main() {
test('the Greek alphabet in its order, each letter with its capital, '
'names, transliteration and sound', () {
final [header, ...letters] = [
for (final line in greekAlphabet())
jsonDecode(line) as Map<String, Object?>,
];
expect(header['source'], 'greek-alphabet');
expect(header['kind'], 'characters');
expect(header['language'], 'el');
expect(letters, hasLength(24));
expect(letters.first['headword'], 'Α α');
final sigma = letters.singleWhere((letter) => letter['id'] == 'σ');
expect(sigma['headword'], 'Σ σ ς');
expect(sigma['keys'], containsAll(['ς', 'σίγμα', 'sigma', 's']));
expect(letters[1]['entry'], {
'romaji': 'v',
'script': 'greek',
'name': 'βήτα',
'englishName': 'beta',
'sound': 'v',
});
// Found by a name typed without its accent.
expect(letters.last['keys'], contains('ωμεγα'));
});
test('the Hangul letters in the order schools teach them, found by sound '
'and name', () {
final letters = hangulEntries();
expect(letters, hasLength(40));
expect(letters.first.headword, 'ㄱ');
expect(letters.first.keys, containsAll(['ㄱ', '기역', 'g', 'k']));
// ㅇ is silent opening a syllable: no key for its sound there.
final ieung = letters.singleWhere((letter) => letter.id == 'ㅇ');
expect(ieung.keys, ['ㅇ', '이응', 'ng']);
expect(letters.last.headword, 'ㅢ');
});
}

View file

@ -0,0 +1,148 @@
import 'dart:convert';
import 'dart:io';
import 'package:halkyon_learn_curator/src/sources/cedict.dart';
import 'package:test/test.dart';
void main() {
late String sample;
late HskLevels hsk;
setUpAll(() async {
sample = await File('test/fixtures/cedict-sample.txt').readAsString();
hsk = await readHskLevels(File('data/hsk/syllabus2025_words.tsv'));
});
List<Map<String, Object?>> linesOf({required bool traditional}) => [
for (final line in cedictDictionary(
sample,
traditional: traditional,
hsk: hsk,
))
jsonDecode(line) as Map<String, Object?>,
];
Map<String, Object?> entryOf(String id, {bool traditional = false}) =>
linesOf(traditional: traditional)
.skip(1)
.singleWhere((line) => line['id'] == id);
test('a file in simplified characters and one in traditional ones, each '
'a dictionary of its own', () {
final simplified = linesOf(traditional: false).first;
expect(simplified['source'], 'cc-cedict-hans');
expect(simplified['language'], 'zh-Hans');
expect(simplified['glossLanguage'], 'en');
expect(simplified['sourceVersion'], '2026-10-13');
expect(
[
for (final credit in simplified['credits']! as List)
(credit as Map)['name'],
],
['CC-CEDICT', 'HSK 3.0 vocabulary (examination syllabus, 2025)'],
);
final traditional = linesOf(traditional: true).first;
expect(traditional['source'], 'cc-cedict-hant');
expect(traditional['language'], 'zh-Hant');
expect(cedictFileName(traditional: true), 'cc-cedict-hant-en.jsonl.gz');
});
test('a word: its characters in either script, its pinyin with tone '
'marks, found typed without tones, in text by its characters', () {
final xuexi = entryOf('學習 学习 [xue2 xi2]');
expect(xuexi['headword'], '学习');
expect(xuexi['reading'], 'xué xí');
expect(
(xuexi['keys']! as List).cast<String>(),
containsAll([
'学习',
'學習',
'xuexi',
'xuéxí',
'xue2xi2',
'to learn',
'learn',
'study',
]),
);
expect(xuexi['textKeys'], ['学习', '學習']);
final entry = xuexi['entry']! as Map;
expect(entry['forms'], [
{'text': '學習'},
]);
expect(entry['senses'], [
{
'glosses': ['to learn', 'to study'],
},
]);
expect(entryOf('學習 学习 [xue2 xi2]', traditional: true)['headword'], '學習');
});
test('HSK levels go to the entry read as the syllabus reads the word: 的 '
'de, not dì; 书 shū, not the Book of Documents, Shū', () {
expect(entryOf('的 的 [de5]')['labels'], contains('hsk:1'));
expect(entryOf('的 的 [di4]')['labels'], isNot(contains('hsk:1')));
// Read with its tones: 说 shuō, not shuì.
expect(entryOf('說 说 [shuo1]')['labels'], contains('hsk:1'));
expect(entryOf('說 说 [shui4]')['labels'], isEmpty);
expect(entryOf('書 书 [shu1]')['labels'], contains('hsk:1'));
expect(entryOf('書 书 [Shu1]')['labels'], isEmpty);
expect(entryOf('中國 中国 [Zhong1 guo2]')['labels'], contains('hsk:1'));
expect(entryOf('銀行 银行 [yin2 hang2]')['labels'], contains('hsk:3'));
// HSK 1 before HSK 3, both before words of no level.
expect(
entryOf('的 的 [de5]')['rank']! as int,
lessThan(entryOf('銀行 银行 [yin2 hang2]')['rank']! as int),
);
expect(
entryOf('銀行 银行 [yin2 hang2]')['rank']! as int,
lessThan(entryOf('的 的 [di4]')['rank']! as int),
);
});
test('an entry that is only a variant of another is no entry, but finds '
'that one', () {
final ids = [
for (final line in linesOf(traditional: false).skip(1)) line['id'],
];
expect(ids, isNot(contains('咊 和 [he2]')));
expect(
(entryOf('和 和 [he2]')['textKeys']! as List).cast<String>(),
contains('咊'),
);
});
test('measure words are a remark beside the meanings, pinyin marked', () {
final book = entryOf('書 书 [shu1]')['entry']! as Map;
expect(book['classifiers'], ['本 běn', '冊|册 cè', '部 bù']);
expect(
[
for (final sense in book['senses']! as List)
...(sense as Map)['glosses']! as List,
],
['book', 'letter', 'document', 'to write'],
);
});
group('pinyin', () {
test('takes its tone marks where they belong', () {
expect(pinyinWithToneMarks('xue2 xi2'), 'xué xí');
expect(pinyinWithToneMarks('Zhong1 guo2'), 'Zhōng guó');
expect(pinyinWithToneMarks('nu:3 er2'), 'nǚ ér');
expect(pinyinWithToneMarks('lu:e4'), 'lüè');
expect(
pinyinWithToneMarks('shuo1 gui4 liu2 xiong2'),
'shuō guì liú xióng',
);
expect(pinyinWithToneMarks('dou1 le5 r5'), 'dōu le r');
expect(pinyinWithToneMarks('A A zhi4'), 'A A zhì');
});
test('is typed without its tones', () {
expect(tonelessPinyin('xué xí'), 'xuexi');
expect(tonelessPinyin('nǚ’ér'), 'nuer');
expect(tonelessPinyin('yìsī-bùgǒu'), 'yisibugou');
expect(tonelessPinyin('nu:3 er2'), 'nuer');
});
});
}

View file

@ -0,0 +1,80 @@
# Test data
`jmdict-eng-sample.json` holds six entries of JMdict 3.6.2 (2026-10-05) as
jmdict-simplified writes it (<https://github.com/scriptin/jmdict-simplified>):
JMdict is © the Electronic Dictionary Research and Development Group, used under
its licence, CC BY-SA 4.0 (<https://www.edrdg.org/edrdg/licence.html>).
`jlpt/` holds a few rows of the JLPT lists of yomitan-jlpt-vocab
(<https://github.com/stephenmk/yomitan-jlpt-vocab>), CC BY-SA 4.0, from Jonathan
Waller's lists (<http://www.tanos.co.uk/jlpt/>), CC BY; one row without an id is
made up.
`kanjidic2-sample.xml` holds five characters of KANJIDIC2 (database version
2026-282) with its header and a shortened DTD: KANJIDIC2 is © the Electronic
Dictionary Research and Development Group, used under its licence, CC BY-SA 4.0
(<https://www.edrdg.org/edrdg/licence.html>).
`kanji-data-sample.json` holds four entries of kanji-data's `kanji.json`
(<https://github.com/davidluzgouveia/kanji-data>), cut to their numbers, from
KANJIDIC2 and from Jonathan Waller's JLPT levels (<http://www.tanos.co.uk/jlpt/>),
CC BY.
`kanjivg-sample.xml` holds four characters of KanjiVG (the release of
2026-07-14) with its notice, among them 橅, whose entry names itself 機:
KanjiVG is © Ulrich Apel, CC BY-SA 3.0 (<https://kanjivg.tagaini.net>).
`jmdict-e-examp-sample.xml` holds five entries of EDRDG's `JMdict_e_examp.gz`
of 2026-10-09 (JMdict with Tatoeba's sentences, CC BY 2.0 FR) and the
declarations of the entities they use: JMdict is © the Electronic Dictionary
Research and Development Group, used under its licence, CC BY-SA 4.0
(<https://www.edrdg.org/edrdg/licence.html>).
`wiktionary-sample.jsonl` holds 31 lines of kaikki.org's Wiktextract data of the
English Wiktionary (the dump of 2026-10-03, read per word from kaikki.org): the
German Haus, Häuser, Häusern, essen, aß, gegessen, Straße and im, the Greek σπίτι,
σπιτιού and γράφω, the English house, houses, go and went, the French maison,
the Korean 먹다, 집 and 학생, and the Korean entry of the Han character 水 (its readings,
물 수), each shortened to the fields the curator reads (no categories,
etymologies or related words; at most six senses, two examples, 40 forms, two
sounds, and 14 translations, those into German and Greek). Wiktionary's text is
by its contributors, CC BY-SA 4.0 (<https://en.wiktionary.org/wiki/Wiktionary:Copyrights>);
the extraction is Tatu Ylonen's Wiktextract (<https://kaikki.org>).
`cedict-sample.txt` holds CC-CEDICT's header and 23 of its lines (MDBG's file of
2026-10-13): 中国, 了, 女儿, 学习, 书, 熊猫, 略, 的, 说, 银行, 和 and 咊, an old
variant of 和, with their readings. CC-CEDICT is by MDBG and its contributors, CC BY-SA 4.0
(<https://www.mdbg.net/chinese/dictionary?page=cc-cedict>).
`tatoeba-*.tsv` hold a few lines of Tatoeba's exports of 2026-10-10
(<https://downloads.tatoeba.org/exports/per_language/>): German, Chinese and
Korean sentences using Haus, aß, Straße, 学习, 집에서 and 학생이 (and one of each
without an English translation), the links to their English translations, and
those translations. The sentences are by Tatoeba's contributors, CC BY 2.0 FR
(<https://tatoeba.org/en/terms_of_use>).
`unihan-sample.txt` holds the lines of Unihan 18.0.0 (2026-07-31,
<https://www.unicode.org/Public/UCD/latest/ucd/Unihan.zip>) the curator reads for
水, 说, 說, 説, 這, 这, 了, 瞭, 后, 後, 行, 们, 們, 学 and 學, with a header like its
files'. The Unihan Database is © Unicode, Inc., under the Unicode License v3
(<https://www.unicode.org/license.txt>).
`cedict-characters-sample.txt` holds 17 lines of CC-CEDICT (MDBG's file of
2026-10-14) for the words those characters write (這, 了, 瞭, 瞭解, 為了, 後, 后,
以後, 皇后, 們, 我們, 說, 水, 行, 銀行, 學 and 學習), CC BY-SA 4.0 as above.
`krdict-sample.json` holds six entries of KRDict's JSON export of 2026-09-19
(<https://krdict.korean.go.kr/download/downloadPopup>): 같이 (the adverb and the
particle), 가다 with its proverb 가는 날이 장날, 읽다 and 학교, each cut to its first
three senses, their English and Japanese equivalents and two examples, without
sound files or related words. 한국어기초사전 is by the National Institute of
Korean Language (국립국어원), CC BY-SA 2.0 KR
(<https://krdict.korean.go.kr/kboardPolicy/copyRightTermsInfo>).
`makemeahanzi-graphics-sample.txt` and `makemeahanzi-dictionary-sample.txt` hold
the lines of Make Me a Hanzi's `graphics.txt` and `dictionary.txt` (commit
`618dbab`, 2018-10-16, <https://github.com/skishore/makemeahanzi>) for 水 and 海.
The strokes derive from the fonts Arphic PL KaitiM GB and Arphic PL UKai, © 1999
Arphic Technology Co., Ltd., under the Arphic Public License (its text is in the
app's `assets/makemeahanzi/ARPHICPL.TXT`); the dictionary's lines are under the
LGPL, version 3 or later (`assets/makemeahanzi/LGPL.txt`).

View file

@ -0,0 +1,19 @@
# CC-CEDICT
#! date=2026-10-14T07:20:00Z
了 了 [le5] /(completed action marker)/(modal particle indicating change of state, situation now)/(modal particle intensifying preceding clause)/
以後 以后 [yi3 hou4] /after/later/afterwards/following/later on/in the future/
們 们 [men5] /plural marker for pronouns, and nouns referring to individuals/
后 后 [hou4] /empress/queen/(archaic) monarch/ruler/
學 学 [xue2] /to learn/to study/to imitate/science/-ology/
學習 学习 [xue2 xi2] /to learn; to study/
後 后 [hou4] /back/behind/rear/afterwards/after/later/post-/
我們 我们 [wo3 men5] /we; us; ourselves/
水 水 [shui3] /water/(after a name) ... River/to swim (used mostly in 會水|会水[hui4 shui3] and 水性[shui3 xing4])/(coll.) lacking in substance; shoddy/(bound form) additional cost; extra income/classifier for washings of a garment/
為了 为了 [wei4 le5] /for; for the purpose of; in order to/
皇后 皇后 [huang2 hou4] /empress/imperial consort/
瞭 了 [liao3] /(bound form) clear in one's mind; to understand clearly/
瞭解 了解 [liao3 jie3] /variant of 了解[liao3 jie3]/
行 行 [xing2] /(bound form) to walk; to go; to travel/(literary) trip; journey; visit/(bound form) temporary; makeshift/(bound form) current; in circulation/(bound form) to do; to perform/capable; competent/all right; OK!; will do/behavior; conduct (Taiwan pr. [xing4])/(literary) about to; soon/
說 说 [shuo1] /to speak; to talk; to say/to explain; to comment/to scold; to tell off/(bound form) theory; doctrine/
這 这 [zhe4] /(pronoun) this; these/(bound form) this; the (followed by a noun)/(bound form) this; these (followed by a classifier) (in this sense, commonly pr. [zhei4], esp. in Beijing)/
銀行 银行 [yin2 hang2] /bank/CL:家[jia1],個|个[ge4]/

View file

@ -0,0 +1,53 @@
# CC-CEDICT
# Community maintained free Chinese-English dictionary.
#
# Published by MDBG
#
# License:
# Creative Commons Attribution-ShareAlike 4.0 International License
# https://creativecommons.org/licenses/by-sa/4.0/
#
# Referenced works:
# CEDICT - Copyright (C) 1997, 1998 Paul Andrew Denisowski
#
# CC-CEDICT can be downloaded from:
# https://www.mdbg.net/chinese/dictionary?page=cc-cedict
#
# Additions and corrections can be sent through:
# https://cc-cedict.org/editor/editor.php
#
# For more information about CC-CEDICT see:
# https://cc-cedict.org/wiki/
#
#! version=1
#! subversion=0
#! format=ts
#! charset=UTF-8
#! entries=125264
#! publisher=MDBG
#! license=https://creativecommons.org/licenses/by-sa/4.0/
#! date=2026-10-13T08:59:07Z
#! time=1791881947
中國 中国 [Zhong1 guo2] /China/
了 了 [le5] /(completed action marker)/(modal particle indicating change of state, situation now)/(modal particle intensifying preceding clause)/
了 了 [liao3] /to finish/(used with 得[de2] or 不[bu4] after a verb to express (im)possibility, as in 忘不了[wang4 bu5 liao3] "cannot forget")/(literary) (usually followed by a negative such as 無|无[wu2] or 不[bu4]) completely (not); entirely (not); (not) in the least/variant of 瞭|了[liao3]/
女兒 女儿 [nu:3 er2] /daughter/
學習 学习 [xue2 xi2] /to learn; to study/
書 书 [Shu1] /abbr. for 書經|书经[Shu1 jing1]/
書 书 [shu1] /book/letter/document/CL:本[ben3],冊|册[ce4],部[bu4]/to write/
熊貓 熊猫 [xiong2 mao1] /panda/CL:隻|只[zhi1]/
略 略 [lu:e4] /brief; sketchy/outline; summary/to omit/(bound form before a single-character verb) a bit; somewhat; slightly/plan; strategy/to capture (territory)/
的 的 [de5] /of; ~'s (possessive particle)/(used after an attribute when it modifies a noun)/(used at the end of a declarative sentence for emphasis)/(used after a noun, verb or adjective to form a nominal expression, as in 皮革的[pi2 ge2 de5] "one made of leather" or 跑堂兒的|跑堂儿的[pao3 tang2 r5 de5] "a waiter (literally, one who runs back and forth in a restaurant)" or 新的[xin1 de5] "new one")/also pr. [di4] or [di5] in poetry and songs/
的 的 [di1] /(bound form) a taxi; a cab (abbr. for 的士[di1 shi4])/
的 的 [di2] /really and truly/
的 的 [di4] /(bound form) bull's-eye; target/
說 说 [shui4] /to persuade/
說 说 [shuo1] /to speak; to talk; to say/to explain; to comment/to scold; to tell off/(bound form) theory; doctrine/
銀行 银行 [yin2 hang2] /bank/CL:家[jia1],個|个[ge4]/
咊 和 [he2] /old variant of 和[he2]/
和 和 [He2] /surname He/
和 和 [he2] /(joining two nouns) and; together with; with (Taiwan pr. [han4])/(math.) sum/to make peace/(sports) to draw; to tie/(bound form) harmonious/(bound form) Japan; Japanese/
和 和 [he4] /to compose a poem in reply (to sb's poem) using the same rhyme sequence/to join in the singing/to chime in with others/
和 和 [hu2] /to complete a set in mahjong or playing cards/
和 和 [huo2] /to combine a powdery substance (flour, plaster etc) with water/Taiwan pr. [huo4]/
和 和 [huo4] /to mix (ingredients) together/to blend/classifier for rinses of clothes/classifier for boilings of medicinal herbs/

View file

@ -0,0 +1,2 @@
jmdict_seq,kana,kanji,waller_definition
1601040,はみがき,歯磨,"dentifrice, toothpaste"
1 jmdict_seq kana kanji waller_definition
2 1601040 はみがき 歯磨 dentifrice, toothpaste

View file

@ -0,0 +1,2 @@
jmdict_seq,kana,kanji,waller_definition
1601040,はみがき,歯磨き,"dentifrice,toothpaste"
1 jmdict_seq kana kanji waller_definition
2 1601040 はみがき 歯磨き dentifrice,toothpaste

View file

@ -0,0 +1 @@
jmdict_seq,kana,kanji,waller_definition
1 jmdict_seq kana kanji waller_definition

View file

@ -0,0 +1,2 @@
jmdict_seq,kana,kanji,waller_definition
,ない,,a row without an id
1 jmdict_seq kana kanji waller_definition
2 ない a row without an id

View file

@ -0,0 +1,3 @@
jmdict_seq,kana,kanji,waller_definition
1358280,たべる,食べる,to eat
1080510,テレビ,,television
1 jmdict_seq kana kanji waller_definition
2 1358280 たべる 食べる to eat
3 1080510 テレビ television

View file

@ -0,0 +1,177 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE JMdict [
<!ENTITY rK "rarely used kanji form">
<!ENTITY sK "search-only kanji form">
<!ENTITY abbr "abbreviation">
<!ENTITY uk "word usually written using kana alone">
<!ENTITY adj-pn "pre-noun adjectival (rentaishi)">
<!ENTITY int "interjection (kandoushi)">
<!ENTITY n "noun (common) (futsuumeishi)">
<!ENTITY unc "unclassified">
<!ENTITY v1 "Ichidan verb">
<!ENTITY vt "transitive verb">
]>
<JMdict>
<!-- JMdict created: 2026-10-09 -->
<entry>
<ent_seq>1358280</ent_seq>
<k_ele>
<keb>食べる</keb>
<ke_pri>ichi1</ke_pri>
<ke_pri>news2</ke_pri>
<ke_pri>nf25</ke_pri>
</k_ele>
<k_ele>
<keb>喰べる</keb>
<ke_inf>&sK;</ke_inf>
</k_ele>
<r_ele>
<reb>たべる</reb>
<re_pri>ichi1</re_pri>
<re_pri>news2</re_pri>
<re_pri>nf25</re_pri>
</r_ele>
<sense>
<pos>&v1;</pos>
<pos>&vt;</pos>
<gloss>to eat</gloss>
<example>
<ex_srce exsrc_type="tat">193344</ex_srce>
<ex_text>食べる</ex_text>
<ex_sent xml:lang="jpn">もっと果物を食べるべきです。</ex_sent>
<ex_sent xml:lang="eng">You should eat more fruit.</ex_sent>
</example>
</sense>
<sense>
<pos>&v1;</pos>
<pos>&vt;</pos>
<gloss>to live on (e.g. a salary)</gloss>
<gloss>to live off</gloss>
<gloss>to subsist on</gloss>
<example>
<ex_srce exsrc_type="tat">81964</ex_srce>
<ex_text>食べて</ex_text>
<ex_sent xml:lang="jpn">僕は脚本家で食べていく決心をした。</ex_sent>
<ex_sent xml:lang="eng">I am determined to make a living as a playwright.</ex_sent>
</example>
</sense>
</entry>
<entry>
<ent_seq>1080510</ent_seq>
<r_ele>
<reb>テレビ</reb>
<re_pri>gai1</re_pri>
<re_pri>ichi1</re_pri>
</r_ele>
<sense>
<pos>&n;</pos>
<xref>テレビジョン</xref>
<misc>&abbr;</misc>
<gloss>television</gloss>
<gloss>TV</gloss>
<example>
<ex_srce exsrc_type="tat">232489</ex_srce>
<ex_text>テレビ</ex_text>
<ex_sent xml:lang="jpn">あなたはどこでテレビを見ますか。</ex_sent>
<ex_sent xml:lang="eng">Where do you watch television?</ex_sent>
</example>
</sense>
<sense>
<pos>&n;</pos>
<gloss>TV program</gloss>
<gloss>TV programme</gloss>
<gloss>TV broadcast</gloss>
</sense>
</entry>
<entry>
<ent_seq>1006830</ent_seq>
<k_ele>
<keb>其の</keb>
<ke_inf>&rK;</ke_inf>
</k_ele>
<r_ele>
<reb>その</reb>
<re_pri>spec1</re_pri>
</r_ele>
<r_ele>
<reb>そん</reb>
<re_nokanji/>
</r_ele>
<sense>
<pos>&adj-pn;</pos>
<xref>この・1</xref>
<xref>あの</xref>
<xref>どの</xref>
<misc>&uk;</misc>
<s_inf>something or someone distant from the speaker, close to the listener; actions of the listener, or ideas expressed or understood by the listener</s_inf>
<gloss>that</gloss>
<gloss>the</gloss>
<example>
<ex_srce exsrc_type="tat">81320</ex_srce>
<ex_text>その</ex_text>
<ex_sent xml:lang="jpn">毎日、放課後に私はその本屋で彼女を待った。</ex_sent>
<ex_sent xml:lang="eng">Every day I waited for her at the bookstore after school.</ex_sent>
</example>
</sense>
<sense>
<pos>&adj-pn;</pos>
<misc>&uk;</misc>
<s_inf>preceding a number</s_inf>
<gloss>part (as in "part two")</gloss>
</sense>
<sense>
<stagr>その</stagr>
<pos>&int;</pos>
<gloss>um ...</gloss>
<gloss>er ...</gloss>
<gloss>uh ...</gloss>
</sense>
</entry>
<entry>
<ent_seq>1000060</ent_seq>
<k_ele>
<keb>々</keb>
</k_ele>
<r_ele>
<reb>のま</reb>
</r_ele>
<r_ele>
<reb>ノマ</reb>
<re_nokanji/>
</r_ele>
<sense>
<pos>&unc;</pos>
<xref>同の字点</xref>
<gloss g_type="expl">kanji repetition mark</gloss>
</sense>
</entry>
<entry>
<ent_seq>1000110</ent_seq>
<k_ele>
<keb>CDプレーヤー</keb>
<ke_pri>spec1</ke_pri>
</k_ele>
<k_ele>
<keb>CDプレイヤー</keb>
</k_ele>
<r_ele>
<reb>シーディープレーヤー</reb>
<re_restr>CDプレーヤー</re_restr>
<re_pri>spec1</re_pri>
</r_ele>
<r_ele>
<reb>シーディープレイヤー</reb>
<re_restr>CDプレイヤー</re_restr>
</r_ele>
<sense>
<pos>&n;</pos>
<gloss>CD player</gloss>
<example>
<ex_srce exsrc_type="tat">162365</ex_srce>
<ex_text>CDプレイヤー</ex_text>
<ex_sent xml:lang="jpn">私は、このCDプレイヤーをただで得ました。</ex_sent>
<ex_sent xml:lang="eng">I got this CD player for free.</ex_sent>
</example>
</sense>
</entry>
</JMdict>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,30 @@
{
"一": {
"strokes": 1,
"grade": 1,
"freq": 2,
"jlpt_old": 4,
"jlpt_new": 5
},
"食": {
"strokes": 9,
"grade": 2,
"freq": 328,
"jlpt_old": 4,
"jlpt_new": 5
},
"亜": {
"strokes": 7,
"grade": 8,
"freq": 1509,
"jlpt_old": 1,
"jlpt_new": 1
},
"唖": {
"strokes": 10,
"grade": null,
"freq": null,
"jlpt_old": null,
"jlpt_new": null
}
}

View file

@ -0,0 +1,313 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE kanjidic2 [
<!ELEMENT kanjidic2 (header,character*)>
]>
<kanjidic2>
<header>
<!-- KANJIDIC 2 - XML format kanji database combining the KANJIDIC
and KANJD212 files plus the kanji from JIS X 0213.
-->
<file_version>4</file_version>
<database_version>2026-282</database_version>
<date_of_creation>2026-10-09</date_of_creation>
</header>
<character>
<literal>一</literal>
<codepoint>
<cp_value cp_type="ucs">4e00</cp_value>
<cp_value cp_type="jis208">1-16-76</cp_value>
</codepoint>
<radical>
<rad_value rad_type="classical">1</rad_value>
</radical>
<misc>
<grade>1</grade>
<stroke_count>1</stroke_count>
<variant var_type="jis208">1-48-01</variant>
<freq>2</freq>
<jlpt>4</jlpt>
</misc>
<dic_number>
<dic_ref dr_type="nelson_c">1</dic_ref>
<dic_ref dr_type="nelson_n">1</dic_ref>
<dic_ref dr_type="halpern_njecd">3341</dic_ref>
<dic_ref dr_type="halpern_kkd">4148</dic_ref>
<dic_ref dr_type="halpern_kkld">2105</dic_ref>
<dic_ref dr_type="halpern_kkld_2ed">2850</dic_ref>
<dic_ref dr_type="heisig">1</dic_ref>
<dic_ref dr_type="heisig6">1</dic_ref>
<dic_ref dr_type="gakken">4</dic_ref>
<dic_ref dr_type="oneill_names">3</dic_ref>
<dic_ref dr_type="oneill_kk">1</dic_ref>
<dic_ref dr_type="moro" m_vol="1" m_page="0001">1</dic_ref>
<dic_ref dr_type="henshall">1</dic_ref>
<dic_ref dr_type="sh_kk">2</dic_ref>
<dic_ref dr_type="sh_kk2">2</dic_ref>
<dic_ref dr_type="sakade">1</dic_ref>
<dic_ref dr_type="jf_cards">1</dic_ref>
<dic_ref dr_type="henshall3">1</dic_ref>
<dic_ref dr_type="tutt_cards">1</dic_ref>
<dic_ref dr_type="crowley">1</dic_ref>
<dic_ref dr_type="kanji_in_context">1</dic_ref>
<dic_ref dr_type="busy_people">1.A</dic_ref>
<dic_ref dr_type="kodansha_compact">1</dic_ref>
<dic_ref dr_type="maniette">1</dic_ref>
</dic_number>
<query_code>
<q_code qc_type="skip">4-1-4</q_code>
<q_code qc_type="sh_desc">0a1.1</q_code>
<q_code qc_type="four_corner">1000.0</q_code>
<q_code qc_type="deroo">3072</q_code>
</query_code>
<reading_meaning>
<rmgroup>
<reading r_type="pinyin">yi1</reading>
<reading r_type="korean_r">il</reading>
<reading r_type="korean_h">일</reading>
<reading r_type="vietnam">Nhất</reading>
<reading r_type="ja_on">イチ</reading>
<reading r_type="ja_on">イツ</reading>
<reading r_type="ja_kun">ひと-</reading>
<reading r_type="ja_kun">ひと.つ</reading>
<meaning>one</meaning>
<meaning>one radical (no.1)</meaning>
<meaning m_lang="fr">un</meaning>
<meaning m_lang="fr">radical un (no. 1)</meaning>
<meaning m_lang="es">uno</meaning>
<meaning m_lang="es">1</meaning>
<meaning m_lang="pt">um</meaning>
</rmgroup>
<nanori>かず</nanori>
<nanori>い</nanori>
<nanori>いっ</nanori>
<nanori>いる</nanori>
<nanori>かつ</nanori>
<nanori>かづ</nanori>
<nanori>てん</nanori>
<nanori>はじめ</nanori>
<nanori>ひ</nanori>
<nanori>ひとつ</nanori>
<nanori>まこと</nanori>
</reading_meaning>
</character>
<character>
<literal>食</literal>
<codepoint>
<cp_value cp_type="ucs">98df</cp_value>
<cp_value cp_type="jis208">1-31-09</cp_value>
</codepoint>
<radical>
<rad_value rad_type="classical">184</rad_value>
</radical>
<misc>
<grade>2</grade>
<stroke_count>9</stroke_count>
<freq>328</freq>
<jlpt>4</jlpt>
</misc>
<dic_number>
<dic_ref dr_type="nelson_c">5154</dic_ref>
<dic_ref dr_type="nelson_n">6674</dic_ref>
<dic_ref dr_type="halpern_njecd">2075</dic_ref>
<dic_ref dr_type="halpern_kkd">2578</dic_ref>
<dic_ref dr_type="halpern_kkld">1316</dic_ref>
<dic_ref dr_type="halpern_kkld_2ed">1787</dic_ref>
<dic_ref dr_type="heisig">1472</dic_ref>
<dic_ref dr_type="heisig6">1582</dic_ref>
<dic_ref dr_type="gakken">269</dic_ref>
<dic_ref dr_type="oneill_names">1159</dic_ref>
<dic_ref dr_type="oneill_kk">283</dic_ref>
<dic_ref dr_type="moro" m_vol="12" m_page="0371">44014</dic_ref>
<dic_ref dr_type="henshall">146</dic_ref>
<dic_ref dr_type="sh_kk">322</dic_ref>
<dic_ref dr_type="sh_kk2">322</dic_ref>
<dic_ref dr_type="sakade">253</dic_ref>
<dic_ref dr_type="jf_cards">99</dic_ref>
<dic_ref dr_type="henshall3">163</dic_ref>
<dic_ref dr_type="tutt_cards">180</dic_ref>
<dic_ref dr_type="crowley">207</dic_ref>
<dic_ref dr_type="kanji_in_context">131</dic_ref>
<dic_ref dr_type="busy_people">2.13</dic_ref>
<dic_ref dr_type="kodansha_compact">1900</dic_ref>
<dic_ref dr_type="maniette">1484</dic_ref>
</dic_number>
<query_code>
<q_code qc_type="skip">2-2-7</q_code>
<q_code qc_type="sh_desc">8b0.1</q_code>
<q_code qc_type="four_corner">8073.2</q_code>
<q_code qc_type="deroo">2865</q_code>
</query_code>
<reading_meaning>
<rmgroup>
<reading r_type="pinyin">shi2</reading>
<reading r_type="pinyin">si4</reading>
<reading r_type="korean_r">sig</reading>
<reading r_type="korean_r">sa</reading>
<reading r_type="korean_h">식</reading>
<reading r_type="korean_h">사</reading>
<reading r_type="vietnam">Thực</reading>
<reading r_type="vietnam">Tự</reading>
<reading r_type="ja_on">ショク</reading>
<reading r_type="ja_on">ジキ</reading>
<reading r_type="ja_kun">く.う</reading>
<reading r_type="ja_kun">く.らう</reading>
<reading r_type="ja_kun">た.べる</reading>
<reading r_type="ja_kun">は.む</reading>
<meaning>eat</meaning>
<meaning>food</meaning>
<meaning m_lang="fr">manger</meaning>
<meaning m_lang="fr">nourriture</meaning>
<meaning m_lang="es">alimento</meaning>
<meaning m_lang="es">comida</meaning>
<meaning m_lang="es">eclipse</meaning>
<meaning m_lang="es">comer</meaning>
<meaning m_lang="pt">comer</meaning>
<meaning m_lang="pt">comida</meaning>
<meaning m_lang="pt">alimento</meaning>
</rmgroup>
<nanori>ぐい</nanori>
</reading_meaning>
</character>
<character>
<literal>亜</literal>
<codepoint>
<cp_value cp_type="ucs">4e9c</cp_value>
<cp_value cp_type="jis208">1-16-01</cp_value>
</codepoint>
<radical>
<rad_value rad_type="classical">7</rad_value>
<rad_value rad_type="nelson_c">1</rad_value>
</radical>
<misc>
<grade>8</grade>
<stroke_count>7</stroke_count>
<variant var_type="jis208">1-48-19</variant>
<freq>1509</freq>
<jlpt>1</jlpt>
</misc>
<dic_number>
<dic_ref dr_type="nelson_c">43</dic_ref>
<dic_ref dr_type="nelson_n">81</dic_ref>
<dic_ref dr_type="halpern_njecd">3540</dic_ref>
<dic_ref dr_type="halpern_kkd">4354</dic_ref>
<dic_ref dr_type="halpern_kkld">2204</dic_ref>
<dic_ref dr_type="halpern_kkld_2ed">2966</dic_ref>
<dic_ref dr_type="heisig">1809</dic_ref>
<dic_ref dr_type="heisig6">1950</dic_ref>
<dic_ref dr_type="gakken">1331</dic_ref>
<dic_ref dr_type="oneill_names">525</dic_ref>
<dic_ref dr_type="oneill_kk">1788</dic_ref>
<dic_ref dr_type="moro" m_vol="1" m_page="0525">272</dic_ref>
<dic_ref dr_type="henshall">997</dic_ref>
<dic_ref dr_type="sh_kk">1616</dic_ref>
<dic_ref dr_type="sh_kk2">1724</dic_ref>
<dic_ref dr_type="jf_cards">1032</dic_ref>
<dic_ref dr_type="tutt_cards">1092</dic_ref>
<dic_ref dr_type="kanji_in_context">1818</dic_ref>
<dic_ref dr_type="kodansha_compact">35</dic_ref>
<dic_ref dr_type="maniette">1827</dic_ref>
</dic_number>
<query_code>
<q_code qc_type="skip">4-7-1</q_code>
<q_code qc_type="sh_desc">0a7.14</q_code>
<q_code qc_type="four_corner">1010.6</q_code>
<q_code qc_type="deroo">3273</q_code>
</query_code>
<reading_meaning>
<rmgroup>
<reading r_type="pinyin">ya4</reading>
<reading r_type="korean_r">a</reading>
<reading r_type="korean_h">아</reading>
<reading r_type="vietnam">A</reading>
<reading r_type="vietnam">Á</reading>
<reading r_type="ja_on">ア</reading>
<reading r_type="ja_kun">つ.ぐ</reading>
<meaning>Asia</meaning>
<meaning>rank next</meaning>
<meaning>come after</meaning>
<meaning>-ous</meaning>
<meaning m_lang="fr">Asie</meaning>
<meaning m_lang="fr">suivant</meaning>
<meaning m_lang="fr">sub-</meaning>
<meaning m_lang="fr">sous-</meaning>
<meaning m_lang="es">pref. para indicar</meaning>
<meaning m_lang="es">venir después de</meaning>
<meaning m_lang="es">Asia</meaning>
<meaning m_lang="pt">Ásia</meaning>
<meaning m_lang="pt">próxima</meaning>
<meaning m_lang="pt">o que vem depois</meaning>
<meaning m_lang="pt">-ous</meaning>
</rmgroup>
<nanori>や</nanori>
<nanori>つぎ</nanori>
<nanori>つぐ</nanori>
</reading_meaning>
</character>
<character>
<literal>唖</literal>
<codepoint>
<cp_value cp_type="ucs">5516</cp_value>
<cp_value cp_type="jis208">1-16-02</cp_value>
</codepoint>
<radical>
<rad_value rad_type="classical">30</rad_value>
</radical>
<misc>
<stroke_count>10</stroke_count>
<variant var_type="jis212">1-21-64</variant>
<variant var_type="jis212">1-45-68</variant>
</misc>
<dic_number>
<dic_ref dr_type="nelson_c">939</dic_ref>
<dic_ref dr_type="nelson_n">795</dic_ref>
<dic_ref dr_type="heisig">2958</dic_ref>
<dic_ref dr_type="heisig6">2964</dic_ref>
<dic_ref dr_type="moro" m_vol="2" m_page="1066">3743</dic_ref>
</dic_number>
<query_code>
<q_code qc_type="skip">1-3-7</q_code>
<q_code qc_type="sh_desc">3d8.3</q_code>
<q_code qc_type="four_corner">6101.7</q_code>
</query_code>
<reading_meaning>
<rmgroup>
<reading r_type="pinyin">ya1</reading>
<reading r_type="korean_r">a</reading>
<reading r_type="korean_h">아</reading>
<reading r_type="vietnam">Á</reading>
<reading r_type="vietnam">Ớ</reading>
<reading r_type="vietnam">Ứ</reading>
<reading r_type="ja_on">ア</reading>
<reading r_type="ja_on">アク</reading>
<reading r_type="ja_kun">おし</reading>
<meaning>mute</meaning>
<meaning>dumb</meaning>
</rmgroup>
</reading_meaning>
</character>
<character>
<literal>僲</literal>
<codepoint>
<cp_value cp_type="ucs">50f2</cp_value>
<cp_value cp_type="jis212">1-18-49</cp_value>
<cp_value cp_type="jis213">1-14-38</cp_value>
</codepoint>
<radical>
<rad_value rad_type="classical">9</rad_value>
</radical>
<misc>
<stroke_count>16</stroke_count>
</misc>
<dic_number>
<dic_ref dr_type="moro">0</dic_ref>
</dic_number>
<query_code>
<q_code qc_type="skip">1-2-14</q_code>
</query_code>
<reading_meaning>
<rmgroup>
<reading r_type="pinyin">xian1</reading>
</rmgroup>
</reading_meaning>
</character>
</kanjidic2>

View file

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2009-2013 Ulrich Apel.
This work is distributed under the conditions of the Creative Commons
Attribution-Share Alike 3.0 Licence. This means you are free:
* to Share - to copy, distribute and transmit the work
* to Remix - to adapt the work
Under the following conditions:
* Attribution. You must attribute the work by stating your use of KanjiVG in
your own copyright header and linking to KanjiVG's website
(http://kanjivg.tagaini.net)
* Share Alike. If you alter, transform, or build upon this work, you may
distribute the resulting work only under the same or similar license to this
one.
See http://creativecommons.org/licenses/by-sa/3.0/ for more details.
This file was generated on 2026-07-14 from the most recent KanjiVG data.
-->
<kanjivg xmlns:kvg='http://kanjivg.tagaini.net'>
<kanji id="kvg:kanji_03042">
<g id="kvg:03042" kvg:element="あ">
<path id="kvg:03042-s1" d="M31.01,33c0.88,0.88,2.75,1.82,5.25,1.75c8.62-0.25,20-2.12,29.5-4.25c1.51-0.34,4.62-0.88,6.62-0.5"/>
<path id="kvg:03042-s2" d="M49.76,17.62c0.88,1,1.82,3.26,1.38,5.25c-3.75,16.75-6.25,38.13-5.13,53.63c0.41,5.7,1.88,10.88,3.38,13.62"/>
<path id="kvg:03042-s3" d="M65.63,44.12c0.75,1.12,1.16,4.39,0.5,6.12c-4.62,12.26-11.24,23.76-25.37,35.76c-6.86,5.83-15.88,3.75-16.25-8.38c-0.34-10.87,13.38-23.12,32.38-26.74c12.42-2.37,27,1.38,30.5,12.75c4.05,13.18-3.76,26.37-20.88,30.49"/>
</g>
</kanji>
<kanji id="kvg:kanji_098df">
<g id="kvg:098df" kvg:element="食" kvg:radical="general">
<path id="kvg:098df-s1" kvg:type="㇒" d="M52.75,10.5c0.11,0.98-0.19,2.67-0.97,3.93C45,25.34,31.75,41.19,14,51.5"/>
<path id="kvg:098df-s2" kvg:type="㇏" d="M52.75,16.25c5.09,4.8,25.71,19.61,33.7,24.9c2.68,1.78,5.37,2.79,8.55,3.35"/>
<path id="kvg:098df-s3" kvg:type="㇑a" d="M52.25,29.25c1,1,1.5,2.25,1.5,3.5c0,2,0,3,0,5.5"/>
<path id="kvg:098df-s4" kvg:type="㇕" d="M38,40c0.83,0.47,2.19,1,3.86,0.83c9.39-0.96,21.95-2.76,23.25-2.84c1.67-0.1,3.14,0.88,3.11,2.53C68.2,41.8,67,53.25,66.34,62.4c-0.07,0.94-0.13,1.36-0.13,1.99"/>
<path id="kvg:098df-s5" kvg:type="㇐a" d="M40.83,51.73C47.25,51.25,59.5,50,66,49.75"/>
<path id="kvg:098df-s6" kvg:type="㇐a" d="M40.69,63.9c7.04-0.52,16.55-1.62,24.6-2.04"/>
<path id="kvg:098df-s7" kvg:type="㇙" d="M38.25,40.25c1.12,1.12,1.5,2.62,1.5,4c0,9.12,0,43.62,0,47.25c0,4,1,4.88,4.12,2.88c2.93-1.87,6.75-5.25,10.88-8.38"/>
<path id="kvg:098df-s8" kvg:type="㇒" d="M74,64c0.25,1.25,0.09,2.57-0.75,3.5c-3.5,3.88-4.5,4.88-7.25,7.5"/>
<path id="kvg:098df-s9" kvg:type="㇏" d="M51.5,71C55.75,71,77,90,81,92.75c2.49,1.71,4.62,2.62,7.5,3.5"/>
</g>
</kanji>
<kanji id="kvg:kanji_08a9e">
<g id="kvg:08a9e" kvg:element="語">
<g id="kvg:08a9e-g1" kvg:element="言" kvg:position="left" kvg:radical="general">
<path id="kvg:08a9e-s1" kvg:type="㇔" d="M26,15.25c2.82,1.41,7.29,5.8,8,8"/>
<path id="kvg:08a9e-s2" kvg:type="㇐" d="M12.37,32.97c1.25,0.28,2.88,0.66,4.36,0.53c7.02-0.59,17.78-1.75,25.95-3c1.52-0.23,3.57-0.38,5.16,0.03"/>
<path id="kvg:08a9e-s3" kvg:type="㇐" d="M18.73,45.76c0.38,0.18,2.71,0.2,3.1,0.18c3.97-0.21,9.79-1.19,14.46-2.31c1.67-0.4,2.71-0.38,3.86-0.08"/>
<path id="kvg:08a9e-s4" kvg:type="㇐" d="M18.73,58.89c0.89,0.23,1.89,0.36,3.35,0.15c3.89-0.54,10.71-1.51,14.85-2.29c0.7-0.13,1.82-0.26,2.61-0.1"/>
<g id="kvg:08a9e-g2" kvg:element="口">
<path id="kvg:08a9e-s5" kvg:type="㇑" d="M17.14,71.9c0.63,0.62,1.12,1.65,1.23,2.57c0.63,5.03,1.51,10.28,2.23,15.59c0.14,1.03,0.27,2.02,0.41,2.93"/>
<path id="kvg:08a9e-s6" kvg:type="㇕b" d="M19.37,73.6c5.67-0.94,15.47-2.73,20.36-3.48c1.49-0.22,2.39,1.05,2.18,2.08c-0.71,3.44-2.27,9.75-3.23,13.89"/>
<path id="kvg:08a9e-s7" kvg:type="㇐b" d="M21.47,89.02c3.95-0.45,10.71-1.19,16.28-1.61c1.21-0.09,2.36-0.17,3.41-0.22"/>
</g>
</g>
<g id="kvg:08a9e-g3" kvg:element="吾" kvg:position="right" kvg:phon="吾">
<g id="kvg:08a9e-g4" kvg:element="五">
<g id="kvg:08a9e-g5" kvg:element="二" kvg:part="1">
<path id="kvg:08a9e-s8" kvg:type="㇐" d="M51.79,17.49c1.38,0.26,3.91,0.28,5.27,0.15C63.88,17,72.62,15.62,80,15.32c2.3-0.1,3.67,0.04,4.81,0.15"/>
</g>
<path id="kvg:08a9e-s9" kvg:type="㇑a" d="M67.75,20.25c0.37,1.25,0.5,2.38,0.23,3.75c-0.75,3.78-6.03,23.83-7.96,31.58"/>
<path id="kvg:08a9e-s10" kvg:type="㇕c" d="M52.18,36.96c1.82,0.66,4.17,0.95,5.84,0.66c8.48-1.5,16.13-3.06,22.74-4.1c2.49-0.39,4.05,1.27,3.71,2.93c-0.6,2.93-2.48,11.43-3.74,17.86"/>
<g id="kvg:08a9e-g6" kvg:element="二" kvg:part="2">
<path id="kvg:08a9e-s11" kvg:type="㇐" d="M46.33,58.46c1.13,0.24,3.94,0.2,5.07,0.08c12.34-1.29,19.11-2.39,40.88-4.02c1.88-0.14,3.75-0.02,4.69,0.09"/>
</g>
</g>
<g id="kvg:08a9e-g7" kvg:element="口">
<path id="kvg:08a9e-s12" kvg:type="㇑" d="M52.5,69.88c0.93,0.93,1.42,2.28,1.54,3.31c0.71,6.06,1.42,12.65,2.06,19.3c0.15,1.5,0.28,2.44,0.4,3.75"/>
<path id="kvg:08a9e-s13" kvg:type="㇕b" d="M54.99,71.67c9.47-1.45,23.75-3.41,28.85-3.9c2.14-0.21,3.28,0.98,2.86,2.93c-0.84,3.88-3.08,12.57-4.39,17.58"/>
<path id="kvg:08a9e-s14" kvg:type="㇐b" d="M57.2,91.49c5.94-0.55,14.67-1.24,23.54-1.76c1.3-0.08,2.63-0.13,3.97-0.2"/>
</g>
</g>
</g>
</kanji>
<kanji id="kvg:kanji_06a45">
<g id="kvg:06a45" kvg:element="機">
<g id="kvg:06a45-g1" kvg:element="木" kvg:position="left" kvg:radical="general">
<path id="kvg:06a45-s1" kvg:type="㇐" d="M10.28,39.47c1.6,0.66,3.76,0.28,4.98,0.09c4.46-0.7,12.85-2.31,18.53-3.4c1.23-0.23,2.99-0.8,4.23-0.29"/>
<path id="kvg:06a45-s2" kvg:type="㇑" d="M25.36,15c1.26,1.26,1.79,2.75,1.79,4.42c0,0.82-0.04,50.17-0.05,69.95c0,3.14,0,5.54,0,6.88"/>
<path id="kvg:06a45-s3" kvg:type="㇒" d="M26.19,39.53c0,0.84-0.1,1.58-0.34,2.33C22,54.25,19.33,62.31,12.11,75.34"/>
<path id="kvg:06a45-s4" kvg:type="㇔/㇏" d="M29.88,45.75c2.33,1.62,6.16,6.86,8.12,10"/>
</g>
<g id="kvg:06a45-g2" kvg:element="無" kvg:position="right">
<g id="kvg:06a45-g3" kvg:position="top">
<g id="kvg:06a45-g4" kvg:element="丿">
<path id="kvg:06a45-s5" kvg:type="㇒" d="M54.51,12.5c0.04,0.56,0.15,1.62-0.08,2.25c-2.72,7.91-6.75,15.16-13.84,21.54"/>
</g>
<path id="kvg:06a45-s6" kvg:type="㇐" d="M52.83,25c0.72-0.03,2.13-0.1,3.17-0.21c8.01-0.86,23.7-3.89,29.02-4.4c1.4-0.13,2.24,0.17,2.94,0.35"/>
<g id="kvg:06a45-g5" kvg:element="一">
<path id="kvg:06a45-s7" kvg:type="㇐" d="M37.25,48.7c1.24,0.54,3.52,0.7,4.77,0.54C52,48,80.69,45.25,94.15,44.51c2.07-0.11,3.32,0.26,4.35,0.53"/>
</g>
<path id="kvg:06a45-s8" kvg:type="㇑" d="M47.09,37.25c0.89,0.5,1.43,2.25,1.6,3.25c0.18,1,0.31,15.75,0.48,27.5"/>
<path id="kvg:06a45-s9" kvg:type="㇑" d="M58.37,30.75c0.89,0.5,1.62,2.23,1.6,3.25c-0.07,5.5,0.14,19.5,0.14,33.75"/>
<path id="kvg:06a45-s10" kvg:type="㇑" d="M71.65,29.75c0.89,0.5,1.67,2.23,1.6,3.25c-0.47,8-0.88,17.5-1.5,33.25"/>
<path id="kvg:06a45-s11" kvg:type="㇑" d="M85.34,30.25c0.89,0.5,1.87,2.28,1.6,4.25c-1.09,8-1.5,15.25-3.54,30.75"/>
<path id="kvg:06a45-s12" kvg:type="㇐" d="M37.16,68.7c1.32,0.54,3.74,0.67,5.05,0.54c7.53-0.74,37.49-2.99,51.76-3.73c2.19-0.11,3.52,0.26,4.61,0.53"/>
</g>
<g id="kvg:06a45-g6" kvg:element="灬" kvg:variant="true" kvg:original="火" kvg:position="bottom">
<path id="kvg:06a45-s13" kvg:type="㇔" d="M40.94,80.5c0,5.25-4.71,13-5.94,14.5"/>
<path id="kvg:06a45-s14" kvg:type="㇔" d="M53.75,79.08c2.49,2.57,4.85,9.64,5.47,13.63"/>
<path id="kvg:06a45-s15" kvg:type="㇔" d="M71.51,78.83c2.4,2.27,6.19,9.35,6.79,12.88"/>
<path id="kvg:06a45-s16" kvg:type="㇔" d="M87.89,77.08c3.73,2.89,9.63,11.89,10.56,16.38"/>
</g>
</g>
</g>
</kanji>
</kanjivg>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,2 @@
{"character":"水","definition":"water, liquid, lotion, juice","pinyin":["shuǐ"],"decomposition":"⿻亅?","etymology":{"type":"pictographic","hint":"A river running between two banks; compare 川"},"radical":"水","matches":[[0],null,null,null]}
{"character":"海","definition":"sea, ocean; maritime","pinyin":["hǎi"],"decomposition":"⿰氵每","etymology":{"type":"pictophonetic","phonetic":"每","semantic":"氵","hint":"water"},"radical":"氵","matches":[[0],[0],[0],[1],[1],[1],[1],[1],[1],[1]]}

View file

@ -0,0 +1,2 @@
{"character":"水","strokes":["M 535 506 Q 538 699 560 762 Q 578 793 520 817 Q 486 836 465 830 Q 447 823 463 799 Q 485 771 486 736 Q 490 697 478 121 Q 477 97 463 88 Q 454 81 432 88 Q 407 94 382 99 Q 348 111 351 100 Q 352 93 373 78 Q 440 24 457 -5 Q 476 -41 493 -42 Q 508 -43 524 -7 Q 543 41 541 117 Q 531 294 534 470 L 535 506 Z","M 154 501 Q 141 501 139 492 Q 138 485 153 477 Q 199 452 227 461 Q 333 489 343 489 Q 359 486 347 456 Q 296 326 249 262 Q 201 190 114 119 Q 99 106 110 103 Q 120 102 141 113 Q 217 153 281 224 Q 342 288 419 454 Q 429 478 441 489 Q 456 501 447 511 Q 437 524 399 537 Q 378 549 336 530 Q 270 509 154 501 Z","M 590 446 Q 630 476 766 584 Q 787 603 814 615 Q 838 627 825 647 Q 809 666 779 681 Q 752 696 738 692 Q 723 691 729 675 Q 735 639 659 553 Q 620 508 577 459 C 557 436 566 428 590 446 Z","M 577 459 Q 555 484 535 506 C 515 528 516 494 534 470 Q 756 161 817 160 Q 898 169 967 175 Q 995 178 996 185 Q 997 192 964 205 Q 810 253 753 295 Q 690 346 590 446 L 577 459 Z"],"medians":[[[473,814],[500,795],[521,770],[508,455],[507,91],[485,42],[442,56],[371,91],[369,98],[358,98]],[[147,491],[209,482],[354,512],[381,505],[392,495],[384,459],[353,387],[280,261],[187,160],[113,110]],[[737,682],[750,671],[766,637],[721,583],[591,461],[590,452]],[[539,500],[550,465],[618,387],[729,271],[782,229],[820,207],[990,185]]]}
{"character":"海","strokes":["M 246 711 Q 267 686 289 655 Q 302 639 320 636 Q 333 635 340 649 Q 349 665 343 700 Q 339 730 249 767 Q 233 773 224 771 Q 218 768 218 753 Q 219 740 246 711 Z","M 154 542 Q 191 493 228 471 Q 244 467 255 481 Q 262 494 260 512 Q 254 537 236 553 Q 188 586 150 586 Q 146 587 142 585 Q 135 584 137 570 Q 138 557 154 542 Z","M 123 190 Q 111 186 113 168 Q 131 89 165 72 Q 172 65 183 68 Q 190 69 191 95 Q 197 141 293 399 Q 300 415 299 422 Q 298 432 289 425 Q 273 415 163 232 Q 151 211 123 190 Z","M 520 686 Q 593 788 594 793 Q 593 796 593 798 Q 589 810 563 832 Q 538 848 520 849 Q 502 848 510 827 Q 525 793 458 683 Q 427 632 383 577 Q 373 567 371 561 Q 367 551 381 553 Q 420 559 500 661 L 520 686 Z","M 500 661 Q 548 640 599 650 Q 687 666 778 684 Q 820 694 826 699 Q 836 706 831 716 Q 824 728 794 736 Q 770 742 661 710 Q 579 692 520 686 C 490 683 472 672 500 661 Z","M 754 149 Q 809 139 863 120 Q 884 113 894 115 Q 904 119 898 137 Q 889 156 843 189 Q 825 205 762 196 L 694 195 Q 550 196 422 187 Q 409 186 413 196 Q 449 281 474 343 L 488 379 Q 506 428 517 460 Q 527 497 535 517 Q 538 524 538 529 C 541 538 541 538 521 557 Q 487 594 475 586 Q 468 577 467 568 Q 488 514 443 375 L 430 336 Q 388 227 345 190 Q 338 183 339 169 Q 343 151 360 132 Q 367 122 382 129 Q 419 147 493 154 Q 578 166 685 158 L 754 149 Z","M 685 158 Q 667 80 651 53 Q 641 37 619 45 Q 553 64 557 68 Q 526 80 548 50 Q 582 7 607 -37 Q 629 -68 649 -56 Q 728 -11 754 149 L 762 196 Q 775 311 780 365 L 785 413 Q 794 503 812 525 Q 831 549 819 561 Q 795 583 758 598 Q 740 607 718 599 Q 669 583 631 574 Q 589 564 521 557 C 491 554 508 528 538 529 Q 545 528 551 528 Q 572 528 688 560 Q 709 564 723 556 Q 739 544 726 405 L 722 365 Q 710 262 694 195 L 685 158 Z","M 579 484 Q 595 426 617 415 Q 630 411 641 424 Q 647 436 645 457 Q 635 488 592 507 Q 585 511 580 502 Q 576 495 579 484 Z","M 780 365 Q 859 368 941 362 Q 960 362 966 370 Q 972 380 956 395 Q 896 440 855 424 Q 822 420 785 413 L 726 405 Q 677 401 621 393 Q 557 387 488 379 L 443 375 Q 382 371 317 365 Q 296 364 311 347 Q 324 334 341 327 Q 360 321 377 325 Q 402 331 430 336 L 474 343 Q 568 362 722 365 L 780 365 Z","M 552 292 Q 567 253 590 231 Q 602 225 612 234 Q 619 243 622 256 Q 622 277 611 291 Q 599 306 571 319 Q 559 326 551 326 Q 545 326 545 316 Q 544 306 552 292 Z"],"medians":[[[229,762],[301,700],[321,656]],[[147,575],[210,530],[235,493]],[[177,78],[165,108],[161,162],[292,418]],[[519,836],[542,813],[549,793],[530,752],[463,648],[402,578],[379,561]],[[508,661],[530,670],[632,679],[754,707],[820,710]],[[480,577],[505,524],[492,462],[449,331],[385,194],[384,171],[416,164],[592,179],[775,172],[824,164],[888,126]],[[531,556],[548,544],[559,545],[715,580],[743,575],[772,543],[735,230],[710,107],[683,34],[668,14],[642,-4],[548,61]],[[590,495],[620,450],[623,432]],[[314,356],[368,346],[631,379],[883,397],[955,376]],[[554,317],[589,277],[599,247]]]}

View file

@ -0,0 +1,4 @@
750344 750342
750344 9848192
332662 68954
4456365 309992
1 750344 750342
2 750344 9848192
3 332662 68954
4 4456365 309992

View file

@ -0,0 +1,4 @@
750344 cmn 我学习。
332662 cmn 您学习吗?
4456365 cmn 她学习数学
333376 cmn 我妹妹目前不学习。
1 750344 cmn 我学习。
2 332662 cmn 您学习吗?
3 4456365 cmn 她学习数学
4 333376 cmn 我妹妹目前不学习。

Some files were not shown because too many files have changed in this diff Show more