

This beautiful afternoon, I sit by the pine trees munching on brownies trying to decide if I should name this book γ倩η±γorγ倩θγ.... (The difference is in the radical of the second character "basket" vs "blue"). Then it occurs to me, why not both? Yes, I decide I want a beautiful Chinese calligraphy that can be read both ways! It needs to be abstract and subtly metaphorical: ε’¨δΈθθ²οΌε€©η±δΊ¦ε€©θ (meaning the ink carries hidden colour in such a way that it reads like both "sky basket" and "sky blue".) So like most of us do in 2025, I turn to my AI buddies for help.
Here is what I want. Try imagine it with your human intelligence first.
...γ倩η±γin Chinese calligraphy so that: The black ink strokes formγ倩θγbut with the addition of two subtle strokes (abstract e.g. as water droplet dots), the visual impression evokesγ倩η±γ(sky blue) Artistic Concept: Write γ倩θγ in elegant calligraphy using black ink:γ倩γat the top, upright and spacious like the sky γθγbelow, complex yet balanced like a woven basket... Then, add two small translucent water droplet dots (possibly in very light blue) under the radical θΉ inγθγ, mimicking the η«Ή inγη±γ. θει θη«Ήει δΈδΈζ¨£ηι¨εη¨θθ²ε―« Visual and Symbolic Effect: From a distance, or with a viewerβs imagination, the droplets complete the transformation from θ to η± the original meaning βheavenly basketβ (倩η±) becomes double-layered with the carefree feeling of sky blue (倩θ)...
After trying lots of variations of prompts in both English and Chinese, I give up on ChatGPT's Dalle model series. ChatGPT's most attempts are simply wrong. Even the best attempt (see below) lacks the calligraphy strokes let alone the emotion and creativity of a true calligrapher. They certainly are not what I'm looking for.

I ended up testing all the usual toolsβand even signing up to some not-so-usual ones that claim to be able to write Chinese calligraphy well:
DALLΒ·E (diffusion-based) β beautiful in many domains, but struggled with precise character rendering and stylistic control.
Stable Diffusion (with LoRA & fine prompts) β got us closer, but the strokes were often warped, and it couldnβt handle γη±γwith the integrity calligraphy demands.
NightCafe β easy to use, but outputs felt more decorative font than brush-born.
Thereβs An AI For That β yes, but many are poorly-performing...
YesChat Calligraphy plugin β font-based generation, better control, and we even layered droplets with PIL. It was cleverβ¦ but lacked soul. Actually, it lacked the whole second character. LOL. π€£




Some of Yeschat's attempts are interesting. It actually wrote a script to draw it. Here's the script:
// Load the custom Chinese calligraphy font
font_path = "/mnt/data/ζ΅·ηΊ³ηΎε·-δΈι¦εε€δΉ¦ζ³δ½.ttf"
font_size = 240 # for individual character sizing
// Create a blank white image for 2 characters vertically (300x600)
image_width = 300
image_height = 600
background_color = "white"
text_color = "black"
img = Image.new("RGB", (image_width, image_height), color=background_color)
draw = ImageDraw.Draw(img)
font = ImageFont.truetype(font_path, font_size)
// Characters to draw
characters = ["倩", "η±"]
// Draw each character in its respective 300x300 box, vertically aligned
for i, char in enumerate(characters):
w, h = draw.textsize(char, font=font)
x = (image_width - w) // 2
y = (300 * i) + (300 - h) // 2
draw.text((x, y), char, font=font, fill=text_color)
// Add two small translucent blue dots above the "θΉ" of η± to hint at "θ"
// Position estimated: near the top of the second 300x300 box
dot_radius = 6
dot_color = (173, 216, 230, 180) # light blue with some transparency
// Convert to RGBA for transparency support
img = img.convert("RGBA")
draw = ImageDraw.Draw(img)
// Estimate positions for the water droplets (based on character layout)
dot_positions = [(120, 330), (160, 330)] # rough x positions over "θΉ" of η±
for pos in dot_positions:
x, y = pos
draw.ellipse((x - dot_radius, y - dot_radius, x + dot_radius, y + dot_radius), fill=dot_color)
// Convert back to RGB and show
img = img.convert("RGB")
output_path = "/mnt/data/TianLan_artistic.jpg"
img.save(output_path)
// Display the image
plt.imshow(img)
plt.axis('off')
plt.title("Artistic Calligraphy: ε€©η± evoking 倩θ")
plt.show()
Wow. That's disappointing. I guess diffusion based models currently lacks that level of symbolic compositional control that can be inputed from prompts...
Makes you wonder what state-of-art academic research has been able to achieve so far? Same here.
My favourite research buddy recently is Scispage. It's great. Just try it if you are reading this line and haven't used it already. In short, there is a lot of really neat diffusion-based models and GAN-based models good at generating individual callgrahic characters with stylistic precision; however, none give us the spatial and symbolic control we need to seeγθγthroughγη±γ.
Model | Year | Method | Input Control | Limitation |
Calliffusion | 2023 | Diffusion | Chinese prompts + calligraphy style label | Only one character at a time; no layout or symbolic overlay support |
CalliffusionV2 | 2024 | Diffusion + LoRA + Multi-modal | Natural language prompt + image guidance | No support for multi-char layout or compositional creativity |
Moyun | 2024 | Diffusion + Vision Mamba | Triplet input (script, calligrapher, character) | No prompt-based or image-based control; layout & symbolic overlays not supported |
DP-Font | 2024 | Diffusion + PINN (Physics-Informed Neural Network) | Attribute + stroke constraints |
So someone wants out there reading wants to give it a go? I think what we really need is a hybrid of:
Fine control over layout, stroke dynamics, and multi-character composition
Support for overlays or compositional semantics (e.g., knowing where to place droplets symbolically)
Promptability, so we can say things like: βWrite ε€©η± in a way that some might read it as 倩θ. ηηΎ²δΉβs style, like itβs under a sky before rainβ
Stroke-level output, so we can animate or render brush pressureβnot just pixels
Perhaps start by:
Fine-tuning a diffusion model like Calliffusion with multi-character layout data?
Training on annotated datasets with symbolic annotations (like βhere, a dot implies somethingβ)?
Using Hanzi stroke decomposition datasets to reconstruct SVGs and animate the strokes?
Blending this with a custom rendering engine that understands both brush and poetry?
Who knows, maybe yours will be able to take a set of Chinese character, a text prompt and even a image and paint something magical like this video my grandma shared with me earlier last week... speaking of which, maybe that's why the idea of calligraphic art came to me this beautiful afternoon...

