堆砌几组狮子、老鹰、十字架和皇冠做随机组合,很容易做出一个看似像样的徽章生成器。但这种图库剪贴画的拼凑产物,既没有设计逻辑,也没有辨识灵魂。
开源纹章生成引擎 Iron Arachne 的开发者 Ben Overmyer 在其博客直指这个核心痛点。当我们要用程序生成可信的视觉标识时,面对的从来不是图形素材的排列组合,而是一整套跨越数百年的形式规则体系。西方纹章系统与日本家纹给出了两种截然不同、却同样严密的生成逻辑:一套是严格遵循词法与句法的编译器,另一套则是极致的单色几何约束求解器。
纹章不是剪贴画,而是一门编译语言
西方欧洲纹章学之所以适合程序员建模,是因为它早在中世纪就建立起了一门受限自然语言——纹章图解(Blazon)。纹章官只需念出一段特定语法结构的文本,哪怕从未见过盾牌实物的画师,也能按部就班重构出精准的图案。

Overmyer 开源的 Iron Arachne 引擎正是基于 Go 语言将这套系统工程化。在底层架构上,它暴露出 Generate()、Device、Field、ChargeGroup、RenderToSVG 和 RenderToBlazon 等核心接口。它的生成逻辑并没有从画布像素出发,而是完全模拟历史规则:先在平分、纵分(per pale)、横分(per fess)或四等分(quarterly)中确定盾面底色分割,再在金属色、色彩、皮毛(furs)与污迹(stains)构成的调色盘中抓取填充,叠加条纹(barry)或方格(chequy)等变体,最后成组挂载图案(charges)。
这中间最核心的门槛是条件生成约束。比如著名的色彩法则(Rule of Tincture),规定金属色(金/银)不得叠放于金属色之上,色彩(红/蓝/黑/绿/紫)亦不得压在色彩之上。这种限制源自战场高对比识别的现实需求。它证明了纹章是一套结构完备的语法树:底层状态决定上层节点的合法性,最后既可以编译为 SVG 矢量图,也可以反向输出标准文本描述。
负空间与几何约束:日本家纹的另一条管线
如果照搬西方纹章的图层堆叠思维去写日本家纹(Mon/Kamon),程序就会彻底失灵。家纹没有中世纪欧陆那种漫长的文本图解传统,但它有着更极端的几何纯粹性。

传统日本家纹起源于平安时代的贵族车服标记与战国时代的旌旗,其设计目标极其明确:在远距离观察与微缩刺绣场景下保持极佳可读性。因此,它普遍围绕单一植物、器皿或几何主题做高度抽象,采用圆形闭合框架,完全依赖黑白单色或单一对比度来呈现负空间穿插。
以德川家的三叶葵纹为例,其身份识别并不来自简单的叶片累加,而取决于特定形状在圆心周围的精确旋转、间距与外廓闭合。在算法实现上,家纹更贴近于几何变换管线:读取基础图元、执行径向阵列、依照模板缩放并施加布尔蒙版。
尽管 Overmyer 在文章中梳理了这一双轨构想,但理想与工程现实仍有距离。Iron Arachne 此前曾提供过名为 ironarachne/armsapi 的 Docker 化服务,其生产代码库如今已迁移至 GitLab。但翻阅公开仓库会发现,它依然是一个纯粹的西方盾徽生成器,家纹生成逻辑尚未真正落地。业界至今仍缺少一套能同时驾驭这两种哲学的统一编译器。
随机性救不了设计:生态工具的真正分野
程序化纹章与徽标工具并非新鲜事物,但整个开发者生态早已沿着不同的妥协路径分化出清晰流派:

- Azgaar Armoria.采用 JS 和 Svelte 编写,代码开源遵循 MIT 协议,但内部使用的部分图形资产带有独立授权限制。它走的是轻量级交互路线,偏向直观拖拽与简单随机。
- Heraldicon.放弃纯程序化推演,将重心放在极其细致的结构化图层拼接上,适合手动精细调优。
- DrawShield.纯粹的硬核编译器路线,专注文本 Blazon 到矢量盾面的语法解析,强调对古典纹章学规矩的字面忠诚。
- 在线家纹工具.大多退化为静态素材的排列器,缺少对线条张力与视重的数学计算。
社区玩家与开发者对此早有清醒判断:随机性绝不等于设计辅助。大量工具之所以沦为生成视觉垃圾的剪贴板,恰恰是因为缺乏对视重平衡与负空间感知的算法建模。无序叠加的图层只会制造喧闹,无法形成具备识别力的品牌印记。
规矩不是创作的枷锁,而是避免视觉系统沦为平庸拼贴的唯一护栏。
- 结论.现代品牌标识系统需要的不是随机抽卡的生成模型,而是具备形式文法验证与矢量几何约束的编译引擎。
生成式扩散模型虽然能以极低成本画出一面细节斑斓的奇幻盾牌,但它吐出的像素团既缺乏合法的矢量节点,也无法经受微缩场景下的可读性检验。八百年前的纹章图解语法与战国家纹的几何规范,早已为现代品牌标识的程序化生成写好了底层的约束逻辑。如果抛弃了形式语言的骨架,所谓自动化生成,不过是在制造更多算力包装下的视觉噪点而已。
