[REFS[
- [2] [CODE(charname)@en[LINE SEPARATOR]]
<https://chars.suikawiki.org/char/LINE%20SEPARATOR>
- [23] [CODE(charname)@en[PARAGRAPH SEPARATOR]]
<https://chars.suikawiki.org/char/PARAGRAPH%20SEPARATOR>
]REFS]

* 代替

[38] 
[[改行]]には
[CODE[U+000A]] [CODE(charname)@en[LINE FEED]]
を使うべきです。

[39] 
[[改行]]と[[改段落]]の区別が必要なときは、
[[HTML]] の [CODE[br]], [CODE[p]]
など、[[マーク付け言語]]の機能を使うべきです。

* 仕様書

[REFS[
- [18] [CITE[The Unicode Standard, Version 13.0 - ch23.pdf]], [TIME[2020-03-09T17:53:52.000Z]], [TIME[2020-12-09T10:59:29.820Z]] <https://www.unicode.org/versions/latest/ch23.pdf#G15334>
]REFS]

* 意味

[26] 
[CODE[U+2028]] [CODE(charname)@en[LINE SEPARATOR]]
と
[CODE[U+2029]] [CODE(charname)@en[PARAGRAPH SEPARATOR]]
は、
[[Unicode]] [[平文]]において[[行]]の境界と[[段落]]の境界を示す[RUBYB[既定の形][default form]]と考えられるもの
[SRC[>>18]]
と説明されています。

[25] 
[CITE[The Unicode Standard]]
では
[CODE(char)[U+2028]]
と
[CODE(char)[U+2029]]
は、
[RUBYB[曖昧でない文字][unambiguous characters]]と説明されています
[SRC[>>18]]。
何が曖昧でないのか曖昧な説明ですがw、
混乱していた[[改行文字]]の問題を解決しようと試みたものなのでしょう。
「既定の形」
という言葉に現れている通り、
既存の[[制御文字]]ではなく、
[CODE[U+2028]]
と
[CODE[U+2029]]
を使うのが
[[Unicode]]
設計当初の[[プレインテキスト]]のあるべき姿だったのでしょう。

[27] 
[CODE[U+2028]]
の後から新しい[[行]]が始まります。
無条件に[[行]]を終わらせることを意味します。
[SRC[>>18]]

[28] 
[CODE[U+2029]]
の後から新しい[[段落]]が始まります。
[SRC[>>18]]

[29] 
[CODE[U+2028]],
[CODE[U+2029]]
は分離子なので、最初や最後には不要です。
[SRC[>>18]]

* レンダリング

[30] 
[RUBYB[段落間の書式付け][interparagraph formatting]]は、
任意の方法によることができます。
例えば[[行]]を改め、
[[段落]]間の[RUBYB[行送り][line spacing]]を挿入し、
最初の[[行]]を[[インデント]]することができます。
[SRC[>>18]]

[31] 
[CODE[U+2028]]
は[[改行]]するべきことを示します。
[[段落]]は始めませんから、
[[段落]]間の行送りや[[インデント]]は適用しません。
[SRC[>>18]]

-*-*-

[32] 
確かに多くのシステムで[[改行]]と[[改段落]]の2つの概念はありますが、
一方又は両方が存在しないシステムや、
3つ以上の区別を持つシステムも少なくありません。
また[[改行]]の効果は明らかですが、
[[改段落]]の解釈と[[レンダリング]]には多種多様なものがあります。
この2つの区別を[[文字]]として記述しようとしたのは非常に意欲的といえますが、
勇み足とも思えます。

[33] 
事実これらはほとんど使われていないか、少なくても[[相互運用性]]は極めて低いと言わざるを得ません。
[[Web]]
で見られる用例のほとんどは誤用か、意図せぬ混入と思われるものです。
しかも[[プラットフォーム]]によっては[[制御文字]]の可視化風に表示されてしまい、
意図した効果はまったく得られません。