Liao, Q., Li, L., Fei, Y., & Xia, G. (2024). CalliffusionV2: Personalized natural calligraphy generation with flexible multi-modal control. arXiv. https://doi.org/10.48550/arXiv.2410.03787
Liao, Q., Li, L., Fei, Y., & Xia, G. (2023). Calliffusion: Personalized Chinese calligraphy generation with diffusion models. ICCC 2023.
Wu, S. J., Yang, C.-Y., & Hsu, J. Y. (2020). CalliGAN: Style and structure-aware Chinese calligraphy character generator. arXiv. http://export.arxiv.org/pdf/2005.12500
Liu, Z., Li, Y., Wang, K., Wu, Y., & Sun, W. (2024). Moyun: A diffusion-based Chinese calligraphy generation model with triple-label control. arXiv. https://arxiv.org/abs/2410.07618
Zhang, X., Han, T., Bai, S., Liu, H., & Xie, E. (2024). DP-Font: Diffusion-based calligraphy font generation with physical constraints. IJCAI 2024.
Liao, Q., Li, L., Fei, Y., & Xia, G. (2023). CalliPaint: Chinese calligraphy inpainting with diffusion models. Workshop on AI for Cultural Heritage, ICCV 2023.
Ma, L., Chen, C., Jin, X., Wang, Y., & Zeng, B. (2023). GlyphDraw: Integrating glyph control into diffusion for better Chinese text generation. arXiv. https://arxiv.org/abs/2303.17870
Lu, Y., Zhao, Y., Pan, J., & Han, J. (2024). AnyText: Scene text editing and generation with diffusion models. ModelScope, Alibaba DAMO Academy.
This beautiful afternoon, I sit by the pine trees munching on brownies trying to decide if I should name this book γ倩η±γorγ倩θγ.... (The difference is in the radical of the second character "basket" vs "blue"). Then it occurs to me, why not both? Yes, I decide I want a beautiful Chinese calligraphy that can be read both ways! It needs to be abstract and subtly metaphorical: ε’¨δΈθθ²οΌε€©η±δΊ¦ε€©θ (meaning the ink carries hidden colour in such a way that it reads like both "sky basket" and "sky blue".) So like most of us do in 2025, I turn to my AI buddies for help.
Here is what I want. Try imagine it with your human intelligence first.
...γ倩η±γin Chinese calligraphy so that: The black ink strokes formγ倩θγbut with the addition of two subtle strokes (abstract e.g. as water droplet dots), the visual impression evokesγ倩η±γ(sky blue) Artistic Concept: Write γ倩θγ in elegant calligraphy using black ink:γ倩γat the top, upright and spacious like the sky γθγbelow, complex yet balanced like a woven basket... Then, add two small translucent water droplet dots (possibly in very light blue) under the radical θΉ inγθγ, mimicking the η«Ή inγη±γ. θει θη«Ήει δΈδΈζ¨£ηι¨εη¨θθ²ε―« Visual and Symbolic Effect: From a distance, or with a viewerβs imagination, the droplets complete the transformation from θ to η± the original meaning βheavenly basketβ (倩η±) becomes double-layered with the carefree feeling of sky blue (倩θ)...
After trying lots of variations of prompts in both English and Chinese, I give up on ChatGPT's Dalle model series. ChatGPT's most attempts are simply wrong. Even the best attempt (see below) lacks the calligraphy strokes let alone the emotion and creativity of a true calligrapher. They certainly are not what I'm looking for.

