Mahjim 麻将输入法(雾
项目: https://github.com/black-desk/mahjim
如果真有人用这玩意的话我会好好维护下去的(
demo 地址有变化, 也有了一些新功能, 这里重新粘贴一下github文档
PS: b站的专栏对markdown十分不友好

mahjim
a tool to generate mahjong image
这是一个用来快速生成麻将图案的工具.
支持日麻/国标两种图案


支持吃,碰,明/暗杠的表示






牌背颜色有两种可选:


在我书写这个文档的时候, 有一个demo, 如果需要将这个工具应用在您的文章中, 请保存生成的图片, 而不要只留有一个链接在你的文档中.
你也可以将这个程序运行在你自己的电脑上, 来获得更稳定的体验.
语法说明
使用方法
以上面提到的 demo 为实例, 我们简单学习一下如何使用这个工具, 它运行在 https://mj.black-desk.cn 这个地址, 你可以像这样来使用它:
字符串 123m
代表 一万二万三万, 那么当你访问 https://mj.black-desk.cn/123m 就可以得到一张如下所示的图片:

本文档中的图片也都是这么生成的.
推荐配合 markdown 编辑器使用本工具, 更方便书写
描述语法
日麻中有用 p s m 来表示饼子, 条 (索) 子, 万字的习惯, 并且字牌按照 东南西北白发中 的顺序编号后用 z 表示, 比如 5z 表示白. 但是中国模式下, 字牌的顺序并不一样, 顺序为 东南西北中发白
1234567z

1234567z?country=cn
:

看几个简单的例子: 可以用 1s2s3s
表示一条二条三条:

和上面字牌的情况一样, 数字牌也支持简写, 比如 123p
和 1p2p3p
是等价的:
123p
:

1p2p3p
:

为了输入方便, 我们也可以直接用汉字来代表字牌, 例如 白白白
代表三张白:
白白白
:

当然我们可以输入 666z
来表示三张发:
666z
:

特别地,当使用汉字表示牌时可以简写, 例如 3中
和 中中中
也是等价的:
3中
:

特别的, +
表示牌背:
+
:

多个并排的牌背也可以简写, 比如 4+
:
4+
:

也支持春夏秋冬和梅兰竹菊, 但是不能以z的形式输入,只能使用汉字:
春夏秋冬梅兰竹菊

汉字输入暂时不支持繁体
牌的变化
当发生吃碰杠的时候, 有一些牌会被横置, 在以上规则的基础上, 用 _1m
表示横置的一万:

那么我吃上家的 1m 形成的面子 123m, 可以如此表示
_123m
:

碰的例子也类似:
中_中中
:

而加杠形成的双横置以 ^
表示, 例如 2中^中
, 表示 碰下家的中之后加杠:

当然, 使用 77^7z
, 也可以表示相同的事情:

你也可以用另一种方式表示暗杠:
+^中+
:

本工具只是一个图片生成器, 并不检查牌是否合理, 所以实际上你也可以摆出一些很诡异的牌型, 比如:
2中^发2白
:

_6_6_6_6p
:

虽然不知道有什么用, 但是牌背是可以被横置的:
_+
:

控制参数
日麻与国标 country
可以在整个字符串的后面加上参数 country=cn
或者 country=jp
来说明希望生成 国标/日麻 图案, 如果不做说明默认是日麻图案, 例如以下分别是 3白?country=cn
和 3白?country=jp
, 不添加此参数时默认为日麻图案.


这里展示一下两种风格下所有的牌画:


缩小和放大 scale
默认生成的每张牌的大小为 70px x 100px, 如果需要更大或者更小的图片请使用缩放功能, 例如在整个字符串的最后加上参数 scale=1.2
可以将图片放大为原来的 1.2 倍, 该参数不能大于 10, 如果输入了一个 >10 的参数, 那么返回结果就是一张 x10 的图, 以下分别是123m?scale=1.2
和123m?scale=0.5


牌背颜色 color
可以使用 color=orange
来获得橙色的牌背, 此参数不存在时默认为蓝色牌背.

牌河 river
参数river=true
可以开启牌河生成模式, 牌河模式下 ^
的意义是模切, _
一样是横置, 一排放置 6 张牌,以下是1^233_4^5^6^7^8^9s?scale=0.7&river=true

出于实现方便, 立直牌靠下放置.
TODO: 这个功能目前并不完善, 比如立直之后本来应该默认就全是模切.
多参数
同时使用多个参数时, 使用 &
来连接不同的参数. 可以看一下上节的牌河生成, 很好懂的.
间隔
可以在牌与牌之间插入 |
来制造空隙, 每一个 |
是 1/10 个牌的宽度, 可以通过形如 3|
的方式来增加间隙, 例如以下分别是 123s|456p
和 123s5|456p


由于要使用n|
的方式表示间隔的大小 ,所以 123m 456m 并不能写成 123|456m
. 需要写成 123m|456m
本地安装
你可以在 Release 页面下载与系统对应的可执行文件, 通常来说, 作为一个 windows 用户, 你需要下载 mahjim_windows_amd64.exe, 双击运行之后它监听的地址是 localhost:8080/
, 之后你只要在浏览器里打开这个地址(你可以点击 快速打开), 之后就可以使用了. 如果你使用 markdown 就可以通过输入 
来获得一张图片了.
Docker
使用命令 docker run -d --name mahjim -p 8080:8080 blackddesk/mahjim
即可启动容器
鸣谢
感谢图片来源 @Neerdge
TODO
性能测试
牌河生成模式时, 立直之后默认模切.