hnz
Local, assertable calculation for hnz. Input is text; there is no network, disk, or device access.
Runs in your browserEvery computation happens in your browser — your data never leaves this device.
Input
Result
Local calculation
Enter data to see results
What this tool does
- Check this text locally
- Copy a deterministic result
Example
Input
hello
Output
花鸟字:hello(5 字,其中汉字 0 个)
画布 1200 × 480px · 每字格 216px · 字号 198.72px · 装饰密度 1
装饰元素 15 个(含字外花瓣环)
配色:主色 #D81E06 · 渐变到 #F97316 · 背景 #FFFBF2
说明:本工具做的是「花鸟字风格」的几何装饰排版(花瓣环 + 点缀 + 粗描边书法体),
不是手绘鸟虫书;同一输入与种子每次得到完全一样的图形,方便做头像、印章底图与海报标题。
字格坐标:
h → 格左上 (60, 132),格边 216px,装饰 3 个
e → 格左上 (276, 132),格边 216px,装饰 3 个
l → 格左上 (492, 132),格边 216px,装饰 3 个
l → 格左上 (708, 132),格边 216px,装饰 3 个
o → 格左上 (924, 132),格边 216px,装饰 3 个
SVG 源码:
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="480" viewBox="0 0 1200 480" role="img">
<defs>
<linearGradient id="ink" x1="0" y1="0" x2="1" y2="1"><stop offset="0%" stop-color="#D81E06" /><stop offset="100%" stop-color="#F97316" /></linearGradient>
</defs>
<rect x="0" y="0" width="1200" height="480" fill="#FFFBF2" />
<g font-family="STKaiti, KaiTi, system-ui, sans-serif">
<circle cx="117.42" cy="239.95" r="9.07" fill="#F97316" fill-opacity="0.8" />
<circle cx="190.34" cy="289.38" r="11.47" fill="#F97316" fill-opacity="0.8" />
<circle cx="177.3" cy="196.76" r="7.25" fill="#F97316" fill-opacity="0.8" />
<circle cx="339.71" cy="201.73" r="12.19" fill="#F97316" fill-opacity="0.8" />
<circle cx="389.5" cy="192.72" r="8.85" fill="#F97316" fill-opacity="0.8" />
<circle cx="463.16" cy="208.31" r="7.24" fill="#F97316" fill-opacity="0.8" />
<circle cx="682.43" cy="286.07" r="7.2" fill="#F97316" fill-opacity="0.8" />
<circle cx="657.82" cy="208.31" r="12.9" fill="#F97316" fill-opacity="0.8" />
<circle cx="540.09" cy="233" r="8.52" fill="#F97316" fill-opacity="0.8" />
<circle cx="805.55" cy="317.52" r="10.49" fill="#F97316" fill-opacity="0.8" />
<circle cx="833.57" cy="142.65" r="7.83" fill="#F97316" fill-opacity="0.8" />
<circle cx="741.53" cy="240.21" r="11.41" fill="#F97316" fill-opacity="0.8" />
<circle cx="970.2" cy="177.42" r="8.48" fill="#F97316" fill-opacity="0.8" />
<circle cx="1060.39" cy="169.88" r="7.46" fill="#F97316" fill-opacity="0.8" />
<circle cx="979.94" cy="266.04" r="9.44" fill="#F97316" fill-opacity="0.8" />
<text x="168" y="309.55" text-anchor="middle" font-size="198.72" font-weight="900" fill="url(#ink)" stroke="#D81E06" stroke-width="5.96" stroke-opacity="0.35">h</text>
<text x="384" y="309.55" text-anchor="middle" font-size="198.72" font-weight="900" fill="url(#ink)" stroke="#D81E06" stroke-width="5.96" stroke-opacity="0.35">e</text>
<text x="600" y="309.55" text-anchor="middle" font-size="198.72" font-weight="900" fill="url(#ink)" stroke="#D81E06" stroke-width="5.96" stroke-opacity="0.35">l</text>
<text x="816" y="309.55" text-anchor="middle" font-size="198.72" font-weight="900" fill="url(#ink)" stroke="#D81E06" stroke-width="5.96" stroke-opacity="0.35">l</text>
<text x="1032" y="309.55" text-anchor="middle" font-size="198.72" font-weight="900" fill="url(#ink)" stroke="#D81E06" stroke-width="5.96" stroke-opacity="0.35">o</text>
</g>
</svg>
data URI:
data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjQ4MCIgdmlld0JveD0iMCAwIDEyMDAgNDgwIiByb2xlPSJpbWciPgogIDxkZWZzPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJpbmsiIHgxPSIwIiB5MT0iMCIgeDI9IjEiIHkyPSIxIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjRDgxRTA2IiAvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI0Y5NzMxNiIgLz48L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTIwMCIgaGVpZ2h0PSI0ODAiIGZpbGw9IiNGRkZCRjIiIC8+CiAgPGcgZm9udC1mYW1pbHk9IlNUS2FpdGksIEthaVRpLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWYiPgogICAgPGNpcmNsZSBjeD0iMTE3LjQyIiBjeT0iMjM5Ljk1IiByPSI5LjA3IiBmaWxsPSIjRjk3MzE2IiBmaWxsLW9wYWNpdHk9IjAuOCIgLz4KICAgIDxjaXJjbGUgY3g9IjE5MC4zNCIgY3k9IjI4OS4zOCIgcj0iMTEuNDciIGZpbGw9IiNGOTczMTYiIGZpbGwtb3BhY2l0eT0iMC44IiAvPgogICAgPGNpcmNsZSBjeD0iMTc3LjMiIGN5PSIxOTYuNzYiIHI9IjcuMjUiIGZpbGw9IiNGOTczMTYiIGZpbGwtb3BhY2l0eT0iMC44IiAvPgogICAgPGNpcmNsZSBjeD0iMzM5LjcxIiBjeT0iMjAxLjczIiByPSIxMi4xOSIgZmlsbD0iI0Y5NzMxNiIgZmlsbC1vcGFjaXR5PSIwLjgiIC8+CiAgICA8Y2lyY2xlIGN4PSIzODkuNSIgY3k9IjE5Mi43MiIgcj0iOC44NSIgZmlsbD0iI0Y5NzMxNiIgZmlsbC1vcGFjaXR5PSIwLjgiIC8+CiAgICA8Y2lyY2xlIGN4PSI0NjMuMTYiIGN5PSIyMDguMzEiIHI9IjcuMjQiIGZpbGw9IiNGOTczMTYiIGZpbGwtb3BhY2l0eT0iMC44IiAvPgogICAgPGNpcmNsZSBjeD0iNjgyLjQzIiBjeT0iMjg2LjA3IiByPSI3LjIiIGZpbGw9IiNGOTczMTYiIGZpbGwtb3BhY2l0eT0iMC44IiAvPgogICAgPGNpcmNsZSBjeD0iNjU3LjgyIiBjeT0iMjA4LjMxIiByPSIxMi45IiBmaWxsPSIjRjk3MzE2IiBmaWxsLW9wYWNpdHk9IjAuOCIgLz4KICAgIDxjaXJjbGUgY3g9IjU0MC4wOSIgY3k9IjIzMyIgcj0iOC41MiIgZmlsbD0iI0Y5NzMxNiIgZmlsbC1vcGFjaXR5PSIwLjgiIC8+CiAgICA8Y2lyY2xlIGN4PSI4MDUuNTUiIGN5PSIzMTcuNTIiIHI9IjEwLjQ5IiBmaWxsPSIjRjk3MzE2IiBmaWxsLW9wYWNpdHk9IjAuOCIgLz4KICAgIDxjaXJjbGUgY3g9IjgzMy41NyIgY3k9IjE0Mi42NSIgcj0iNy44MyIgZmlsbD0iI0Y5NzMxNiIgZmlsbC1vcGFjaXR5PSIwLjgiIC8+CiAgICA8Y2lyY2xlIGN4PSI3NDEuNTMiIGN5PSIyNDAuMjEiIHI9IjExLjQxIiBmaWxsPSIjRjk3MzE2IiBmaWxsLW9wYWNpdHk9IjAuOCIgLz4KICAgIDxjaXJjbGUgY3g9Ijk3MC4yIiBjeT0iMTc3LjQyIiByPSI4LjQ4IiBmaWxsPSIjRjk3MzE2IiBmaWxsLW9wYWNpdHk9IjAuOCIgLz4KICAgIDxjaXJjbGUgY3g9IjEwNjAuMzkiIGN5PSIxNjkuODgiIHI9IjcuNDYiIGZpbGw9IiNGOTczMTYiIGZpbGwtb3BhY2l0eT0iMC44IiAvPgogICAgPGNpcmNsZSBjeD0iOTc5Ljk0IiBjeT0iMjY2LjA0IiByPSI5LjQ0IiBmaWxsPSIjRjk3MzE2IiBmaWxsLW9wYWNpdHk9IjAuOCIgLz4KICAgIDx0ZXh0IHg9IjE2OCIgeT0iMzA5LjU1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE5OC43MiIgZm9udC13ZWlnaHQ9IjkwMCIgZmlsbD0idXJsKCNpbmspIiBzdHJva2U9IiNEODFFMDYiIHN0cm9rZS13aWR0aD0iNS45NiIgc3Ryb2tlLW9wYWNpdHk9IjAuMzUiPmg8L3RleHQ+CiAgICA8dGV4dCB4PSIzODQiIHk9IjMwOS41NSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOTguNzIiIGZvbnQtd2VpZ2h0PSI5MDAiIGZpbGw9InVybCgjaW5rKSIgc3Ryb2tlPSIjRDgxRTA2IiBzdHJva2Utd2lkdGg9IjUuOTYiIHN0cm9rZS1vcGFjaXR5PSIwLjM1Ij5lPC90ZXh0PgogICAgPHRleHQgeD0iNjAwIiB5PSIzMDkuNTUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTk4LjcyIiBmb250LXdlaWdodD0iOTAwIiBmaWxsPSJ1cmwoI2luaykiIHN0cm9rZT0iI0Q4MUUwNiIgc3Ryb2tlLXdpZHRoPSI1Ljk2IiBzdHJva2Utb3BhY2l0eT0iMC4zNSI+bDwvdGV4dD4KICAgIDx0ZXh0IHg9IjgxNiIgeT0iMzA5LjU1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE5OC43MiIgZm9udC13ZWlnaHQ9IjkwMCIgZmlsbD0idXJsKCNpbmspIiBzdHJva2U9IiNEODFFMDYiIHN0cm9rZS13aWR0aD0iNS45NiIgc3Ryb2tlLW9wYWNpdHk9IjAuMzUiPmw8L3RleHQ+CiAgICA8dGV4dCB4PSIxMDMyIiB5PSIzMDkuNTUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTk4LjcyIiBmb250LXdlaWdodD0iOTAwIiBmaWxsPSJ1cmwoI2luaykiIHN0cm9rZT0iI0Q4MUUwNiIgc3Ryb2tlLXdpZHRoPSI1Ljk2IiBzdHJva2Utb3BhY2l0eT0iMC4zNSI+bzwvdGV4dD4KICA8L2c+Cjwvc3ZnPg==The result is computed by the local source. Nothing is uploaded.
Frequently asked questions
Is input uploaded?
No. Calculation stays local.
What about empty input?
The page stays empty; invalid parameters show an error.
Is the result stable?
The same input always yields the same output.
Keywords:hnz本地文本offlineunikit