Repository: prettier/prettier (JavaScript)

Issue:
Markdown: Don't split lines between Japanese kana & COMBINING KATAKANA-HIRAGANA (SEMI-)VOICED SOUND MARK
<!--

BEFORE SUBMITTING AN ISSUE:

1.  Search for your issue on GitHub: https://github.com/prettier/prettier/issues
    A large number of opened issues are duplicates of existing issues.
    If someone has already opened an issue for what you are experiencing,
    you do not need to open a new issue — please add a 👍 reaction to the
    existing issue instead.

2.  We get a lot of requests for adding options, but Prettier is
    built on the principle of being opinionated about code formatting.
    This means we add options only in the case of strict technical necessity.
    Find out more: https://prettier.io/docs/en/option-philosophy.html

Don't fill the form below manually! Let a program create a report for you:

1. Go to https://prettier.io/playground
2. Paste your code and set options
3. Press the "Report issue" button in the lower right

-->

**Prettier 3.0.3**
[Playground link](https://prettier.io/playground/#.....)

```sh
# Options (if any):
--prose-wrap always
```

**Input:**

```markdown
nasalか゚き゚く゚け゚こ゚カ゚キ゚ク゚ケ゚コ゚か゚き゚く゚け゚こ゚カ゚キ゚ク゚ケ゚コ゚か゚き゚く゚け゚こ゚カ゚キ゚ク゚ケ゚コ゚
```

**Output:**

```markdown
nasalか゚き゚く゚け゚こ゚カ゚キ゚ク゚ケ゚コ゚か゚き゚く゚け゚こ゚カ゚キ゚ク゚ケ
゚コ゚か゚き゚く゚け゚こ゚カ゚キ゚ク゚ケ゚コ゚
```

**Expected behavior:**

```markdown
nasalか゚き゚く゚け゚こ゚カ゚キ゚ク゚ケ゚コ゚か゚き゚く゚け゚こ゚カ゚キ゚ク゚
ケ゚コ゚か゚き゚く゚け゚こ゚カ゚キ゚ク゚ケ゚コ゚
```

ケ゚ (U+30B1 U+309A; strict nasal-voiced katakana GE expression) must not be split.

> [!NOTE]
> This expression (semi-voiced sound mark for GA/GI/GU/GE/GO) doesn't appears in most text. 

`[hiragana or katakana] [U+3099 or U+309A]` (U+309B-U+309C are not affected)


Hints:

Patch:
diff --git a/src/language-markdown/print-whitespace.js b/src/language-markdown/print-whitespace.js
--- a/src/language-markdown/print-whitespace.js
+++ b/src/language-markdown/print-whitespace.js
@@ -47,7 +47,7 @@ const noBreakAfter = new Set(
  *         `"檜原村（ひのはらむら）\n以外には、"`
  */
 const noBreakBefore = new Set(
-  "!%),.:;?]}¢°·'\"†‡›℃∶、。〃〆〕〗〞﹚﹜！＂％＇），．：；？］｝～–—•〉》」︰︱︲︳﹐﹑﹒﹓﹔﹕﹖﹘︶︸︺︼︾﹀﹂﹗｜､』】〙〟｠»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠〜～‼⁇⁈⁉・",
+  "!%),.:;?]}¢°·'\"†‡›℃∶、。〃〆〕〗〞﹚﹜！＂％＇），．：；？］｝～–—•〉》」︰︱︲︳﹐﹑﹒﹓﹔﹕﹖﹘︶︸︺︼︾﹀﹂﹗｜､』】〙〟｠»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠〜～‼⁇⁈⁉・゙゚",
 );
 
 /**


Test patch:
diff --git a/tests/format/markdown/splitCjkText/__snapshots__/jsfmt.spec.js.snap b/tests/format/markdown/splitCjkText/__snapshots__/jsfmt.spec.js.snap
--- a/tests/format/markdown/splitCjkText/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/markdown/splitCjkText/__snapshots__/jsfmt.spec.js.snap
@@ -17,7 +17,10 @@ proseWrap: "always"
 
 カ゚キ゚ク゚ケ゚コ゚でガギグゴ
 
+nasalカ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚
+
 かつてはワ行のワ、ヰ、ヱ、ヲに濁点を付して [v] 音を表現すること（ワ゛、ヰ゛、ヱ゛、ヲ゛）も行われたが、一般的にはならなかった。
+
 =====================================output=====================================
 這是一段很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長
 很長的段落
@@ -32,6 +35,10 @@ proseWrap: "always"
 
 カ゚キ゚ク゚ケ゚コ゚でガギグゴ
 
+nasalカ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚
+ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚
+ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚
+
 かつてはワ行のワ、ヰ、ヱ、ヲに濁点を付して [v] 音を表現すること（ワ゛、ヰ゛、ヱ
 ゛、ヲ゛）も行われたが、一般的にはならなかった。
 
diff --git a/tests/format/markdown/splitCjkText/chinese-japanese.md b/tests/format/markdown/splitCjkText/chinese-japanese.md
--- a/tests/format/markdown/splitCjkText/chinese-japanese.md
+++ b/tests/format/markdown/splitCjkText/chinese-japanese.md
@@ -8,4 +8,6 @@
 
 カ゚キ゚ク゚ケ゚コ゚でガギグゴ
 
-かつてはワ行のワ、ヰ、ヱ、ヲに濁点を付して [v] 音を表現すること（ワ゛、ヰ゛、ヱ゛、ヲ゛）も行われたが、一般的にはならなかった。
\ No newline at end of file
+nasalカ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚カ゚キ゚ク゚ケ゚コ゚
+
+かつてはワ行のワ、ヰ、ヱ、ヲに濁点を付して [v] 音を表現すること（ワ゛、ヰ゛、ヱ゛、ヲ゛）も行われたが、一般的にはならなかった。