I ended up testing all the usual toolsβand even signing up to some not-so-usual ones that claim to be able to write Chinese calligraphy well:
DALLΒ·E (diffusion-based) β beautiful in many domains, but struggled with precise character rendering and stylistic control.
Stable Diffusion (with LoRA & fine prompts) β got us closer, but the strokes were often warped, and it couldnβt handle γη±γwith the integrity calligraphy demands.
NightCafe β easy to use, but outputs felt more decorative font than brush-born.
Thereβs An AI For That β yes, but many are poorly-performing...
YesChat Calligraphy plugin β font-based generation, better control, and we even layered droplets with PIL. It was cleverβ¦ but lacked soul. Actually, it lacked the whole second character. LOL. π€£




Some of Yeschat's attempts are interesting. It actually wrote a script to draw it. Here's the script:
// Load the custom Chinese calligraphy font
font_path = "/mnt/data/ζ΅·ηΊ³ηΎε·-δΈι¦εε€δΉ¦ζ³δ½.ttf"
font_size = 240 # for individual character sizing
// Create a blank white image for 2 characters vertically (300x600)
image_width = 300
image_height = 600
background_color = "white"
text_color = "black"
img = Image.new("RGB", (image_width, image_height), color=background_color)
draw = ImageDraw.Draw(img)
font = ImageFont.truetype(font_path, font_size)
// Characters to draw
characters = ["倩", "η±"]
// Draw each character in its respective 300x300 box, vertically aligned
for i, char in enumerate(characters):
w, h = draw.textsize(char, font=font)
x = (image_width - w) // 2
y = (300 * i) + (300 - h) // 2
draw.text((x, y), char, font=font, fill=text_color)
// Add two small translucent blue dots above the "θΉ" of η± to hint at "θ"
// Position estimated: near the top of the second 300x300 box
dot_radius = 6
dot_color = (173, 216, 230, 180) # light blue with some transparency
// Convert to RGBA for transparency support
img = img.convert("RGBA")
draw = ImageDraw.Draw(img)
// Estimate positions for the water droplets (based on character layout)
dot_positions = [(120, 330), (160, 330)] # rough x positions over "θΉ" of η±
for pos in dot_positions:
x, y = pos
draw.ellipse((x - dot_radius, y - dot_radius, x + dot_radius, y + dot_radius), fill=dot_color)
// Convert back to RGB and show
img = img.convert("RGB")
output_path = "/mnt/data/TianLan_artistic.jpg"
img.save(output_path)
// Display the image
plt.imshow(img)
plt.axis('off')
plt.title("Artistic Calligraphy: ε€©η± evoking 倩θ")
plt.show()
Wow. That's disappointing. I guess diffusion based models currently lacks that level of symbolic compositional control that can be inputed from prompts...
Makes you wonder what state-of-art academic research has been able to achieve so far? Same here.
My favourite research buddy recently is Scispage. It's great. Just try it if you are reading this line and haven't used it already. In short, there is a lot of really neat diffusion-based models and GAN-based models good at generating individual callgrahic characters with stylistic precision; however, none give us the spatial and symbolic control we need to seeγθγthroughγη±γ.
Model | Year | Method | Input Control | Limitation |
Calliffusion | 2023 | Diffusion | Chinese prompts + calligraphy style label | Only one character at a time; no layout or symbolic overlay support |
CalliffusionV2 | 2024 | Diffusion + LoRA + Multi-modal | Natural language prompt + image guidance | No support for multi-char layout or compositional creativity |
Moyun | 2024 | Diffusion + Vision Mamba | Triplet input (script, calligrapher, character) | No prompt-based or image-based control; layout & symbolic overlays not supported |
DP-Font | 2024 | Diffusion + PINN (Physics-Informed Neural Network) | Attribute + stroke constraints |
So someone wants out there reading wants to give it a go? I think what we really need is a hybrid of:
Fine control over layout, stroke dynamics, and multi-character composition
Support for overlays or compositional semantics (e.g., knowing where to place droplets symbolically)
Promptability, so we can say things like: βWrite ε€©η± in a way that some might read it as 倩θ. ηηΎ²δΉβs style, like itβs under a sky before rainβ
Stroke-level output, so we can animate or render brush pressureβnot just pixels
Perhaps start by:
Fine-tuning a diffusion model like Calliffusion with multi-character layout data?
Training on annotated datasets with symbolic annotations (like βhere, a dot implies somethingβ)?
Using Hanzi stroke decomposition datasets to reconstruct SVGs and animate the strokes?
Blending this with a custom rendering engine that understands both brush and poetry?
Who knows, maybe yours will be able to take a set of Chinese character, a text prompt and even a image and paint something magical like this video my grandma shared with me earlier last week... speaking of which, maybe that's why the idea of calligraphic art came to me this beautiful afternoon...