[34] 
[[段落分離子]]は、[[改行]]なしで「¶」や「◆」で表す手法もあるくらいですから、
「PS」 のように表示されたとしても「任意の方法」 (>>30) に過ぎないのかもしれませんがw、
[[行分離子]]が「[LINES[L][SEP]]」のように表示されるのは、
対応しているとはとてもいえません。

[35] 
結局この2つの[[文字]]は混乱する[[改行文字]]の問題に新たな爆弾を投げ込んだだけでした。

* 互換性の問題


[36] 
[[XML文書]]の[[改行]]の正規化処理において、
[[XML 1.0]]
は
[CODE[U+2028]]
を扱っていませんでしたが、
[[XML 1.1]]
は
[CODE[U+2028]]
を[[改行]]とみなすように変更しました。
これは他の[[改行文字]]である
[CODE[U+0085]]
ととともに
[[XML 1.1]]
の目玉の1つで、焦点となって紛糾した問題でもありました。
この変更は、
[[XML 1.1]]
の事実上の後継である
[[XML 1.0 5e]]
で不採用となり、
失敗した
[[XML 1.1]]
と共に闇に葬られました。

[37] 
[CODE[U+2028]],
[CODE[U+2029]]
は[[改行]]、
[[改段落]]という特殊性ゆえに、
[[JavaScript]]
の構文上も特別な扱いを受けていました。
それが原因となり、
[[JavaScript]]
から派生した
[[JSON]]
はこの2つの[[文字]]の扱いが
[[JavaScript]]
と違ってしまっていました。
そのため
[[JavaScript]],
[[JSON]],
[[JSONP]]
の間の互換性問題を引き起こし、
[[Web開発者]]を悩ませ続けました。
[[セキュリティー]]問題を引き起こす原因ともなりました。
[SEE[ [[JSON]], [[JSONP]] ]]



* [CODE(charname)@en[LINE SEPARATOR]] の混入事例

[3] (多分意図せず) 普通の文章に混在していることがよくあります。積極的に使うツールか何かがあるのでしょうか。
[TIME[2015-12-18T08:39:10.100Z]]

[FIG(quote)[
[FIGCAPTION[
[4] [CITE@ja[【京都】デートや一人旅におすすめ!お寺以外の京都の観光スポットを厳選して紹介する - Hikikomotrip]]
([TIME[2016-03-27 22:08:22 +09:00]] 版)
<http://www.hikikomotrip.com/entry/kyoto>
]FIGCAPTION]

> 営業時間:AM10:00~PM7:00  (定休日はございません)

]FIG]


[FIG(quote)[
[FIGCAPTION[
[5] [CITE@ja[つるの剛士 公式ブログ - 一ヶ月の家庭休業(育休)を終えて。 - Powered by LINE]]
( ([TIME[2016-07-01 13:42:27 +09:00]]))
<http://lineblog.me/tsurunotakeshi/archives/7833504.html>
]FIGCAPTION]

> 毎日が目まぐるしく過ぎていった一ヶ月。
>  完全に家の中が中心になりエプロンが私服、戦闘服と化した一ヶ月。
>  気づいたら一度もヘアセット、コンタクトレンズをしなかった一ヶ月。
>  殆ど人にも会わず毎日家族と一緒だった一ヶ月。。 
> 今は早く仕事したい気持ちと正直寂しい気持ちとで心中裏腹です。 

]FIG]


[FIG(quote)[
[FIGCAPTION[
[6] [CITE@ja[iMac OSX10.12.2 Sierraです。 Mail.appとApp Storeを起… - 人力検索はてな]]
([TIME[2017-01-01 15:48:57 +09:00]])
<http://q.hatena.ne.jp/1483177683>
]FIGCAPTION]

> iMac OSX10.12.2 Sierraです。 
>  
> Mail.appとApp Storeを起動して、

]FIG]

[7] >>6 質問文の改行前後に謎の [CODE[U+2028]] が入っています。

