二十字连成一串
兰亭书斋的书法助教虞舜华要给少儿班做《兰亭序》开篇描红,文本框里贴"永和九年岁在癸丑暮春之初会于会稽山阴之兰亭",实测 20 字。空格、Tab、换行会被 replace 全删掉,再按 "UTF-16" 码元拆成单字,所以分行粘没用,工具只认一串连续的字;占两个码元的 emoji 或生僻字会被拆成两半、各占一格。真要分行靠下一步的"每行格数",不是靠敲回车。

三个滑杆都等按钮
三个滑杆是格子边长 "90"、描红深浅 "25"、每行 "8" 格。边长同时决定画布和字的大小;深浅底层是 globalAlpha,25 换算成 0.25,且有 0.05 下限,改的是字多透不是调成灰色。20 字按每行 8 个折成 3 行。三个滑杆都没有实时监听,拖动只有屏幕上那个数字在动,画布是旧的,得点"生成"才把新值读进去重算。这组数偏少儿友好:格大、影淡、行短。

按格子算画布
"生成"和"下载 PNG"并列,点前者才读三个滑杆、算尺寸、刷白底画格线写淡字,每次都 "build()" 出一张新画布替掉旧的。提示报 760×310,canvas 实测也是 "760×310"。源码 W = N*C+40、H = rows*C+40,C=90、N=8,20 字折成 ceil(20/8)=3 行,宽 = 8 × 90 + 40 = 760,高 = 3 × 90 + 40 = 310。非白像素 26397,说明格线和淡字确实画上了。白底 3 行每行 8 格共 24 格,前 20 格有淡灰范字、后 4 格空着,字号按 C*0.72 加粗居中。

拿文件前先点生成
"下载 PNG"用 toBlob 把当前 canvas 编码,再配 a.download 触发本地下载,拿到的文件叫 "copybook.png",不随文字、参数或次数变,多下几次会互相覆盖,得自己改名归档。关键是它导出的是当前画布而非当前参数:改了滑杆却没点生成,拿到的是上一次 build() 留下的旧图。实测 PNG 760×310,与提示、画布三处一致。打印前先确认画布是刚生成的那张。

企业知识网( www.qiyezhishi.com )提供的结果为参考性内容,不构成法律、税务或投资建议。具体请以主管部门口径与最新法规为准。