// 请保证最先引入 cnchar 基础库,其他几个库顺序无所谓
var cnchar = require('cnchar');
var poly = require('cnchar-poly');
var order = require('cnchar-order');
var trad = require('cnchar-trad');
cnchar.use(poly, order, trad); // 参数顺序无关,三个参数可以任意选择
type 对象用户获取当前可用的 spell 、 stroke 、 orderToWord 、spellToWord、strokeToWord、idiom、 xhy、radical 参数类型:
var spellArg = cnchar.type.spell;
var strokeArg = cnchar.type.stroke;
var orderToWordArg = cnchar.type.orderToWord;
var spellToWordArg = cnchar.type.spellToWord;
var strokeToWordArg = cnchar.type.strokeToWord;
var idiomArg = cnchar.type.idiom;
var xhyArg = cnchar.type.xhy;
var radicalArg = cnchar.type.radical;
🚀 功能全面、多端支持的汉字拼音笔画 js 库
English | 在线试用/文档 | 备用文档地址 | 更新日志 | 应用:打字游戏、打字钢琴 | 反馈错误/缺漏 | Gitee | QQ Group: 958278438
展开目录
前言
感谢同学们对于 cnchar 的支持,由于 cnchar 词库来源于网络,虽然经过了本人的修改和扩充,但是还是难免有错误与缺漏之处,希望大家可以将使用中发现的错误与缺漏之处 反馈 给我(或自行修改提交,经过审查无误过后会合到 cnchar 中)
我要反馈错误或缺漏
关于该文档
由于文档较长,做一下简介,请按照需要阅读
0.快速使用
使用 npm 安装:
使用 script 标签使用:
更多详细使用示例 | 参数详细介绍
1.功能
2.概览
考虑到不同的需求,cnchar 的功能被拆分到以下七个库中,方便开发者按需取用:
3.安装
3.1 使用 npm 安装
安装基础库:
安装附加功能库:
当然您也可以按需安装其中的几个,但是
cnchar
这个基础库是必须安装的(draw、idiom、xhy、radical四个库可以独立使用)或者您可以通过安装
cnchar-all
来使用完整功能,这个库引用了上面的所有插件库3.2 cdn 引入
或使用以下cdn,包含了以上七个库
4.使用
4.1 webpack浏览器环境(有window对象)
npm 安装好几个库之后:
浏览器环境下会在
window
对象上定义cnchar
对象4.2 nodejs 等非浏览器环境
非浏览器环境下需要使用
cnchar.use()
方法加载功能库:其他使用方式与浏览器环境一致
4.3 原生浏览器环境
原生浏览器环境就需要使用 script 标签引入 js 文件:
5.API
类型声明:cnchar.d.ts | cnchar-order.d.ts | cnchar-trad.d.ts
注:该章节仅介绍API用法,更多使用实例请参考第六章
5.1 拼音笔画基础 API: spell & stroke
为了尽可能使 api 使用简单,该库设计了两个主要的非常简洁的 api,并保证调用方式一致:
该 api 设计一致,
string
表示要处理的汉字字符串关键在于可选参数的配置,参数配置将在第六章单独介绍
5.2 可视化绘制汉字: draw
类型声明:cnchar.draw.d.ts
cnchar-draw
库用于支持在浏览器环境下可视化绘制汉字,所以该库仅在浏览器环境下可用。绘制模式有 normal,animation,stroke,test 四种模式可选。5.2.1 使用
使用方式如下:
运行结果如下:
该库支持脱离cnchar 独立使用
使用cdn引用时,会在window对向上暴露
CncharDraw
对象5.2.2 参数
draw 的参数比较繁多,首先需要理解的是,draw 分为四种绘制模式:
以下是 options 的所有可选参数及描述,使用详情请参考在线文档:
5.2.3 绘制控制api
cnchar.draw 方法会返回一个 writer 对象
当
drawType = animation
时,以下几个api可以用户控制动画绘制模式分为
连续绘制
和单笔画绘制
,默认为连续绘制模式单笔划绘制模式需要
option.animation.autoAnimate = false
且调用drawNextStroke
方法5.2.3.1 startAnimation
当
option.animation.autoAnimate = false
时,调用该api可以开始绘制,且开启动连续绘制模式
5.2.3.2 pauseAnimation & resumeAnimation
当处于
连续绘制模式
时,调用这两个api可以暂停绘制和恢复绘制5.2.3.3 drawNextStroke
该 api 用于开启 单笔绘制模式
首先需要使用参数
option.animation.autoAnimate = false
5.2.4 微信小程序中使用
该库由 HanziWriter 驱动,目前仅支持在web环境下使用,如需微信小程序使用请参考 HanziWriter API
5.3 繁体、简体、火星文互转: convert
当引入
cnchar-trad
之后,cnchar 就具备了繁体、简体、火星文互转功能,使用cnchar.convert
对象上的方法,你就可以使用这个功能自从 v2.0.4 以后,cnchar 保留以下方法可供使用:
5.4 笔画序列推出原汉字: orderToWord
当引入
cnchar-order
功能库(版本 2.0.2 及以上)之后,cnchar 就支持了根据笔画名称序列推出原汉字的功能,使用方式如下:orderNames
是笔画名称序列args
是参数列表,可选值有['match','matchorder','contain','start','array','simple']
, 使用cnchar.type.orderToWord
可以查看可选值。 参数详细使用方法请参见第六章 orderToWord 参数orderNames
可以是空格分隔的笔画名称字符串或笔画名称数组,可用的笔画名称可以通过以下 api 查看笔画详细信息的如下,orderNames 只需要传入笔画名称即可,也就是下面 json 数据的 key 值
展开笔画详情
a
b
c
d
o
j
l
r
f
g
k
s
n
x
w
z
i
t
y
v
e
p
q
h
m
u
注:其中以下五对笔画没有进行区分,使用的是同样的字母表示: 卧钩 = 斜钩、横折弯 = 横折折、横折折折钩 = 横撇弯钩、横撇 = 横钩、竖折折 = 竖折撇
以下是一个例子:
如果输入的笔画不在
cnchar.orderToWord.orders
内,则该方法会打印一个错误提示哪些笔画有误,并返回一个空数组。5.5 通过拼音查询原汉字: spellToWord
spellToWord
方法用于根据拼音查询符合要求的汉字,用法如下:例子:
注:
spell 表示拼音,可以使用音调字母或音调数标方式: 例:
shàng 等价于 shang4
ü 可以使用 v 表示,例:
lü 等价于 lv
5.6 通过笔画数查询原汉字: strokeToWord
strokeToWord
方法用于根据笔画数查询符合要求的汉字,用法如下:例子:
5.7 成语功能
cnchar在2.2.0加入了成语功能,启用该功能需要安装
cnchar-idiom
功能库,该库可以独立于cnchar主库运行使用方式如下:
看一个具体例子
使用cdn引用时,会在window对向上暴露
CncharIdiom
对象5.8 歇后语功能
cnchar在2.2.0加入了歇后语功能,启用该功能需要安装
cnchar-xhy
功能库,该库可以独立于cnchar主库运行使用方式如下:
看一个具体例子
使用cdn引用时,会在window对向上暴露
CncharXHY
对象5.9 偏旁部首功能
cnchar在 2.2.5 加入了偏旁部首功能,启用该功能需要安装
cnchar-radical
功能库,该库可以独立于cnchar主库运行感谢
kewell-tsao
提供的 pr使用方式如下:
看一个具体例子
使用cdn引用时,会在window对向上暴露
CncharRadical
对象5.10 汉字、拼音工具方法
cnchar 将库内部使用的一些操作拼音和汉字的方法整理暴露出来,方便开发者便捷高效的操作拼音和汉字
5.10.1 查询拼音详细信息: spellInfo
spellInfo
方法用于查询拼音的详细信息,用法如下:例子:
除此之外,
spellInfo
上含有initials
和tones
两个属性,分别表示,所有可用的声母和音调:5.10.2 拼音音调操作: transformTone
transformTone
方法用于将有音调拼音转换为无音调拼音,且可以获取音调位置和声调使用方式如下:
tone 为可选参数,表示返回值spell是否需要带上声调,默认为 false
type 为可选参数,表示返回值spell设置大小写,默认为 ‘low’
transformTone spell参数 支持使用 v 代替 ü,支持使用末尾带数字表示声调,比如
lv 等价于 lü
shang4 等价于 shàng
5.10.3 是否是汉字: isCnChar
isCnChar
方法用于判断一个字符是否是汉字5.10.4 是否是多音字: isPolyWord
isPolyWord
方法用于判断一个字符是否是汉字5.10.5 比较拼音(汉字)大小: compareSpell
compareSpell
方法用于按照拼音比较拼音或汉字的大小,可用于通讯录姓名拼音排序等场景该方法支持按照拼音和声调比较,如需排序可以参考
sortSpell
方法tone参数表示是否需要按照音调比较,默认为false
该方法返回一个字符串,’more’, ‘less’, ‘even’ 分别表示 spell1 大于、小于、等于 spell2
例
5.10.6 比较汉字笔画数大小: compareStroke
compareStroke
方法用于按照笔画数比较汉字大小,可用于按照姓名首个汉字笔画排序等场景,排序可以参考sortStroke
方法该方法支持输入汉字或数字,汉字可以输入多个
该方法返回一个字符串,’more’, ‘less’, ‘even’ 分别表示 stroke1 大于、小于、等于 stroke2
例子:
5.10.7 根据拼音排序: sortSpell
sortSpell
方法用于按照拼音排序汉字或拼音,支持输入数组或字符串,支持按照声调排序、支持倒序spells参数可以是数组或字符串
当为数组时,数组元素可以时汉字或拼音,返回的是数组
当为字符串时,字符串必须全部是汉字,返回的是字符串
该方法可选参数有两个,’tone’ 表示按照音调排序,’desc’ 表示倒序,默认不区分声调且升序。请看一些例子
5.10.8 根据笔画数排序: sortStroke
sortStroke
方法用于按照笔画数排序汉字strokes参数可以是数组或字符串
当为数组时,数组元素可以时汉字或数字,返回的是数组
当为字符串时,字符串必须全部是汉字,返回的是字符串
该方法有一个可选参数,’desc’ 表示倒序,默认升序。请看一些例子
5.10.9 将数字表示的声调转为拼音声调: shapeSpell
shapeSpell
将数字表示的声调转为拼音声调如
lv2
会被转换成lǘ
,ta1
会被转换成tā
, 方便用户输入5.11 自定义数据
由于 cnchar 数据来源于网络,虽然经过了大量修改,但是还是难免会有错漏
所以 cnchar 提供了修改默认数据的api,方便开发者修改与添加数据
5.11.1 setSpell
设置拼音数据
5.11.2 setSpellDefault
设置多音字的默认读音
5.11.3 setStrokeCount
设置汉字笔画数
5.11.4 setPolyPhrase
设置多音词的读音, 依赖
cnchar-poly
库5.11.5 setOrder
设置汉字笔顺, 依赖
cnchar-order
库添加的笔顺必须是字母,详情对应关系参见 stroke-table
5.11.6 setRadical
设置汉字偏旁部首, 依赖
cnchar-radical
库5.11.7 addXhy
添加歇后语, 依赖
cnchar-xhy
库5.12 其他 api
5.12.1 .use()
这个 api 的功能是显式启用
poly
、order
、trad
三个功能库这个启用在非浏览器环境(比如 nodejs 等)中是必须的,使用如下:
在浏览器环境中则无需调用:
5.12.2 .type
type 对象用户获取当前可用的
spell
、stroke
、orderToWord
、spellToWord
、strokeToWord
、idiom
、xhy
、radical
参数类型:spellArg 最多可用值:
['array', 'low', 'up', 'first', 'poly', 'tone', 'simple']
strokeArg 最多可用值:
['letter', 'shape', 'count', 'name', 'detail', 'array', 'order', 'simple']
orderToWordArg 最多可用值:
['match','matchorder','contain','start','array','simple']
spellToWordArg 最多可用值:
['simple','trad','poly','alltone','array']
strokeToWordArg 最多可用值:
['simple','trad','array']
idiomArg 最多可用值:
['char','stroke','spell','tone']
xhyArg 最多可用值:
['fuzzy','answer','second']
radicalArg 最多可用值:
['array']
以上值皆为 json
具体用法第六章讲到
5.12.3 .check
该值是一个 布尔类型,用于控制是否开启参数校验,默认值为 true
参数校验能够对
spell
和stroke
传入的参数进行检查,在控制台显示无效·
,忽略
和冗余
的参数5.12.4 .version
获取当前版本:
5.12.5 .plugins
当前使用的功能库列表,最多的情况为
["order", "trad", "poly"]
6.参数介绍
6.1 spell 参数
参数调用如下,所有 arg 参数都是可选的
arg 参数信息如下:
6.2 stroke 参数
参数调用如下,所有 arg 参数都是可选的
arg 参数信息如下:
6.3 orderToWord 参数
参数调用如下,所有 arg 参数都是可选的
arg 参数信息如下:
cnchar-trad
后有效关于匹配参数,优先级为 match > matchorder > contain > start > 默认
不含有匹配参数时表示使用全匹配,即汉字笔画数与传入的 orders 完全一致
6.4 spellToWord 参数
参数调用如下,所有 arg 参数都是可选的
spell 表示拼音,可以使用音调字母或音调数标方式: 例:
shàng 等价于 shang4
ü 可以使用 v 表示,例:
lü 等价于 lv
arg 参数信息如下:
cnchar-trad
后有效注:
simple
与trad
参数若是都不存在,则当引入cnchar-trad
时会同时匹配繁简体,没有引入cnchar-trad
时则只匹配简体6.5 strokeToWord 参数
参数调用如下,count表示笔画数,所有 arg 参数都是可选的
cnchar-trad
后有效注:
simple
与trad
参数若是都不存在,则当引入cnchar-trad
时会同时匹配繁简体,没有引入cnchar-trad
时则只匹配简体6.6 idiom 参数
参数调用如下,value表示查询对象,可以试拼音汉字笔画数,所有 arg 参数都是可选的
注:优先级
spell
>stroke
>char
6.7 xhy 参数
参数调用如下,value表示歇后语查询对象,可以是歇后语的第一句或第二句,所有 arg 参数都是可选的
6.8 radical 参数
参数调用如下,value表示需要查询偏旁的汉字,可以是字符串或数组
6.9 使用实例大全:
6.9.0 安装使用
npm 方式
script 标签引用 方式
6.9.1 cnchar 基础库功能
备注:
cnchar.spell(string,...args)
cnchar.stroke(string,...args)
6.9.2 cnchar-poly 库功能
该库用于准确识别多音词,同样支持 6.3.1 中的其他参数功能
6.9.3 cnchar-order 库功能
该库用于查询汉字笔画顺序、笔画名称等,返回值为 数组
根据笔画名称序列推出原汉字
6.9.4 cnchar-trad 库功能
该库用于支持繁体字火星文转换及为拼音笔画数等基本功能提供繁体字支持
6.9.4.1 convert 字体转换
6.9.4.2 spell 和 stroke 方法
该库增加了对于繁体字的拼音笔画功能扩展,其他基础用法与 基础库一致:
6.9.5 cnchar-idiom 库功能
该库为cnchar扩展了成语功能
6.9.6 cnchar-xhy 库功能
该库为cnchar扩展了歇后语功能
6.9.7 cnchar-radical 库功能
该库为cnchar扩展了偏旁部首功能
6.9.8 工具方法
cnchar提供了一些汉字工具方法,方便开发者更便捷高效地操作拼音和汉字
6.9.8.1 spellInfo
6.9.8.2 isCnChar
6.9.8.3 transformTone
6.9.8.4 compareSpell
6.9.8.5 compareStroke
6.9.8.6 sortSpell
拼音支持声调数字模式(lv2=>lǘ)
6.9.8.7 sortStroke
6.9.8.8 isPolyWord
6.9.8.9 shapeSpell
6.9.8.10 setSpell
拼音支持声调数字模式(lv2=>lǘ)
6.9.8.11 setSpellDefault
拼音支持声调数字模式(lv2=>lǘ)
6.9.8.12 setStrokeCount
6.9.8.13 setOrder
依赖
cnchar-order
添加的笔顺必须是字母,详情对应关系参见 stroke-table
6.9.8.14 setPolyPhrase
拼音支持声调数字模式(lv2=>lǘ)
依赖
cnchar-poly
6.9.8.15 setRadical
依赖
cnchar-radical
6.9.8.16 addXhy
依赖
cnchar-xhy
7.应用例子
汉字打字游戏 | 打字弹钢琴
致谢
cnchar-draw
库功能基于 hanzi-writer, 特此表示感谢!