[8] [CITE@ja[はてな]] ([TIME[2017-01-01 15:50:39 +09:00]]) <http://www.hatena.ne.jp/#s-question>
は [[JSONP]] で
([TIME[2017-01-01 15:51:06 +09:00]]) <http://q.hatena.ne.jp/api/hotlist?_via=250002&cnt=8&callback=PortalQuestionCallback>
を読み込んでいますが、 [[JSON]] では認められていて [[JavaScript]]
では認められない [CODE[U+2028]] が混入し、 [[JavaScript]] [[構文解析エラー]]になっているようです。


[FIG(quote)[
[FIGCAPTION[
[9] [CITE@ja[FAQ | MTRL KYOTO(マテリアル京都)]]
([TIME[2017-03-07 12:34:20 +09:00]])
<https://mtrl.net/kyoto/faq/>
]FIGCAPTION]

> 対応素材について  
> 弊施設設置のCNCフライスではさまざまな木材やワックス・MDF・アルミ・プラスチックなどの素材が使用可能です。

]FIG]

[10] [CITE@en[Mackerelによる 簡単サーバー管理入門と発展形]] ([TIME[2017-05-10 15:23:56 +09:00]]) <https://www.slideshare.net/stanaka/140929mackerel>

[FIG(quote)[
[FIGCAPTION[
[11] [CITE[五條真由美|Love&Light]]
([TIME[2017-03-05 19:59:12 +09:00]])
<http://loveandlight.jpn.com/management/index.html>
]FIGCAPTION]

> J-POPアーティストのコーラスを経てTVアニメ「おジャ魔女どれみ」(99'東映アニメーション)の挿入歌「魔法でチョイチョイ」でデビュー。 
> その後「ふたりはプリキュア」(ABC・テレビ朝日系)主題歌“DANZEN!ふたりはプリキュア” に恵まれ、同シリーズの主題歌・エンディング・挿入歌を数多歌わせていただく。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[12] [CITE[SINGHA Chiang Rai International MTB Challenge | R1japan.jp]]
([TIME[2017-12-08 17:19:53 +09:00]])
<http://www.r1japan.jp/project/chiangrai-mtb/chiangrai-mtb6.html>
]FIGCAPTION]

> 電話053-705337
>  40 Moo 6 Ban Paoo Nanglae Chiangrai Nothern Thailand

]FIG]


[FIG(quote)[
[FIGCAPTION[
[13] [CITE@ja-JP[猪鹿蝶とは?|ナレーター猪鹿蝶]]
([TIME[2017-12-27 02:38:19 +09:00]])
<http://inoshikacho.axto.jp/about_us.html#gaiyou>
]FIGCAPTION]

> マネージャー狩野貴子率いるナレーターオフィスです。 国民的ナレーターである生野文治を筆頭に、佐藤賢治、服部伴蔵門などバラエティ番組の顔となったナレーターたち。さらに小野寺一歩、大江戸よし々など若手ナレーターを第一線へ送り込んでいます。 

]FIG]


[FIG(quote)[
[FIGCAPTION[
[14] [CITE@ja[日本円出金の再開の見通しについて | コインチェック株式会社]]
([TIME[2018-02-03 13:23:14 +09:00]])
<http://corporate.coincheck.com/2018/02/03/37.html>
]FIGCAPTION]

> Plans for resuming JPY withdrawals  
> [SNIP[]], we would like to announce the timeframe when JPY withdrawals will resume.  Currently, all JPY registered to customer accounts is being stored in a customer-specific account in a major financial institution.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[15] [CITE@ja-jp[【豪華ゲスト多数出演】「#コンパス」ステージ@闘会議2018'''['''DAY1''']''' - 2018/02/10 10:15開始 - ニコニコ生放送]]
([TIME[2018-02-10 01:49:23 +09:00]])
<http://live.nicovideo.jp/gate/lv309287381>
]FIGCAPTION]

>   大炎上 #コンパスグランドスラム 野良バトグランプリ開催!
>   

]FIG]