Liao, Q., Li, L., Fei, Y., & Xia, G. (2024). CalliffusionV2: Personalized natural calligraphy generation with flexible multi-modal control. arXiv. https://doi.org/10.48550/arXiv.2410.03787
Liao, Q., Li, L., Fei, Y., & Xia, G. (2023). Calliffusion: Personalized Chinese calligraphy generation with diffusion models. ICCC 2023.
Wu, S. J., Yang, C.-Y., & Hsu, J. Y. (2020). CalliGAN: Style and structure-aware Chinese calligraphy character generator. arXiv. http://export.arxiv.org/pdf/2005.12500
Liu, Z., Li, Y., Wang, K., Wu, Y., & Sun, W. (2024). Moyun: A diffusion-based Chinese calligraphy generation model with triple-label control. arXiv. https://arxiv.org/abs/2410.07618
Zhang, X., Han, T., Bai, S., Liu, H., & Xie, E. (2024). DP-Font: Diffusion-based calligraphy font generation with physical constraints. IJCAI 2024.
Liao, Q., Li, L., Fei, Y., & Xia, G. (2023). CalliPaint: Chinese calligraphy inpainting with diffusion models. Workshop on AI for Cultural Heritage, ICCV 2023.
Ma, L., Chen, C., Jin, X., Wang, Y., & Zeng, B. (2023). GlyphDraw: Integrating glyph control into diffusion for better Chinese text generation. arXiv. https://arxiv.org/abs/2303.17870
Lu, Y., Zhao, Y., Pan, J., & Han, J. (2024). AnyText: Scene text editing and generation with diffusion models. ModelScope, Alibaba DAMO Academy.
CalliPaint | 2023 | Diffusion + Inpainting (RePaint) | Masked image + character prompt | For stroke repair only; no layout or generative composition |
GlyphDraw | 2023 | Diffusion + Glyph injection | Glyph image + placement mask | Not calligraphy-specific; supports scene text only |
AnyText | 2024 | Diffusion (Alibaba ModelScope) | Text + layout mask or image | Works well for stylized text insertion; not built for brush artistry |
CalliPaint | 2023 | Diffusion + Inpainting (RePaint) | Masked image + character prompt | For stroke repair only; no layout or generative composition |
GlyphDraw | 2023 | Diffusion + Glyph injection | Glyph image + placement mask | Not calligraphy-specific; supports scene text only |
AnyText | 2024 | Diffusion (Alibaba ModelScope) | Text + layout mask or image | Works well for stylized text insertion; not built for brush artistry |

Research Roundup: How AI and LLMs Are Revolutionizing Smart Contract Security
Insights from 7 Recent Papers on Using AI to Detect and Fix Smart Contract Vulnerabilities

Quantum Models of DNA Replication Fidelity Using Decoherence-Inspired Error Correction
Unlocking DNA's Quantum Mysteries: How Decoherence and Error Correction Shape Replication Fidelity

The Symposium at the Stoa: Navigating the Necessity of Active Trading in Sustainable Finance
Exploring the Ethics of Trading: A Deliberation on Value, Impact, and the Future of Finance

Research Roundup: How AI and LLMs Are Revolutionizing Smart Contract Security
Insights from 7 Recent Papers on Using AI to Detect and Fix Smart Contract Vulnerabilities

Quantum Models of DNA Replication Fidelity Using Decoherence-Inspired Error Correction
Unlocking DNA's Quantum Mysteries: How Decoherence and Error Correction Shape Replication Fidelity

The Symposium at the Stoa: Navigating the Necessity of Active Trading in Sustainable Finance
Exploring the Ethics of Trading: A Deliberation on Value, Impact, and the Future of Finance
<100 subscribers
<100 subscribers
Share Dialog
Share Dialog
Sphene Labs
Sphene Labs
No comments yet