Skip to content

CJK Language Support

vue-stream-markdown includes built-in support for CJK (Chinese, Japanese, Korean) languages, ensuring that emphasis markers like bold and italic work correctly with ideographic punctuation. This is particularly important for AI-generated content, where language models naturally place emphasis markers around phrases that include or end with punctuation.

The Problem

The CommonMark/GFM specification has a limitation where emphasis markers (*or) adjacent to ideographic punctuation marks occasionally fail to be recognized. This causes formatting to break in CJK text:

markdown
**この文は太字になりません(This won't be bolded)。**この文のせいで(It is due to this sentence)。

Without CJK-friendly parsing, the text above would render as plain text instead of bold because the closing ** appears next to the Japanese period.

The Solution

vue-stream-markdown uses the micromark-extension-cjk-friendly and micromark-extension-cjk-friendly-gfm-strikethrough plugins to handle CJK text properly. These plugins implement an improved parsing approach that correctly recognizes emphasis markers adjacent to ideographic punctuation.

Character Animation

Streaming animations use animationSplit="auto" by default. CJK characters are split individually, while nearby non-CJK text keeps word-based animation. Set animationSplit to 'char' when you want to force character animation:

vue
<StreamMarkdown
  content="CJK text can animate character by character."
  animation-split="char"
/>

Supported Features

Bold Text with Punctuation

Works correctly with all ideographic punctuation marks:

markdown
**日本語の文章(括弧付き)。**この文が後に続いても大丈夫です。
**中文文本(带括号)。**这句子继续也没问题。
**한국어 구문(괄호 포함)**을 강조.

Japanese: 日本語の文章(括弧付き)。この文が後に続いても大丈夫です。 Chinese: 中文文本(带括号)。这句子继续也没问题。 Korean: 한국어 구문(괄호 포함)을 강조.

Italic Text with Punctuation

markdown
*これは斜体のテキストです(括弧付き)。*この文が後に続いても大丈夫です。
*这是斜体文字(带括号)。*这句子继续也没问题。
*이 텍스트(괄호 포함)*는 기울임꼴입니다.

Japanese: これは斜体のテキストです(括弧付き)。この文が後に続いても大丈夫です。 Chinese: 这是斜体文字(带括号)。这句子继续也没问题。 Korean: 이 텍스트(괄호 포함)는 기울임꼴입니다.

Strikethrough with Punctuation

vue-markdown-stream includes micromark-extension-cjk-friendly-gfm-strikethrough for proper strikethrough support:

markdown
~~削除されたテキスト(括弧付き)。~~この文は正しいです。
~~删除的文字(带括号)。~~这个句子是正确的。
~~이 텍스트(괄호 포함)~~를 삭제합니다.

Japanese: 削除されたテキスト(括弧付き)。この文は正しいです。 Chinese: 删除的文字(带括号)。这个句子是正确的。 Korean: 이 텍스트(괄호 포함)를 삭제합니다.

Mixed Content

CJK and English text work seamlessly together:

markdown
**重要提示(Important Notice):**请注意。

重要提示(Important Notice):请注意。