[16] [CITE[データ分析コンテストの 勝者解答から学ぶ // Speaker Deck]]
([TIME[2018-03-04 14:54:45 +09:00]])
<https://speakerdeck.com/smly/detafen-xi-kontesutofalse-sheng-zhe-jie-da-karaxue-bu>

[FIG(quote)[
[FIGCAPTION[
[17] [CITE@ja-jp[Hi!Superbの『Hi!SuPunch!!(ハイシュパンチ)』#01 - 2018/04/07 22:00開始 - ニコニコ生放送]]
([TIME[2018-04-07 00:25:01 +09:00]])
<http://live.nicovideo.jp/gate/lv312272524>
]FIGCAPTION]

> チケットを入手する
> チャンネルへ入会 または 生放送チケット購入
> Hi!Superbの『Hi!SuPunch!!(ハイシュパンチ)』#01
>  
>  ●番組内容
>  LOVE&ARTから

]FIG]


[FIG(quote)[
[FIGCAPTION[
[24] [CITE@ja[一般データ保護規則(GDPR)- Google Cloud]]
([TIME[2017-11-03 04:30:00 +09:00]])
<https://www.google.com/intl/ja/cloud/security/gdpr/>
]FIGCAPTION]

> G Suite と Google Cloud Platform の GDPR に対する取り組み

]FIG]


[FIG(quote)[
[FIGCAPTION[
[19] [CITE@ja-jp[Hi!Superbの『Hi!SuPunch!!(ハイシュパンチ)』#02 - 2018/05/05 22:00開始 - ニコニコ生放送]]
([TIME[2018-05-05 00:24:30 +09:00]])
<http://live.nicovideo.jp/gate/lv312791656>
]FIGCAPTION]

> Hi!Superbの『Hi!SuPunch!!(ハイシュパンチ)』#02
>  
>  ●番組内容
>  LOVE&ARTから新たにデビューしたDance&Vocalグループ

]FIG]


[FIG(quote)[
[FIGCAPTION[
[20] [CITE@ja[プロフィール | 参議院議員 中曽根弘文]]
([TIME[2018-06-07 18:55:08 +09:00]])
<http://hiro-nakasone.com/profile/>
]FIGCAPTION]

> 自民党の新憲法案の作成に尽力した。 「サマータイム制度」の導入推進運動の中心的役割を果たすとともに、

]FIG]


[FIG(quote)[
[FIGCAPTION[
[22] [CITE[『ありの巣ちゃんねるっ』 - 2020/12/04(金) 17:00開始 - ニコニコ生放送]]
([TIME[2020-12-03 19:55:15 +09:00]])
<https://live2.nicovideo.jp/watch/lv329268625?ref=qtimetable&zroute=index>
]FIGCAPTION]

> @ほぉ〜むカフェ 大阪本店 みらんです
>  
> 配信系は初めての挑戦なので、ガッツで頑張りますっ!

]FIG]



* メモ

[1] [CITE[IRC logs: freenode / #whatwg / 20101111]]
( ([TIME[2010-11-19 23:02:05 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20101111#l-281>


[21] [CITE@en['''['''css-text''']''' Control characters · Issue #1990 · w3c/csswg-drafts]]
([TIME[2018-10-19 01:45:00 +09:00]])
<https://github.com/w3c/csswg-drafts/issues/1990>


[FIG(quote)[
[FIGCAPTION[
[40] [CITE[『ありの巣ちゃんねるっ』 - 2020/12/19(土) 17:00開始 - ニコニコ生放送]]
([TIME[2020-12-18 20:19:16 +09:00]])
<https://live2.nicovideo.jp/watch/lv329531034?ref=qtimetable&zroute=index>
]FIGCAPTION]

> @ほぉ〜むカフェ 大阪本店 みらんです
>  
> 配信系は初めての挑戦なので、ガッツで頑張りますっ!

]FIG]


[FIG(quote)[
[FIGCAPTION[
[41] [CITE[『ありの巣ちゃんねるっ』 - 2021/01/19(火) 20:00開始 - ニコニコ生放送]]
([TIME[2021-01-19 11:11:45 +09:00]])
<https://live2.nicovideo.jp/watch/lv330027763?ref=qtimetable&zroute=index>
]FIGCAPTION]

> @ほぉ〜むカフェ 大阪本店 みらんです
>  
> 配信系は初めての挑戦なので、ガッツで頑張りますっ!

]FIG]
