最近闲着折腾了个开源小玩意,用 python 写了个生成米字格字帖的脚本。平时练字要么买现成纸要么手抄,嫌麻烦,就想能不能把想练的字丢进去自动排版打印。
先扒了几个现成开源项目,有的太重有的不灵活,干脆自己拼。好家伙开源字体库加 pillow 出 pdf,调格线粗细和字间距折腾了大半宿。最爽的是能随便塞字,比如临兰亭序就只排那几百字,省事。
代码糙但够自己用,丢 github 上了。有同好的老哥直接拿去改哈。
最近闲着折腾了个开源小玩意,用 python 写了个生成米字格字帖的脚本。平时练字要么买现成纸要么手抄,嫌麻烦,就想能不能把想练的字丢进去自动排版打印。
先扒了几个现成开源项目,有的太重有的不灵活,干脆自己拼。好家伙开源字体库加 pillow 出 pdf,调格线粗细和字间距折腾了大半宿。最爽的是能随便塞字,比如临兰亭序就只排那几百字,省事。
代码糙但够自己用,丢 github 上了。有同好的老哥直接拿去改哈。
有个事不知道该说不该说,有些开源字库协议压根不让嵌pdf,你项目里用的啥字体~
想当年我也爱折腾这种小玩意,刚写好就急着分享出去。其实糙点不打紧,自己用得顺手最要紧。C’est la vie
你帖子里说"开源字体库加 pillow 出 pdf",这块我顺手帮你补全一个容易踩的坑:所谓"开源字体"其实不是一个统一授权类别,往 GitHub 上一扔让别人"拿去改",字体本身的许可可能并不允许这么干。
举几个中文环境里常被笼统叫成开源的例子:思源黑体/宋体(Source Han)是 SIL Open Font License,确实能自由改、再分发甚至商用,约束基本只有"改了不能沿用原名";但站酷系列大多是个人非商用免费,你打包进一个别人能拿去用的工具里,性质就变了;方正、汉仪那批更不用说,连嵌入 PDF 都得单独谈授权。所以你代码里要是 hardcode 了字体路径、或者干脆把字体文件一起提交了,最好在 README 里写清来源和许可,不然"开源小工具"在字体这一点上其实未必真开源。
严格来说
另外你提到"临兰亭序就只排那几百字"——神龙本兰亭序正文是 324 字(不含落款印章),这个量级刚好一把排进十几页 A4,米字格密度调一下很合适。米字格和九宫格、田字格的辅助线逻辑不一样,那两条对角线对掌握间架结构帮助最大,你是按"横竖中线+对角线"四线画的吧?
Pillow 那块你调格线粗细折腾大半宿,其实线宽和留白有个经验比例:框线 0.5pt 左右、单字占格 70%,打印出来最清楚,回头可以做成参数暴露出来,省得每次改代码重跑。
真要长期维护,建议字体层直接依赖 OFL 那批,省心不少。
我也老嫌手抄字帖麻烦,能只排兰亭序那几百字这个最戳我,回头去你github翻翻
前排哈哈 我是吉他党 手留着按弦呢 练字这种坐得住的活儿我是真没耐心</arg_value:6124c78e>
这lazy approach太对我胃口了 当年手抄心经抄到怀疑人生 楼主这脚本我先fork为敬哈哈
有个细节想跟你捋一下:你说临兰亭序只排那几百字,兰亭集序正文其实三百二十四字,米字格里一字一格,排版倒省事。麻烦出在字体,兰亭是行书,你脚本里若挂系统默认楷体,练出来的笔意跟原帖根本不是一回事。
开源行书字库里像样的兰亭本极少,大多是后人摹刻翻制,冯承素神龙本那种牵丝映带的细节基本留不住。我前阵子想找个数字版对着临,翻了一圈最后还是回到扫描拓本打印。你这脚本若能直接铺张图片当底模,比纯靠字体实用得多。
你用的哪套字库?回字间距那块我也想琢磨下。
好家伙 pillow 出 pdf 这路子…,我之前练字也是手抄懒得买纸。能调成田字格不,家里娃老师点名要田字格
你那个"有的太重有的不灵活,干脆自己拼"的判断,我想稍微掰一下,这俩词说的是两码事。嗯
"重"通常意味着项目本来瞄准的就不是你这种"只排几百字临帖"的窄需求,西文 kerning、竖排、标点挤压那些模块对你纯属 dead weight,弃选完全合理。但"不灵活"往往不是功能缺失,而是扩展点藏得深、文档稀烂,你改一处得顺藤摸瓜翻半天源码,算下来自己拼确实更省心,定制的边界全捏在自己手里。
我前年也给朋友家小孩弄过描红本,最后没用现成库,就因为想要个"字写歪了自动标红"的小功能,开源里压根没有。你这米字格属于通用需求了,repo 发一下?想看看你中文字体嵌入用的哪种 fallback 处理。
我前阵也琢磨过这事。pillow出中文pdf有个坑,不手动挂ttf路径字会变方框。你那能换字体不?
开源字体库得留神,不少字体 license 限制商用。自己练字没事,传 github 最好把字体来源和授权也标一下。