# 汉字拼形组字系统

**URL:** <https://forum.freemdict.com/t/topic/13481>\
**Category:** 技术交流与词典编修\
**Created:** [2022 年6 月 7 日 03:50 UTC](https://forum.freemdict.com/t/topic/13481 "2022-06-07T03:50:01Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

作者： ![accelon](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/accelon/32/27309_2.png) [@accelon](https://forum.freemdict.com/u/accelon)\
发布日期： [2022 年6 月 7 日 03:50 UTC](https://forum.freemdict.com/t/topic/13481/1 "2022-06-07T03:50:01Z")

</div>

这是 Accelon 2021 的组字模块，我把它独立成检字和组字界面，希望对经常处理缺字的朋友有用。组字原理见汉字拼形芻议  
 ![](https://forumcdn.freemdict.com/uploads/default/original/3X/6/4/644f162697acd6864f073d8eb08554464f600b9f.png)

- 线上演示： [Github.io](https://hanziku.github.io/hzpx/index.html) 或 [腾讯云](https://www.nissaya.cn/hzpx/index.html)  
先试Github，连不上再用腾讯云，因有流量费。

- 离线包(基本字及CJK A~G共87000字)：1.8 MB [从Github下载](https://github.com/accelon/hzpx/releases/download/first-public/hzpx-2022-06-09.zip)  
[从腾讯云下载](https://www.nissaya.cn/hzpx/hzpx-2022-06-09.zip)

- PC 端 解开直接运行 (纯 js+html程序，需 ES6 以上浏览器)

- Android 11 之后，浏览器不能访问 file:/// ，需先将zip解开到手机内存，并用 File Manager Plus 以 http 模式开启。

---

<div class="post-metadata">

作者： ![hua](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/hua/32/11090_2.png) [@hua](https://forum.freemdict.com/u/hua)\
发布日期： [2022 年6 月 7 日 04:39 UTC](https://forum.freemdict.com/t/topic/13481/2 "2022-06-07T04:39:45Z")

</div>

腾讯云里记得设置超量暂停之类的。

---

<div class="post-metadata">

作者： ![alexpeng](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/alexpeng/32/19592_2.png) [@alexpeng](https://forum.freemdict.com/u/alexpeng)\
发布日期： [2022 年6 月 7 日 04:40 UTC](https://forum.freemdict.com/t/topic/13481/3 "2022-06-07T04:40:52Z")

</div>

有点意思  
 ![腾月鸟](https://forumcdn.freemdict.com/uploads/default/original/3X/3/e/3e4cd9fe8f4fb8e23d5402d5ab1f3e127fcbf90c.png)

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2022 年6 月 7 日 04:45 UTC](https://forum.freemdict.com/t/topic/13481/4 "2022-06-07T04:45:38Z")

</div>

邏羅寶  
这三个字属于同一个要构建的字形，分别是：基字/构件/替字。替字是替换基字里的构件，这里就是用寶字替换邏里的羅字。

![邏羅寶](https://forumcdn.freemdict.com/uploads/default/original/3X/2/f/2f9bfca70fdcc08e02f70e57203ec961341def83.png)

六个字的也好理解：鵝鳥烏戰口火，每三个字分别是：基字/构件/替字。

![鵝鳥烏戰口火a](https://forumcdn.freemdict.com/uploads/default/original/3X/8/b/8ba220f1448745ae2ced6613a448bc7f76e34036.png) ![鵝鳥烏戰口火b](https://forumcdn.freemdict.com/uploads/default/original/3X/3/d/3dc239d05b811cb5b0e9f6c6a1b2be1d1f5ad572.png)

我看有峰夆電雨水这种五个字的，雨水这两个字是怎么判断他们和前三个字属于同一个构建的字形？

![峰夆電雨水](https://forumcdn.freemdict.com/uploads/default/original/3X/4/3/43c7839f575c2dd1828ef4804d414ba0bf7d8d3e.png)

---

<div class="post-metadata">

作者： ![accelon](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/accelon/32/27309_2.png) [@accelon](https://forum.freemdict.com/u/accelon)\
发布日期： [2022 年6 月 7 日 05:36 UTC](https://forum.freemdict.com/t/topic/13481/5 "2022-06-07T05:36:06Z")

</div>

先组成「峰夆電 」，其中，替字「電」也可以是拼形，  
即将「電」替换成「電雨水」即得。  
「雨」只关注是不是「电」的构成部分，它不必管「峰」的。  
若是，则一直往下组合，若否，则停止组字。

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2022 年6 月 7 日 05:41 UTC](https://forum.freemdict.com/t/topic/13481/6 "2022-06-07T05:41:46Z")

</div>

> [@accelon](#):
>
> 「雨」只关注是不是「电」的构成部分，它不必管「峰」的。  
> 若是，则一直往下组合，若否，则停止组字。

感谢，明白了。

---

<div class="post-metadata">

作者： ![accelon](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/accelon/32/27309_2.png) [@accelon](https://forum.freemdict.com/u/accelon)\
发布日期： [2022 年6 月 7 日 05:47 UTC](https://forum.freemdict.com/t/topic/13481/7 "2022-06-07T05:47:13Z")

</div>

腾笼换鸟，好字。这证明我的猜想，新字会不造成识别的负担，不再造新字的原因是受限於技术，而不是想像力。

---

<div class="post-metadata">

作者： ![sxingbai](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/s/919ad9/32.png) [@sxingbai](https://forum.freemdict.com/u/sxingbai)\
发布日期： [2022 年6 月 7 日 05:56 UTC](https://forum.freemdict.com/t/topic/13481/8 "2022-06-07T05:56:35Z")

</div>

很好玩！ 👍

---

<div class="post-metadata">

作者： ![zc2022](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/zc2022/32/22613_2.png) [@zc2022](https://forum.freemdict.com/u/zc2022)\
发布日期： [2022 年6 月 14 日 09:17 UTC](https://forum.freemdict.com/t/topic/13481/9 "2022-06-14T09:17:03Z")

</div>

很有趣的工具。  
不过我刚刚试了一下，输入【雷田电】，“电”就会溢到上面，又比如输入【雷田无】【雷田五】都会有类似的情况。但也有一些替字没有这个问题，比如【雷田水】【雷田木】等。我有点好奇这是怎么回事，为什么给替字留的空间不是固定的呢？

---

<div class="post-metadata">

作者： ![accelon](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/accelon/32/27309_2.png) [@accelon](https://forum.freemdict.com/u/accelon)\
发布日期： [2022 年6 月 14 日 23:44 UTC](https://forum.freemdict.com/t/topic/13481/10 "2022-06-14T23:44:03Z")

</div>

「显示字框」可以看到「雷」和「田」其实是满框，（字框和「雿」「雪」相比就很明显）  
而glyphwiki 在组「雷」字时，下方的「田」会选择只占下方空间「变体」。  
在汉字拼形，当「田」被替代的部件也有「只占下方空间之变体」的话，如「水」「林」等常用部件，就没问题，反之就会占满字框，也就是如上所述溢出的情况。  
解决的方案有三个：  
一）到glyphwiki 调整「雷」字框，工作量極大。  
二）挑选字框较理想的作基字，如「雿」。缺点是很多理想字框的字都是罕用字。（可先到「字表」，输入「雷」再点附近的字。或者输入「雨」，点「字族」，看选合适的基字。）  
三）最好的办法是，在系统内指定用「雿」来替代「雷」，这样在组字时，碰到「雷田x」时，会自动改为「雿兆x」。  
这个工作量较小，而且每指定一个字，可以减少 30bytes 左右的数据量，我估计八万七千个汉字，至少一半可以替代。也就是可节约 1MB (目前是 4.5MB）。

---

<div class="post-metadata">

作者： ![zheshijie](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/z/73ab20/32.png) [@zheshijie](https://forum.freemdict.com/u/zheshijie)\
发布日期： [2022 年6 月 15 日 07:56 UTC](https://forum.freemdict.com/t/topic/13481/11 "2022-06-15T07:56:48Z")

</div>

久仰大神，重出江湖了。用过以前那个windows版本的组字工具，问题不大，新工具试了几个上下结构的字，发现重叠现象还是蛮多的，实现逻辑是不是不一样

---

<div class="post-metadata">

作者： ![accelon](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/accelon/32/27309_2.png) [@accelon](https://forum.freemdict.com/u/accelon)\
发布日期： [2022 年6 月 15 日 08:36 UTC](https://forum.freemdict.com/t/topic/13481/12 "2022-06-15T08:36:04Z")

</div>

是的，在codemirror 那个版本，实现动态组字的机制较复杂：替代部件得先依据每个笔划的控制点，算出「最小包含框」，并依此框重新计算比例。  
新的方法简化许多，只是挖掉填入旧框，不改变比例。我的想法是，用改良数据的方式，代替很难做到完美的算法。

---

<div class="post-metadata">

作者： ![accelon](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/accelon/32/27309_2.png) [@accelon](https://forum.freemdict.com/u/accelon)\
发布日期： [2022 年6 月 16 日 16:33 UTC](https://forum.freemdict.com/t/topic/13481/14 "2022-06-16T16:33:16Z")

</div>

Glyphwiki产出是「花园字体」，可以免费下载。  
至於组出来的字，生成字型不是问题，问题在要调用字形必须有一个固定的「码位」，  
要麽是Unicode (新的字必须在Extension G, 0x30000之後) ，这个过程非常漫长，我们也没有主导权（汉字处理，日本人做得早，国际上的话语权也很大，近年不知情况有没有改善），招财进宝、陝西piang piang 麵 这样的字大概率不被收。这种情况就好比你生了小孩得跑到美国或日本费尽千辛万苦才上得了户口。  
要麽放在造字区 (Private User Area)，成了「黑户」，检索和输入都困难重重，也不利交換（你的造字区和别人的造字区不保证一样）。  
拼形式解决了交换码的问题，固定的交换码是缺字问题的核心。  
汉字该用字符串表达，就像英文单词一样，这样输入和检索都不是问题，这才是一劳永逸之道。

---

<div class="post-metadata">

作者： ![zheshijie](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/z/73ab20/32.png) [@zheshijie](https://forum.freemdict.com/u/zheshijie)\
发布日期： [2022 年6 月 17 日 23:50 UTC](https://forum.freemdict.com/t/topic/13481/15 "2022-06-17T23:50:16Z")

</div>

关于重叠提一个不专业的建议，是否可以增加一个代表位置信息的符号，比如要输入左讠右我，目前输入说兑我，会出现重叠，那么输入说兑我2，2代表右，出现在右边的我应该在glyphwiki有单独码位并且与正常的我有联系，只是不知道二者对应关系有没有什么规律

---

<div class="post-metadata">

作者： ![zheshijie](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/z/73ab20/32.png) [@zheshijie](https://forum.freemdict.com/u/zheshijie)\
发布日期： [2022 年6 月 18 日 00:22 UTC](https://forum.freemdict.com/t/topic/13481/16 "2022-06-18T00:22:53Z")

</div>

好像没什么规律，哈哈，那是否可以压缩，感觉压缩成三种可以覆盖绝大部分情形：扁形（上下），竖形（左右），以及四分之一大小

---

<div class="post-metadata">

作者： ![accelon](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/accelon/32/27309_2.png) [@accelon](https://forum.freemdict.com/u/accelon)\
发布日期： [2022 年6 月 18 日 05:32 UTC](https://forum.freemdict.com/t/topic/13481/17 "2022-06-18T05:32:18Z")

</div>

这个之前考虑过，但用「数字」控制组字会与其他数据相混，用「特殊符号」又不易输入，一直没想到好的解法。

---

<div class="post-metadata">

作者： ![accelon](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/accelon/32/27309_2.png) [@accelon](https://forum.freemdict.com/u/accelon)\
发布日期： [2022 年6 月 18 日 05:34 UTC](https://forum.freemdict.com/t/topic/13481/18 "2022-06-18T05:34:46Z")

</div>

如果对比例的变化不考究的话，大部份的字的确如此。只要将常用的偏旁部首，每个部首选几个合适的基字，可应付90%的缺字。
