[1] 
[[書字方向]]によって[[グリフを選ぶ][グリフの選択]]必要がある[[文字]]もあります。





* 日本語


[4] 
[[長音]]を表す
「[[ー]]」
と、その[[異体字]]の
「[[〜]]」、
「[[→]]」
は、
[[左横書き]]では横線右向き、
[[縦書き]]では縦線下向きです。
[[異体字]]は近年のもので、
現代では特殊な場面でしか使われない[[右横書き]]の用例があるか不明ですが、
論理的には横線左向きとなるべきで、
[[鏡像化]]が必要です。
(「[[ー]]」
は左右対称にも見えますが、
[[フォント]]設計次第で[[グリフ]]を変える必要が出てきます。)

[458] [[長音記号]]も参照。

[336] 他に [CODE[!]], [CODE[?]], [CODE[;]], [CODE[,]], [CODE[、]]
あたりも[[鏡像化]]する可能性があります。
[CODE[ゝ]] や [CODE[〱]] もでしょうか (どうやって?)。
[CODE[。]], [[小書き仮名]]などは[[アキ]]の調整が必要な場合もあるかもしれません。

[339] 
[[小書き仮名]]が[[左横書き]]用に左下に寄せた設計の[[フォント]]のとき、
[[右横書き]]では右下に寄せるよう変更する必要があります。
([[鏡像化]]ではありません。)

[340] 
[[進行方向書き]]の実例を見ると、[[ー]]や[[小書き仮名]]は左右どちら向きでも違和感がないような[[書体]]設計になっているようです。
[[左横書き]]用をそのまま使っているっぽい事例もいくつか。


[315] 
[[縦書き]]の[[踊り字]]が[[横書き]]で使いづらいためもあってか、
現代の日本では
「いろ[SUP[2]]」、
「いろ[SUP[×2]]」、
「いろ[SUP[②]]」、
「それ[SUP[2゙]]」
といった[[上付き]]の[[小書き]]で反復を表す表現が使われています。
ただし一部で使われる[[スラング]]のような扱いで、
公的な場面に現れるには至っていません。
こうした表現は[[左横書き]]に特化していて、
逆に[[縦書き]]での表現方法に難があります。


[423] [CITE[貯蓄債券の広告]], [TIME[2020-10-18T02:16:00.000Z]], [TIME[2020-11-09T10:35:26.870Z]] <http://tokyowanyosai.com/soft/shakai/pr-saiken.html>

昭和17年2月の原文「[R[二月二十一日[MIRRORED(rtl)[➡]]三月四日]]」
[[Webページ]]の翻刻「二月二十一日→三月四日」

[433] [CITE@ja[第139回 「菩薩」の略字―現代の抄物書き | 漢字の現在(笹原 宏之) | 三省堂 ことばのコラム]], [TIME[2020-11-23T02:17:08.000Z]] <https://dictionary.sanseido-publ.co.jp/column/kanji_genzai139>

[434] [CITE@ja[第140回 中学生の文字 | 漢字の現在(笹原 宏之) | 三省堂 ことばのコラム]], [TIME[2020-11-23T02:24:33.000Z]] <https://dictionary.sanseido-publ.co.jp/column/kanji_genzai140>

>「縦書き・横書き?」という生徒さんの書き込みもあった。なるほど縦書きにはどことなく「歳」が似合うため、大人でもそういう人がいる。


[436] 
[[仮名]]や[[漢字]]の後に「↑」「↓」
「⤴」「⤵」「↗」「↘」
などの矢印を使い、
「[L[[[こ↑こ↓]]]]」
のように[[高低アクセント]]を記述する方法があります。
もっぱら[[左横書き]]で使われます。
[[上縦書き]]や[[右横書き]]で表示されるとき、
どうなるべきか明らかではありません。


[437] [CITE[246dfa655aeb95cb82f093e2a484d5bd.jpeg (300×600)]] ([TIME[2020-11-20 15:50:38 +09:00]]) <https://ads.nicovideo.jp/assets/images/24/246dfa655aeb95cb82f093e2a484d5bd.jpeg>

広告画像

>
[LEFTBOX[
総合戦力

3.99K⭡̣[ASIS[⭡̣][上に長い]]
]LEFTBOX]

この上向き矢印は「up」 「上昇」 の意味。上向きであることに意味がある。

[456] [CITE@ja[からあげのるつぼさんはTwitterを使っています 「そう簡単に変わらないゾ #現場猫 https://t.co/FHvG3PReCz」 / Twitter]], 午前8:15 · 2020年12月26日 [TZ[+09:00]], [TIME[2020-12-27T08:12:16.000Z]] <https://twitter.com/karaage_rutsubo/status/1342610060451540992/photo/1>

漫画台詞「[V[[YOKO[w]][YOKO[w]][YOKO[w]]]]」

[461] [CITE@ja[アクセント記号解説]], [TIME[2019-06-20T14:53:59.000Z]], [TIME[2021-10-29T10:31:10.834Z]] <http://www.akenotsuki.com/kyookotoba/kisoaccent.html>

>
縦書きの時は90度右回転させた◐→◓・◑→◒)を使って表記します。

[483] 
[[近代]]から[[平成時代]]初期頃まで、
[[数値]]は[[縦書き]]では[[漢数字]]、
[[横書き]]では[[欧州数字]] ([[漢数字]]でもよい)
という使い分けが定着していました。
[[横書き]]で[[英字]]を使っても、
[[縦書き]]では[[カタカナ]]にするのが好ましいとも言われていました。
[WEAK[([[単位記号]]の[[組み文字]]が[[カタカナ]]表記なのは、[[縦書き]]で[[カタカナ]]表記に開いた結果長くなりすぎてスペースを取る & 読みにくくなるという事情もある。)]]
[[21世紀]]に入る頃から[[縦書き]]でも[[英数字]]がよく使われるようになり、
[[書字方向]]の違いよりも[[媒体]]のポリシーや個人の好みによる選択に寄ってきています。

[484] 
この[[縦書き]]向け、[[横書き]]向けの書き換えは膨大な[[辞書]]データや[[自然言語解析]]
[WEAK[(例えば「一石二鳥」や「九十九折」は[[欧州数字]]に置き換えられません。「四十九日」を置き換えていいのかはわかりません。)]]
なく機械的に実現するのは難しく、
[[縦書き字形]]、[[横書き字形]]の切り替えとは別次元の機構で扱う必要があります。


[541] [[囲み文字]]

** 句読法

[103] 
[[日本政府]]の[[文部省]]の文書として、
[CITE[[[くぎり符號の使ひ方]]]],
[CITE[[[くりかへし符號の使ひ方]]]]
がありました。
昭和21年に公表され、
少なくても昭和38年に一度再出版されており、
後者は前者を再録したに過ぎないのですが、
前者が[[縦書き]]、
後者が[[左横書き]]で、
[[字形]]もそれに合わせて変わったり、変わらなかったりしていました。

[319] 
「――」
や
「……」
については[[組合せて使う文字]]参照。


[421] 
[[括弧付き文字]]は、[[縦書き]]でも[[縦中横]]で書かれます。
[SEE[ [[括弧付き文字]] ]]

[422] [[右横書き]]用括弧の事例 [SEE[ [[「]], [[引用符]], [[括弧]] ]]

[424] 
[[アラビア語]]では[[鏡像化]]される
「?」
ですが、
[[日本語]]では[[左横書き]]と同じ字形が使われた事例がありました。
[SEE[ [[?]] ]]

[516] [[括弧]]

** 書字方向と字形設計

[239] 
[[日本]]では[[幕末]]以来、
[[縦書き]]で使われてきた[[日本語文字]]と[[欧米]]由来の[[横書き]]の調和に様々な提案がなされてきました。
その中には、
[[横書き]]前提の[[新字]] (まったく新しい[[用字系]]) を開発したものや、
[[横書き]]向きに[[仮名]]や[[漢字]]を大胆に改造したものもありました。
[SEE[ [[日本語近代化]] ]]

[240] 
大胆な提案はいずれも受け入れられることなく消えていきました。
現在では[[書体]]設計時に[[左横書き]]前提のバランス調整をする程度となっています。

[102] 
<https://repository.ninjal.ac.jp/?action=repository_action_common_download&item_id=1306&item_no=1&attribute_id=43&file_no=1>


[431] 「ー」の[[縦書き]]用、[[横書き]]用を間違えて使った (または未分化の時代の)
看板や書籍の事例:

[REFS[
- [429] [CITE@ja[案外楽しいかもしれないビル文字の世界 - 文字の裏通り]], [TIME[2020-11-19T04:58:21.000Z]] <https://mojiura.hatenadiary.org/entry/20071110/p1>
- [430] [CITE@ja[縦書き用の音引き、横書き用の音引き - 文字の裏通り]], [TIME[2020-11-19T04:58:50.000Z]] <https://mojiura.hatenadiary.org/entry/20090412/p3>
- [432] [CITE@ja[縦の音引きを横にして使う - しろもじメモランダム]], [TIME[2020-11-19T06:31:46.000Z]] <https://shiromoji.hatenablog.jp/entry/20081114/1226674434>
]REFS]

[543] [CITE[横書き移行に伴う変化について]], [TIME[1999-04-07T04:04:34.000Z]], [TIME[2022-10-29T09:32:43.405Z]] <http://www.shosha.kokugo.juen.ac.jp/oshiki/essay/97yokoga.htm>

[542] [CITE[押木 エッセイ等]], [TIME[1999-04-07T04:04:06.000Z]], [TIME[2022-10-29T09:30:22.930Z]] <http://www.shosha.kokugo.juen.ac.jp/oshiki/essay/henkumi.htm>

[435] [CITE@ja[第141回 中2世代の「02娘01」 | 漢字の現在(笹原 宏之) | 三省堂 ことばのコラム]], [TIME[2020-11-23T02:25:51.000Z]] <https://dictionary.sanseido-publ.co.jp/column/kanji_genzai141>

>「事」のはね方など書風、字形

[548] [CITE@ja[復刻 文部省活字 ~ひらがなカタカナを中心に~|minosuke]], [TIME[2023-07-14T05:46:07.000Z]] <https://note.com/minosuke_note/n/n7d33397b8c70>

>また横書き用の「ー(長音記号)」は尋常小学算術ではマイナス記号が代用され、カズノホンでは縦書き用の長音記号を90度倒して代用されている等まともなものがなかったので新たに制作しました。[SNIP[]]

* 中文

[521] [CITE[S02.pdf]], [TIME[2017-08-30T15:23:33.000Z]], [TIME[2022-09-19T07:50:05.148Z]] <http://www.classics.jp/RCS/Sousho/S02.pdf#page=52>

>境界を示す符号の「|」は、シャヴァンヌは数字の「ー」
と釈す。

#page=58

>[SNIP[]]横線の「|」[SNIP[]]

この[[論文]]は[[左上横書き]]なので縦線で表されていますが、
現物では横線らしいです (その点は特に説明されていない)。


** 中華人民共和国

[77] [[中文]]の[[句読点]]の用法を[[規定]]する
[[GB/T 15834-1995]]
には、原則の[[横書き]]の[[規定]]の他に、
[[縦書き]]について次のようにありました。

>
[LEFTBOX[
6 直行文稿与横行文稿使用标点符号不同。

6.1 句号、问号、叹号、顿号、分号和冒号放在字下偏右。

6.2 破折号、省略号、连接号和间隔号放在字下居中。

6.3 引号改用双引号“[R[[TATE[『]][TATE[』]]]]”和单引号“[R[[TATE[「]][TATE[」]]]]”。

6.4 着重号标在字的右侧,专名号和浪线式书名号标在字的左侧。
]LEFTBOX]

[78] 
[[引用符]]だけ[[字形]]がまったく異なるので明示されていますが、
その他の位置の変更、向きの変更は文章の説明しかありませんでした。

[79] 
[[GB/T 15834-2011]]
では[[句読点]]の種類が増えた分の[[規定]]が増えていますが、
[[字形]]は [TATE[(]]、[TATE[)]]
が追加されたのみで、他は文章の説明でした。

-*-*-

[80] 
[[中文]]の[[数]]の表記法を[[規定]]する
[[GB/T 15835-1995]]
には、原則の[[横書き]]の[[規定]]の他に、
[[縦書き]]で
「顺时针方向转90度」
する旨の[[規定]]がありました。
実際[[時計回り]]に90°回転した[[英数字]]が混じった文例がありました。
この[[規定]]の本題から外れますが、例示には
「:」、「,」、「。」の[[縦書き]]字形が示されていました。

[81] 
[[GB/T 15835-2011]]
にも同様の規定がありましたが、
なぜか例示から「:」は削られていました。


[82] 
[[GB/T 17961-2000]]
には[[横書き]]と[[縦書き]]の例文があって、
[[縦書き]]の[[句読点]]の実例として
「,」と「。」が含まれていました。

[83] 
[[GB/T 17961-2010]]
には関係する[[文字]]のリストが追加されていましたが、
[[横書き]]のみ示されていました。
例文は別のものに変わっており、
[[縦書き]]の[[句読点]]として
「、」、
「,」、
「;」、
「。」
が含まれていました。

** CLREQ

[147] 
[[CLREQ]]
は[[横書き]]と[[縦書き]]、
[[中国大陸]]、[[台湾]]、[[香港]]で[[句読点]]を書く位置が違う点を説明していました。
[[括弧]]や横線類と[[書字方向]]についても説明していました。
[SRC[>>146]]

[145] 
[[CLREQ]]
は
[[Unicode]]
の[[縦書き]]用[[符号位置]]は使うべきではなく、
他の仕組みで[[字形]]を置き換えるべきとしていました。
[SRC[>>146]]

[149] 
[[CLLRQ]]
の文字クラス表には、
[[時計回り]]に90°[[回転][回転 (書字方向)]]するべき[[文字]]が示されていました。
[SRC[>>148]]
([[句読点]]のように位置が変わるものはこれに含まれていませんでした。)


[REFS[
- [143] [CITE@en[Requirements for Chinese Text Layout中文排版需求]], [TIME[2020-10-15T04:59:44.000Z]], [TIME[2020-10-18T07:14:08.078Z]] <https://w3c.github.io/clreq/#writing_modes>
- [146] [CITE@en[Requirements for Chinese Text Layout中文排版需求]], [TIME[2020-10-15T04:59:44.000Z]], [TIME[2020-10-18T07:26:35.423Z]] <https://w3c.github.io/clreq/#line_composition_rules_for_punctuation_marks>
- [148] [CITE@en[Requirements for Chinese Text Layout中文排版需求]], [TIME[2020-10-15T04:59:44.000Z]], [TIME[2020-10-18T07:31:01.446Z]] <https://w3c.github.io/clreq/#tables_of_chinese_punctuation_marks>
]REFS]

** 注音字母

[153] 
[[注音字母]]の
「ㄧ」
は、
元々[[縦書き]]で横線、
[[横書き]]で縦線でしたが、
現在では主としてどちらでも横線が使われているそうです。
[SRC[>>152, >>155, >>154]]

[156] 
[[フォント]]によって横線が表示されたり、縦線が表示されたりします。


[157] 
[CITE[Wikipedia]]
は[[画像]]を使ったり [SRC[>>154]]、
[[漢字]]の
「一」と「丨」を使ったり [SRC[>>155]]、
[[記号]]の「ㄧ」
を使ったり [SRC[>>152]]
して[[書き分け][縦書きエミュレーション]]ようとしているようです。

[468] 
[[台湾原住民]]の[[言語]]の表記では専ら縦線字形が使われるそうです。
[SRC[>>467]]

[462] 
「ㄧ」から派生した
「ㆪ」
「ㆳ」
は、
[[Unicode]]
ではなぜか別の[[文字]]として扱われています。




[REFS[
- [152] 
[CITE@ja[[[注音符号]] - Wikipedia]], [TIME[2020-10-17T10:44:13.000Z]], [TIME[2020-10-18T07:44:44.113Z]] <https://ja.wikipedia.org/wiki/%E6%B3%A8%E9%9F%B3%E7%AC%A6%E5%8F%B7#cite_note-10>
- [155] [CITE@zh[[[注音符號]] - 维基百科,自由的百科全书]], [TIME[2020-10-04T07:47:15.000Z]], [TIME[2020-10-18T07:55:53.343Z]] <https://zh.wikipedia.org/wiki/%E6%B3%A8%E9%9F%B3%E7%AC%A6%E8%99%9F#%E5%AF%AB%E6%B3%95>
- [154] [CITE@zh[[[ㄧ]] - 维基百科,自由的百科全书]], [TIME[2020-10-04T07:49:54.000Z]], [TIME[2020-10-18T07:55:24.608Z]] <https://zh.wikipedia.org/wiki/%E3%84%A7>
-
[467] 
[CITE@ja[QvarieさんはTwitterを使っています: 「[[注音符号]]I《ㄧ》は、ユニコードでは縦書きの《一》の字形に統一されたのですが、台湾🇹🇼の各民族における言語の注音符号表記ではラテン文字の《I》に合わせて常に縦向きの《丨》で書かれるので、台湾華語本来のものと別字としてユニコード採用があってほしいです。https://t.co/9QME6YIumM」 / Twitter]], 午後8:33 · 2022年8月11日 [TZ[+09:00]], [TIME[2022-08-21T14:46:26.000Z]] <https://twitter.com/qvarie/status/1557691660095848449>


]REFS]

** 爻

[134] 
[[爻]]は、
[[縦]]に並べて使われます。
2つ並べて[[四象]]、
3つ並べて[[八卦]]、
6つ並べて[[六十四卦]]となります。

[135] 
普通、[[八卦]]がおおむね[[漢字]]1文字程度で表示されます。

[136] 
伝統的には単独の記号として使ったり、[[縦書き]]の[[漢字]]文中で使ったりしてきました。
記号的に使う場合、
[[銭]]に円形に配置するなど、
場面や宗教的意味に応じた書き方がされてきました。

[137] 
現在では[[左横書き]]文中で、縦配置のままの字形で使うことが多くなっているようです。

[138] 
[[Unicode]]
は1つから6つまでの全組み合わせをそれぞれ単独の[[文字]]として割り当てています。
([[Unicode]] はこういうのを複数の[[符号位置]]の組合せにしたがりがちですが、
[[爻]]はそうしなかったようです。)
例示字形はすべて縦配置のままです。
[[六十四卦]]も1文字分のスペースに詰め込まれています。
[CODE[[[Vertical_Orientation]]=[[U]]]]
で、[[縦書き]]でもそのままの[[正立]]字形とされます。


[REFS[
- [139] [CITE@ja[[[易]]の基礎(2) 易卦の構造]], [TIME[2020-10-18T04:00:48.000Z]] <http://anecs.ifortune.net/fortune/eki/kiso/kiso002.htm>
]REFS]

[140] このサイト (初出は[[メルマガ]]) は、
[[Unicode]]
に割り当てられる前に書かれたもので、
記号による代用表記を使っていました。
複数行を使う[[縦書き]]表記 (遠目に見ると [[Unicode]]
の例示字形と同じ) と、
「:::|||」
のような[[左横書き]]表記を使っていました。
このような横書き字形が一般的なものかどうかは不明です。

** 算木

[352] 
[[算木数字]]と[[蘇州号碼]]には縦式と横式の2種類の[[字形]]があります。
[[桁]]ごとに違えて使い、
[[横書き]]、[[縦書き]]とはあまり関係しないようです。

[470] 
[[Big5]],
[[CNS 11643]],
[[Unicode]]
が縦横区別して[[符号化]]しています。

[469] 
[[フォント]]によっては [CODE[GSUB]] の [CODE[camp]] 
[[機能][フォント機能]]を使って[[文字コード]]や[[書字方向]]と関係なく前後関係から[[グリフ]]の縦横を変化させます。


* 蒙古文字、満州文字

@@
[[MLREQ]]

@@
[[Unicode蒙古文字]]、[[パスパ文字]]

* 契丹文字

[547] [CITE@en[BabelStone Fonts : Khitan Small Script Fonts]], [TIME[2023-07-04T12:32:53.000Z]] <https://www.babelstone.co.uk/Fonts/KhitanSmall.html>

* ハングル

[151] 
[[KLREQ]]
は、
[[横書き]]では [CODE[,]]、[CODE[.]]
を使い、
[[縦書き]]では [CODE[、]]、[CODE[。]]
を使うとしていました。
[SRC[>>150]]


[REFS[
- [150] [CITE@en[Requirements for Hangul Text Layout and Typography : 한국어 텍스트 레이아웃 및 타이포그래피를 위한 요구사항]], [TIME[2020-08-27T02:04:58.000Z]], [TIME[2020-10-18T07:42:13.714Z]] <https://w3c.github.io/klreq/#fonts-horizvertpunct>
- [158] [CITE@en[Requirements for Hangul Text Layout and Typography : 한국어 텍스트 레이아웃 및 타이포그래피를 위한 요구사항]], [TIME[2020-08-27T02:04:58.000Z]], [TIME[2020-10-18T08:00:19.712Z]] <https://w3c.github.io/klreq/#hangulromanmix>
- [159] [CITE@en[Requirements for Hangul Text Layout and Typography : 한국어 텍스트 레이아웃 및 타이포그래피를 위한 요구사항]], [TIME[2020-08-27T02:04:58.000Z]], [TIME[2020-10-18T08:02:04.415Z]] <https://w3c.github.io/klreq/#punc-process>
]REFS]

[538] 
[[ハングル声調符号]] - 縦書きでは左、横書きでは左または上
([[Unicode]]表現と[[書字方向]]について[[ハングル声調符号]]参照。)

* 中東系文字

[110] 
[[疑問符]]は[[アラビア文字]]と[[ヘブライ文字]]で向きが違います。
[SEE[ [[?]] ]]

[161] [[正立]]された[[縦書き]]、[[孤立形]]で縦に並べる例 [SRC[>>160]]

[REFS[
- [160] [CITE@en[Text Layout Requirements for the Arabic Script]], [TIME[2020-09-08T10:52:27.000Z]], [TIME[2020-10-18T08:07:07.725Z]] <https://w3c.github.io/alreq/#h_vertical_upright>
]REFS]

[162] [[アラビア文字]]と混在して使われる[[数式]]における[[鏡像化]]

[REFS[
- [163] [CITE@en[Arabic mathematical notation]], [TIME[2017-10-02T10:31:39.000Z]], [TIME[2020-10-18T08:10:55.580Z]] <https://www.w3.org/TR/arabic-math/#Mirroring>
]REFS]

* ヒエログリフ

[107] 
[[ヒエログリフ]]は[[書字方向]]が自由でした。
[[生物]]の[[頭]]が[[書字方向]]を表すように[[字形]]が変化して使われていました。
[SRC[>>106, >>108]]


[552] 
[CITE[23185-n5239-hieroglyphic-arrows.pdf]], [TIME[2023-07-18T20:53:55.000Z]], [TIME[2023-07-19T13:17:44.387Z]] <https://www.unicode.org/L2/L2023/23185-n5239-hieroglyphic-arrows.pdf>


* アルファベット系文字


[109] 
[[古代ギリシャ文字]]は[[牛耕式]]で書かれ、
[[書字方向]]によって[[鏡像化]]していました。
[SRC[>>108]]

[425] 
通常の[[左横書き]]で装飾上用いられる[[合字]]は、
1文字ずつ[[正立]]させて[[縦書き]]するときは使いません。
例えば「[L[office]]」を[[縦書き]]すると
「[V[[YOKO[o]][YOKO[f]][YOKO[f]][YOKO[i]][YOKO[c]][YOKO[e]]]]」
になり、「ffi」は[[合字]]化されません。
([[前後の文字と続けて書かれる][続け字]]のが普通の[[アラビア文字]]ですら、
1文字単位に分離して縦に並べられます。)

[426] 
[[ローマ数字]]は例外で、
[[縦中横]]で[[合字]]化されることが多いようです。
[[日本語]]文中では例えば「[V[Ⅲ その他]]」のように[[箇条書き]]の記号として[[縦書き]]でもよく使われますが、
分解して縦に並べたり、寝かせたりすることはまずありません。
([[フォント]]依存で「[V[[YOKO[III]] その他]]」
と分離した字形になることはありますが、[[縦中横]]にはされます。)


[REFS[
- [106] [CITE@ja[[[縦書き]]と[[横書き]] - Wikipedia]], [TIME[2020-10-02T08:18:29.000Z]], [TIME[2020-10-17T06:35:40.963Z]] <https://ja.wikipedia.org/wiki/%E7%B8%A6%E6%9B%B8%E3%81%8D%E3%81%A8%E6%A8%AA%E6%9B%B8%E3%81%8D#%E3%83%92%E3%82%A8%E3%83%AD%E3%82%B0%E3%83%AA%E3%83%95%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E7%B8%A6%E6%9B%B8%E3%81%8D%E3%81%A8%E6%A8%AA%E6%9B%B8%E3%81%8D>
- [108] [CITE@ja[[[鏡文字]] - Wikipedia]], [TIME[2020-10-13T11:13:35.000Z]], [TIME[2020-10-17T06:42:40.175Z]] <https://ja.wikipedia.org/wiki/%E9%8F%A1%E6%96%87%E5%AD%97>
]REFS]

-*-*-

[535] 
[[現代日本語]]ではしばしば[[ラテン文字]]を1文字ずつ[[正立]]させて[[上縦書き]]します。
通常の[[左横書き]]用[[ラテン文字]][[字形]]は[[小文字]]の上に約半文字分の[[アキ]]が生じてしまうので、
縦に並べた時に[[字間]]が不自然に見えてしまいます (特に[[大文字]]と混在する場合)。
そこで[[上縦書き]]用[[字形]]は[[アキ]]量を調整したり、
[[字形]]自体を変更したりするようです。

* 人工文字



[545] 
[[CSUR]] に収録されている[[人工文字]]の [[Sarkai]] 文字 ([[サルカイ文字]]) 
は[[上縦書き]]しますが、
対応[[フォント]]には[[縦書き]]用字形をそのまま収録したものと、
回転して横書きにして収録したものがあります。
[SEE[ [[CSUR]] ]]

[546] 
[[CSUR]] に収録されている[[人工文字]]の
[[Kazat ʔakkorou]] 文字 ([[カザット・アッコロウ文字]])
は[[左上縦書き]]しますが、
対応[[フォント]]は回転して横書きにして収録しています。
[SEE[ [[CSUR]] ]]




* 数式・科学的記法

[459] 
「℃」などは1文字扱いの[[合字]]で広く実装されています。
[[横書き]]でも[[縦書き]]でも、この字形のまま[[正立]]させます。

[460] 
[[縦書き]]で、「°」をその前の数字とまとめて[[縦中横]]し、
「C」を次の文字として[[正立]]させる例もあります。
[SEE[ [[℃]] ]]

[554] 
[[フォント]]によっては[CH[°]]を[[縦書き]]すると[[全角]]の右下に円を配置し、
次の文字の右上にあるように表示できるようしてあるみたいです。
しかしこれだと[[縦書き]]表示だけには良くても、[[横書き]]のときと記号の順序を入れ替えることになってしまいます。

* 矢印類、方向のある図形

[550] [[アクセント表記]]: [SEE[ >>436 ]]

[551] [[矢印]]型[[長音]]: [SEE[ [[長音]] ]]

[549] [CITE@ja[Miwa / Ensan - azooKeyの開発者さんはTwitterを使っています: 「細かすぎて伝わらない日本語入力気になるポイント:縦書きテキストの中で「みぎ」で変換すると、下向き矢印が出てくる https://t.co/FtYZzXd8ew」 / Twitter]], [TIME[午後2:56 · 2023年7月18日][2023-07-18T05:56:43.000Z]], [TIME[2023-07-19T03:12:40.000Z]] <https://twitter.com/miwa_ensan/status/1681181183735107584>



[514] [CITE[[[影鷹]] : 以前の更新履歴 - リリース 0.1]], [TIME[2004-11-19T16:26:10.000Z]], [TIME[2022-08-31T03:30:20.634Z]] <http://www.kagetaka.org/histories/0.1.html>

>「△▲▽▼」を回転させないようにした


* 文字コード

[476] 
[[書字方向]]とそれによって生じる違いを[[文字コード]]、
[[文書形式]] ([[マーク付け]]、[[スタイル付け]]等)、
[[フォント]]のどの層でどう扱うかべきは難問で、試行錯誤が繰り返されてきました。
[SEE[ [[書字方向モデル]] ]]

[477] 
[[現代]]においては[[書字方向]]の違いだけから生じる[[字形]]の違いは[[文字コード]]層では扱わないとする原則が確立されています
(が例外も多々あります)。



** 文字の名前と書字方向

[220] 
[[Unicode]]
では[[括弧]]類には [CODE[LEFT]] や [CODE[RIGHT]]
のような[[文字の名前]]が与えられています。
しかしこれらは開き括弧、閉じ括弧を意味し、
[[書字方向]]に関わらず方向ではなく意味で使うとされています
[SRC[>>2, >>13]]。



[480] 
[[ISO/IEC 10646]] の 19 によれば、[[文字名称]]の
[CODE(charname)[LEFT]] や [CODE(charname)[RIGHT]]
は、 ([[鏡像文字]]の場合) 「左向き」、「右向き」
ではなく「開き」、「閉じ」を意味するのだそうです。

[481] 
[[ISO/IEC 10646]] と統合する前の [[Unicode 1.0]] では[[文字の名前]]も
[CODE(charname)[OPEN]] とか [CODE(charname)[CLOSE]]
だったのに。
なぜ悪い方に揃えたのか。


** 例示字形の書字方向

[252] 
[[文字コード]]の[[仕様書]]の本文や[[符号表]]に使われる[[文字]]の表示は、
[[仕様書]]が通常[[横書き]]されることもあってか、
[[横書き]]の[[字形]]とすることが多いようです。

[253] 
[[JIS]]
も[[左横書き]]用字形を基本に、
適宜[[縦書き]]字形を補う形を採っています (>>22)。
[[文字コード]]規格だけでなく、
[[フォント]]でも同じです (>>38)。

@@
[488] [[GB]] の[[蒙古文字]]・[[満州文字]]規格では

[255] 
[[Unicode]] は、
[[符号表]]で[[横書き]]用の字形を使っています。
[SRC[>>254]]



[487] 
[[Unicode]] は明らかに[[左横書き]]を[[優遇][欧米中心主義]]しています。
[[異体列]]のように1つの[[符号点]]に複数の[[代表字形]]を示した例もあるので[[符号表]]に複数の[[字形]]を示してもいいはずなのに、
[[右横書き]]や[[縦書き]]の[[字形]]はなぜか載せてもらえません。
[[蒙古文字]]や
[[Phaistos Disc Symbols]]
のように本来の用法とは違う向きがあえて選択されているものまであります。
[[東アジア]]向けの[[縦書き]]の代表字形は
[CITE[The Unicode Standard]] 本体に載せずに
[[UAX #50]] に分離されています (>>260)。


-*-*-

[486] 
[[蒙古文字]]等は本来[[縦書き]]されますが、
[[左横書き]]形で
[[Unicode]] [[符号表]]に掲載されています
(>>485)。

[369] 
[[Unicode]]
[CODE[U+101D0]] - [CODE[U+101FF]]
の
[[Phaistos Disc Symbols]]
は、
原典が[[円盤に渦巻状に書][渦巻書き]]かれた[[古代文字]]で、
敢えて言えば[[右横書き]]に当たります。
しかし研究書で[[左横書き]]文中に記述することが多い便宜上、
[[Unicode]]
では[[左横書き]]扱いになっています。
[[符号表]]の[[字形]]も、
[[鏡像化]]した[[左横書き]]用のもので、
原典とは逆になっています。
[SRC[>>368]]
[CODE[Bidi_Mirrored]]
は[[偽]]ですが、
[[右横書き]]で表示させるときは[[鏡像化グリフ]]にする必要があります。

[371] 
[[Unicode]]
[CODE[U+10300]] - [CODE[U+1032F]]
の
[[Old Italic]]
は、
[[左横書き]]でも[[右横書き]]でも書かれました。
[[符号表]]の[[字形]]は[[左横書き]]用のものです。
[SRC[>>370]]
[CODE[Bidi_Mirrored]]
は[[偽]]ですが、
[[右横書き]]で表示させるときは[[鏡像化グリフ]]にする必要があります。

[374] 
[[Unicode]]
[CODE[U+1680]] - [CODE[U+169F]]
の
[[Ogham]]
は、
原典の石碑では[[下から上の縦書きで左下から右上へと書かれました][左下縦書き]]が、
研究書などで[[ラテン文字]]に混ぜて[[左横書き]]されます。
[SRC[>>373]]
[[符号表]]は[[左横書き]]字形を示しています [SRC[>>375]]。
[CODE[Vertical_Orientation]] は
[CODE[R]]
です。



[REFS[
- [370] [CITE[The Unicode Standard, Version 13.0 - ch08.pdf]], [TIME[2020-03-09T17:53:38.000Z]], [TIME[2020-10-24T07:58:47.669Z]] <http://www.unicode.org/versions/Unicode13.0.0/ch08.pdf#page=10>
- [373] [CITE[The Unicode Standard, Version 13.0 - ch08.pdf]], [TIME[2020-03-09T17:53:38.000Z]], [TIME[2020-10-24T07:58:47.669Z]] <http://www.unicode.org/versions/Unicode13.0.0/ch08.pdf#page=21>
- [375] [CITE[The Unicode Standard, Version 13.0 - U1680.pdf]], [TIME[2020-03-02T22:41:06.000Z]], [TIME[2020-10-24T08:12:04.304Z]] <https://unicode.org/charts/PDF/U1680.pdf>
]REFS]




*** JIS の縦書き用例示字形

[FIG(short list)[ [19] [[JIS漢字]]の[[縦書き]]用字形の示された[[規格]]
- [[JIS X 0208]]
- [[JIS X 0213]]
- [[JIS X 4051]]
- [[JIS X 9051]]
- [[JIS X 9052]]
]FIG]


[22] 
[[JIS X 0208:1997]]
は[[書字方向]]が明示されない[[例示字形]]を示した他に、
[[非漢字]]の一部に[[参考]]として[[縦書き]]の[[例示字形]]を示していました。
[[縦書き]]が示された場合、そうでない方は[[横書き]]用の[[字形]]が示されていましたが、
特にそうであるとは明言されていませんでした。

[23] 
[[縦書き]]は網羅的でないとされており、その選択根拠は不明です。
例えば 
[CODE(charname)@en[IDEOGRAPHIC FULL STOP]] には[[縦書き]]を示し、
[CODE(charname)@en[FULL STOP]] には示していませんでした。
[CODE(charname)@en[COLON]] には[[縦書き]]を示し、
[CODE(charname)@en[SEMICOLON]] には示していませんでした。
[CODE(charname)@en[EM DASH]] には[[縦書き]]を示し、
[CODE(charname)@en[HYPHEN]] には示していませんでした。
[CODE(charname)@en[EQUAL SIGN]] には[[縦書き]]を示し、
[CODE(charname)@en[NOT EQUAL TO]],
[CODE(charname)@en[GREATER-THAN OVER EQUAL TO]],
[CODE(charname)@en[MINUS SIGN]] には示していませんでした。
[CODE(charname)@en[LEFT ANGLE BRACKET]] には[[縦書き]]を示し、
[CODE(charname)@en[LESS-THAN SIGN]] には示していませんでした。

[REFS[
- [33] [CITE@en[Character set "[[JIS X 0208:1997]] 附属書4 (規定) に縦書き例示字形 (参考) あり"]], [TIME[2020-10-07T10:24:06.000Z]] <https://chars.suikawiki.org/set/%24jisx0208-1997%3Ahas-vertical-example>
]REFS]

[27] 
[[JIS X 0213:2000]]
も[[書字方向]]が明示されない[[例示字形]]と、
[[非漢字]]の一部に[[縦書き]]の[[例示字形]]を示していました。
[[縦書き]]の[[例示字形]]のみの[[文字]]が4つありました。
それ以外は[[縦書き]]が示された場合、[[横書き]]用の[[字形]]も1つ[[以上]]示されていましたが、
特にそうであるとは明言されていませんでした。
[[例示字形]]の2つ目以後は[[参考]]とされ、
[[縦書き]]のみの4文字以外の[[縦書き]]はすべて2つ目以後の字形として示されました。

[31] 
4文字については附属書7に、
「一般の日本語では, 縦書き以外での利用がほとんど認められないことから, これらの図形文字の例示字体は, 縦書きのものだけを掲げている」
と説明がありました。

[47] 
この4文字のうち3文字は[[くの字点]]で、2文字を組合せて1セットで使うものでした。
[[縦書きグリフ]]を2つ縦に並べれば繋がりますが、
横に並べると繋がりません。

[28] 
[[縦書き]]はやはり網羅的でないとされており、その選択根拠は不明です。
[[JIS X 0208]]
にある[[文字]]は、
[CODE(charname)@en[LEFT DOUBLE QUOTATION MARK]],
[CODE(charname)@en[RIGHT DOUBLE QUOTATION MARK]]
の[[縦書き]]字形が削られた他は、
有無を変更しなかったようです。

[32] 附属書7によると、変更は
「実際の使用例などを勘案」
して [[JIS X 0208]]
の措置が不適切としたことによるようです。
しかし[[字形]]の状況は等しい
[CODE(charname)@en[LEFT SINGLE QUOTATION MARK]],
[CODE(charname)@en[RIGHT SINGLE QUOTATION MARK]]
は [[JIS X 0213]]
も従来通りとしました。



[29] 
[CODE(charname)@en[LEFT SQUARE BRACKET]],
[CODE(charname)@en[RIGHT SQUARE BRACKET]],
[CODE(charname)@en[KATAKANA LETTER SMALL RO]]
は明らかに[[縦書き]]の字形に[[縦書き]]であると明記されておらず、
誤植と思われます。
(厳密に言えば[[縦書き]]の印が無いものは[[横書き]]とは書いていないので、
印がなくても誤りとは言えないのですが、まあ誤りでしょう。)

[30] 
附属書7
によれば
[CODE(charname)@en[DOUBLE EXCLAMATION MARK]],
[CODE(charname)@en[DOUBLE QUESTION MARK]]
は
「縦書きでの利用を強く意識して」
追加されたもののようですが、[[横書き]]でも[[字形]]差がないためなのか、
[[縦書き]]字形とはされませんでした。

[34] [[元号合字]]は横並びの形のみ示され、その他に[[縦書き]]字形は示されませんでした。

[REFS[
- [35] [CITE@en[Character set "[[JIS X 0213:2000]] 附属書4 (規定) に縦書き例示字形 (参考) あり"]], [TIME[2020-10-07T10:33:10.000Z]] <https://chars.suikawiki.org/set/%24jisx0213-2000%3Ahas-vertical-example>
-- [[縦書き]]と明示されたものに >>29 を追加した表。
-- ここに示した[[文字]]の他、
[CODE(charname)@en[KATAKANA LETTER AINU P]]
- [36] [CITE@en[Character set "[[JIS X 0213:2000]] 附属書4 (規定) に横書き例示字形なし"]], [TIME[2020-10-07T10:33:29.000Z]] <https://chars.suikawiki.org/set/%24jisx0213-2000%3Ano-horizontal-example>
]REFS]


[FIG(quote)[ [21] [[JIS X 0208:1997]] 附属書4 ([[規定]])

>
[B[b) 文字]] 当該区点位置で表現される図形文字の字体を字形として例示したもの。
>
[B[c) 縦書き]] 当該区点位置で表現される図形文字の字体を縦書きで表示する場合の字形を例示したもの。この例示は,
一部の区点位置についてだけ行った。この欄は, [[参考]]であって[[規定]]の一部ではない。


]FIG]

[FIG(quote)[ [26] [[JIS X 0213:2000]] 附属書4 ([[規定]])

>
[B[c) 文字]] 当該面区点位置で表現される図形文字の字体を字形として例示したもの。
>
[BOX(indent)[
[B[備考]] “(SP)”, “(NBSP)” 及び “(SHY)” は, それぞれ SPACE, NO-BREAK SPACE 及び SOFT HYPHEN を表
し, 字形の例示ではない。
]BOX]
>
[B[d) 字形例]] 当該面区点位置で表現される図形文字の字体で, 参考となるその他の字形がある場合の字形を例示
したもの。この例示は, 一部の面区点位置についてだけ行った。また, 縦書き用の字形が異なることがある
場合も字形例で示した。この欄は, 参考であって規定の一部ではない。

> *は該当面区点位置で表現される図形文字において, 主に縦書きで使用される字形を例示したものである。

]FIG]

[FIG(data)[ [569] [[文字関係]]

:key: [DFN[[CODE[manakai:equivglyph:jisx0208:1997:vert]]]]
:desc:
[[JIS X 0208:1997]] [[縦書き]]の[[例示字体]]と同等の[[字形]]。
]FIG]
[FIG(data)[ [571] [[文字関係]]

:key: [DFN[[CODE[manakai:equivglyph:jisx0213:2000:vert]]]]
:desc:
[[JIS X 0213:2000]] [[縦書き]]の[[例示字体]]と同等の[[字形]]。
]FIG]



*** Unicode の縦書き用代表字形

[260] 
[[UCD特性]]
[CODE[Vertical_Orientation]]
(>>214)
が
[CODE[Tu]],
[CODE[Tr]]
の[[文字]]は、
[[符号表]]の他に、
[[UAX #50]]
に[RUBYB[代表字形][representative glyph]]の例示があります。
[[横書き字形]]は、
[[符号表]]と同じような[[字形]]の他に、
別の字形例が示された[[文字]]もあります。
[[縦書き字形]]は、
それぞれ1つ[[以上]]の[[字形]]が示されており、
中には[[横書き字形]]と同じものが示された[[文字]]もあります。
[SRC[>>259]]

[261] 
この[[縦書き字形]]や追加の[[横書き字形]]は、
[[フォント]]の実装が必ず用意しなければならないものではなく、
[[フォント]]の開発者は想定する地域の実情を調査し適当な[[グリフ]]を提供する[RUBYB[べき][shoud]]とされています。
[SRC[>>259]]

[262] 
複数の[[縦書き字形]]が例示された[[文字]]は、
[[小書き]]の位置や[[正立]]か寝かすかの違いで、
地域ごとに慣習が異なるものです。
同種の記号だからと使い方の違うものを1つの[[符号位置]]にまとめた皺寄せとも感じられます。

;; [269] 
せめてその情報を開発者向けにまとめておいてほしいものですが...

-*-*-

[263] 
複数の[[横書き字形]]が示されたものは、
[[注音字母]]
[CODE(char)[U+3127]]
[CODE(charname)@en[BOPOMOFO LETTER I]]
(>>153)
だけです。
[[横書き字形]]と[[縦書き字形]]の第一はどちらも横棒です。
[[横書き字形]]はそれに加えて縦棒が示されています。
[SRC[>>259]]
なお[[符号表]]では横棒が示され、
「the vertical stroke form is considered a
rendering variant」
と注記されています [SRC[>>264]]。

[290]
複数の[[縦書き字形]]が示されたものは、
4パターンあります。

- [291] 
該当するほとんどの[[句読点]]は、
[CODE[Tu]]
で、
中央に大書きした[[字形]]と、
橋に寄せて[[小書き]]した[[字形]]が示されています。
[[台湾]]では[[大書き]]の[[字形]]が[[横書き]]でも使われるものも、
なぜか[[縦書き]]にだけ[[大書き]]の[[字形]]が示されています。
- [292] 
[[全角]]の
[CODE[:]]
と
[CODE[;]]
は、
[CODE[Tr]]
で、
[[正立]]で中央に大書きした[[字形]]、
横に寄せて[[小書き]]した[[字形]]、
[[時計回りに90°回転]]した[[字形]]の
3つが示されています。
- [293] 
[[日本の元号名の漢字2文字の合字][元号合字]]は、
[CODE[Tu]]
で、
[[横書き]]と[[縦書き]]に横並び半角ずつの字形が示され、
[[縦書き]]にはそれに加えて縦並び半角ずつの字形が示されています。
- [294] 
「株式会社」式の4文字の[[合字]]は、
[CODE[Tu]]
で、
[[横書き]]と[[縦書き]]には[[左上から右下に「Z」型に配置][左上横書き]]した[[字形]]が示され、
[[縦書き]]にはそれに加えて[[右上から左下に「N」型に配置][右上縦書き]]した[[字形]]が示されています。


[303] 
[[組み文字]]のうち[[仮名]]を組合せたものは、
[CODE[Tu]] で、
[[横書き]]と[[縦書き]]で仮名各文字の配置が違い「ー」の向きも違う字形が示されています。
[[漢字]]を組合せたものと、なぜか扱いが違っています。

[304] 
[CODE[U+1F201]]
[CODE(charname)@en[SQUARED KATAKANA KOKO]]
は、
[CODE[Tu]]
ですが、
横並びの「ココ」を[[四角形]]で囲った字形です。
[[横書き]]と[[縦書き]]も同様の字形ですが、
[[横書き]]はやや下寄せになっています。
意図は謎ですが、実際の利用形態がそうなのでしょうか。

[350] 
[[句読点]]は[[符号表]]の例示字形や [[UAX #50]] の横書き例示字形が1つでも、
[[Standardized Variants]]
として
「corner-justified form」
と
「centered form」
が登録されています
[SRC[>>348, >>349]]。
[[符号表]]には小さいですが一応両方の字形例も示されています。
縦書きの各字形の差異も同程度に区別可能であるべき異体のように感じられますが、
[[Standardized Variants]]
と
[[UAX #50]]
の関係性はよくわかりません。
なお、
[[Standardized Variants]]
が登録されているのはなぜか[[全角文字]]の方だけで、
[[ASCII文字]]の方にはありません。


[REFS[
- [348] [CITE[The Unicode Standard, Version 13.0 - U3000.pdf]], [TIME[2020-03-02T22:41:14.000Z]], [TIME[2020-10-24T05:53:42.077Z]] <https://www.unicode.org/charts/PDF/U3000.pdf>
- [349] [CITE[The Unicode Standard, Version 13.0 - UFF00.pdf]], [TIME[2020-03-02T22:41:18.000Z]], [TIME[2020-10-24T05:54:17.212Z]] <https://www.unicode.org/charts/PDF/UFF00.pdf>
]REFS]

-*-*-

[296] 
[CODE[Tr]]
には[[括弧類]]が多く含まれています。
いずれも[[横書き]]字形を[[時計回りに90°回転]]したものが[[縦書き]]字形として示されています。

[297] 
なぜ [CODE[R]] でなく [CODE[Tr]] としたのか、
よくわかりません。
[[書体]]の設計次第で[[横書き]]・[[縦書き]]に特有の調整があり得るとも考えられますが、
それをいうなら 
[CODE[R]]
で調整し得る[[文字]]は他にもいくらでもあるはずです。

[298] 
[CODE[Bidi_Mirrored]] 
に含まれる[[鏡像化グリフ]]の[[文字]]と比べると、
[CODE[Tr]]
の[[括弧]]はごく一部に限られていることがわかります。
主に[[欧文]]用とみなされている[[括弧]] (例えば >>307) や、
[[数式]]用とされている[[括弧]]、
[[括弧]]として使われることもあるものの本来[[不等号]]の記号類などは、
[CODE[R]]
とされているようです。


[311] 
[CODE[U+2329]]
の
[CODE[〈]]
などは[[東アジア]]の[[文字コード]]にない[[括弧]]ですが、
なぜか 
[CODE[Tr]]
で縦書き字形が示されています。


[299] 
[CODE[U+301D]] [CODE(charname)@en[REVERSED DOUBLE PRIME QUOTATION MARK]],
[CODE[U+301E]] [CODE(charname)@en[DOUBLE PRIME QUOTATION MARK]],
[CODE[U+301F]] [CODE(charname)@en[LOW DOUBLE PRIME QUOTATION MARK]]
は
[CODE[Tr]]
ですが、
[[横書き]]と[[縦書き]]では線の向きと位置が異なっています。
フォールバックの回転が適切とも思えませんが、
[[正立]]よりは確かにまだましな字形になりそうです。


[301] 
[CODE[゛]]
と
[CODE[゜]]
は、
[CODE[Tu]]
で、
[[横書き]]は左上[[小書き]]、
[[縦書き]]は右下[[小書き]]となっています。
これらは[[結合文字]]ではなく単独の文字ですが、
通例「あ゛」のように結合済の文字がないときの代用として、
[[結合文字]]的に使われています。
[[横書き]]字形は基底文字の後に使われるのに適しています。
ところが[[縦書き]]字形は基底文字の前に使わないといけません。
[[右横書き]]での[[鏡像化]]の対象にはなっていませんが、
[[縦書き]]の場合と同じように基底文字の前に左書きと同じ字形を置かなければならないことになります。
[[Unicode]]
で[[書字方向]]によって文字の配置順序を変えさせる例はあまりなく、
本当にこれが意図したものなのか疑問です。

[439] 
なお[[半角カナ]]の[[濁点]]、[[半濁点]]は[[結合文字]]ではありませんが、
[[書記素クラスター]]としては似たような扱いを受けます。

-*-*-

[561] 
[[横書き字形]]が[[符号表]]の[[代表字形]]かというと、そうでもないようで、
見比べると視認可能な差異があるものもいくつかあります。
なぜ[[代表字形]]を使わずにわざわざ別のフォントで画像を作っているのか謎です。

[562] 
[[組み文字]]が顕著ですが、[[横書き字形]]も[[縦書き字形]]も品質が低いです。
[[小書き仮名]]の大きさと位置が不揃いで、[[小書き]]に見えないものもあります。
[[横書き字形]]すら怪しげです。
既成フォントをそのまま使ったのではなく新たに作ったのでしょうか。謎です。

[563] 
[[編集者]]の1人は当時[[フォント]]を専門分野の1つとする会社の社員で、
1人はおそらく[[日本語]]を母語とする者なのに、
なぜこれで良しとされたのでしょう。




*** Unicode の蒙古文字等符号表の字形

@@
[485] 
[[Unicodeの蒙古文字]]

[256] 
[[Unicode 7.0]]
から、
[[符号表]]の
[[Mongolian]]
と
[[Phags-pa]]
は[[横書き]]文に埋め込まれて使う、
[[時計回りに90°回転]]した[[字形]]に改められました。
それまでは通常の[[縦書き字形]]でした。
[SRC[>>254]]

[257] 
[[Unicode]]
で[[縦書き]]の表示方法を表す
[CODE[Vertical_Orientation]]
[[特性]]の値は、
この[[横書き]]用の字形を基準に定められています。
この[[符号表]]の形式は、
[[OpenType]]
のような近年の[[レンダリング][文字のレンダリング]]システムとも一貫していて実装しやすい形である
[SRC[>>254]]
とされています。



** 書字方向専用の符号位置


[246] 
古くからある[[文字コード]]には、
特定の[[書字方向]]用の[[文字]]が[[符号化]]されていました。
一部は
[[Unicode]]
に取り込まれて現在まで残っています。
(古い製品に実装されていても [[Unicode]] にはないものもいろいろあります。)


[FIG(short list)[ [15] [[書字方向]]依存[[符号位置]]のある[[文字コード]]
- [[MacJapanese]]
- [[Big5]]
- [[CNS 11643]]
- [[GB 12345]]
- [[GBK]]
- [[GB 18030]]
- [[Unicode]]
- [[GB 8045]]
- [[KPS 9566-97]]
- [[JIS X 0213]]
- [[JEF漢字コード体系]]
- [[MacArabic]]
- [[MacFarsi]]
- [[MacHebrew]]

]FIG]


[457] 
[[Google検索]]では、
[[縦書き]]の
[[PDF]]
の検索結果に[[縦書き]]用の字形の括弧類が含まれる事例が大量にでてきます。
[[OCR]]
によるものでしょうか。
それとも
[[PDF]]
の内部の文字の表現に由来するものでしょうか。

-*-*-

[76] 
[[GB 12345]]
は
[[GB 2312]]
にない[[縦書き]]の[[文字]]を追加していました。
追加の説明にその旨がありましたが、
それ以外にどう使うものか説明はありませんでした。
[[括弧類]]は[[横書き]]用が左、右という名前で、
[[縦書き]]用が上、下という名前でした。
それ以外の記号類は[[横書き]]用に特に説明はなく、
[[縦書き]]用にはその旨が名前にかかれていました。

[247] 
[[中華人民共和国]]では原則的には[[簡体字]]と[[左横書き]]が使われています。
[[簡体字]]の[[漢字コード]]である [[GB 2312]]
は、明言されていませんが、
[[左横書き]]を前提とした[[漢字コード]]だったのでしょう。

[[繁体字]]が必要になる場面を想定したとき、[[縦書き]]の記号も必要だということで、
[[GB 2312]]
由来の[[左横書き]]用の記号とは別に[[縦書き]]用を
[[GB 12345]]
にだけ追加したのでしょう。

[84] 
[[CNS 11643]] 
は[[横書き]]用と[[縦書き]]用の[[文字]]を符号化していました。
[[横書き]]用と離れたところに[[縦書き]]用を並べていた
[[JIS X 0208]] の非標準の各社の拡張や
[[GB 12345]]
とは違って、
[[CNS 11643]]
は順番に並べていました。例えば括弧なら、
左括弧、右括弧、上括弧、下括弧のように並べられていました。
ただし
[[CNS 11643]]
は[[符号位置]]と[[字形]]例を示しただけで、
各[[文字]]の説明はほとんどありませんでした。

[414] 
[[KPS 9566-97]]
は、
1区に[[句読点]]を[[横書き]]用と[[縦書き]]用の2組符号化していました。
[[朝鮮民主主義人民共和国]]関係者は、
この[[縦書き]]は
[[JIS X 0208]]
にもあるものだと主張していました [SRC[>>415]]。
(ただし実際には [[JIS]] は1つの[[区点位置]]で[[横書き]]と[[縦書き]]を表しており、
根拠として示されたのはその[[縦書き例示字形]]でした。)

[416] 
[[KPS 9566-97]]
は、
[[句点]]と[[閉じ括弧]]が一体化した[[合字]]も2つ[[符号化]]していました。
[[横書き]]と[[縦書き]]を区別するなら、
他に[[縦書き]]用もあって然るべきですが、
なぜかありませんでした。
[[横書き]]でしか使わないものなのでしょうか。



[REFS[
- [415] [CITE[01349-N2374-DPRK-AddSymbols.pdf]], [TIME[2001-09-25T06:16:00.000Z]], [TIME[2020-10-26T06:04:54.617Z]] <http://www.unicode.org/L2/L2001/01349-N2374-DPRK-AddSymbols.pdf>
]REFS]


-*-*-

[248] 
[[JIS X 0201]] や [[JIS X 0208]]
には[[横書き]]用、[[縦書き]]用と決められた[[文字]]はありませんでした。
初版の [[JIS X 0208-1978]] からそうだったのかはわかりませんが、
[[JIS X 0208:1997]]
には[[横書き]]用の[[例示字形]]と、
[[縦書き例示字形]]が示されていました (>>22)。

[[左横書き]]だけでなく[[縦書き]]もよく使われている[[日本]]の[[漢字コード]]が[[縦書き]]専用の[[文字]]を用意しなかったのは、
[[書字方向]]を[[文字コード]]レイヤーで扱うべきでないという考えによるものだったのでしょう。

[249] 
ただ実用上それでは不便なこともあったようで、
[[JIS X 0208]] の[[文字]]を[[左横書き]]用とみなし、
非標準の拡張で[[縦書き]]用の[[文字]]を割り当てることもありました。
また1文字分のスペースに複数の文字を縦横に並べて詰め込む[[組み文字]]も、
非標準の拡張として広く使われていましたが、
実用性より理論を重視したのか [[JIS]]
は長らく無視してきました。

[25] 
[[JIS X 0213:2000]]
の制定時の[[公開レビュー]]公開資料
[CITE[非漢字類の選定について]],
[TIME[1998年11月6日][1998-11-06]]版によると、
候補に[[縦書き]]用の[[字形]]が大量に収集されましたが、

>縦書きの用途を想定した縦書き用連数字のように,組版の機能を利用することで実現可
能なものについては,基本的に,追加候補としないこととした。

... という理由で収録されなかったそうです。
[[縦書き]]文中で[[縦中横]]的に数字や[[ラテン文字]]の[[単位]]記号を横に並べるため1文字扱いとしたものや、
[[縦書き]]の[[新聞]]などでよく使われる[[片仮名]]の[[単位]]の[[組み文字]]などが、
独自の拡張や[[外字]]として広く使われていました。

例外的に
「[[㍉]]」
などの[[NEC特殊文字]]だけは互換性のため[[標準化]]されました。
[[Windows]]
などに実装され、
[[左横書き]]字形と[[縦書き]]字形が使われていたので、
[[JIS X 0213:2000]]
もその両方を例示していました。
[[縦書き]]専用という形にはなっていませんでした。

;; [478] 「組版の機能」について、 [[JIS X 0213]] の制定と同時期に
(似たメンバーにより) [[JIS X 4051]] が改定されました。


[250] 
[[JIS X 0213]]
は[[縦書き]]専用の[[文字]]は[[規定]]していませんでしたが、
[[縦書き]]用[[例示字形]]''のみ''を示した[[文字]] ([[踊り字]]) がいくつかありました
(>>27)。

[452] 
[[MacJapanese]]
は[[縦書き字形]]を別の[[区点位置]]に割り当てていましたが、
[[Unicode]]
に相当する文字が存在しないものもありました。
そこで
[[Apple]]
は[[私用文字]]として[[異体選択子]]的なものを独自に定義し、
独自の[[異体列]]的なものに対応付けていました。
[SEE[ [[variant tag]] ]]

-*-*-

[251] 
[[右横書き]]の[[アラビア文字]]や[[ヘブライ文字]]を使うに当たり、
[[左横書き]]の[[ラテン文字]]や[[算用数字]]との混在を踏まえ、
現在では [[bidi]]
アルゴリズムを前提とした[[論理順]]が使われますが、
当初はすべて[[左横書き]]による[[表示順]]も使われました。
その場合[[鏡像化]]もなく、
すべて[[左横書き]]用の文字として扱われました。
現在でも
[CODE[ISO-8859-8]]
の処理にその名残りを留めています。


[463] 
古い [[Mule]] には
「Right-to-Left ASCII」
がありました。
[SEE[ [[Fp]], [[書字方向モデル]] ]]

[377] 
[[MacArabic]],
[[MacFarsi]]
は [[ASCII文字]]の記号を[[左横書き]]用とし、それとは別に[[右横書き]]用を追加していました。
その他のいくつかの記号も[[右横書き]]用としていました。
[SEE[ [[MacArabic]] ]]


[105] 
[[ヘブライ文字]]の[[アレフ]]は、
[[Unicode]]
では常用の[[右横書き]]の
「א」
と、
[[数学記号]]の[[左横書き]]の
「ℵ」
で[[重複符号化]]されています。
本来同じ[[文字]]のはずですが、
用法の違いから[[グリフ]]も違っていることがあります。
[[鏡像化]]はなく、[[書字方向]]由来の違いではありません。


[335] 
[[CJK]]
以外の[[端末エミュレーション]]で[[縦書き]]に使った記号として、
[CODE[U+23B4]]
[CODE(charname)@en[TOP SQUARE BRACKET]],
[CODE[U+23B5]]
[CODE(charname)@en[BOTTOM SQUARE BRACKET]],
[CODE[U+23B6]]
[CODE(charname)@en[BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET]]
があります [SRC[>>332]]。
最初の2つは
[[CJK]]
用として別に[[縦書き]]の[[符号位置]]があるにも関わらず、
なぜか別に[[符号化]]されています。
[[符号表]]には[[縦書き]]字形が示されており、
[CODE[Vertical_Orientation]]
は
[CODE[R]]
なので、
[[縦書き]]環境では逆に横向きになります。

[338] 
[[数式]]で適当な幅に引き伸ばして使う水平の[[括弧]]として、
[CODE[U+23DC]] - [CODE[U+23E1]]
があります
[SRC[>>332]]。
別に同じような[[縦書き]]の[[符号位置]]があるにも関わらず、
別に[[符号化]]されています。
[[符号表]]には[[縦書き]]字形が示されており、
[CODE[Vertical_Orientation]]
は
[CODE[R]]
なので、
[[縦書き]]環境では逆に横向きになります。

[343] 
[CODE[U+FE10]] - [CODE[U+FE19]]
に
Vertical Forms
として[[縦書き]]用の[[符号位置]]があります [SRC[>>342]]。
[CODE[U+FE30]] - [CODE[U+FE44]], [CODE[U+FE47]], [CODE[U+FE48]]
にもあります [SRC[>>346]]。
前者は [[GB 18030]],
後者は [[CNS 11643]]
との互換性のためとされています [SRC[>>14]]。
いずれも
[CODE[<vertical>]]
な[[互換分解]]で通常の[[符号位置]]に変換されます
[SRC[>>342, >>346]]。
[CODE[[[Vertical_Orientation]]=[[U]]]]
で、
[[横書き]]でも[[縦書き]]でも同じ字形となります。
なお[[句読点]]の例示字形は [CODE[:]] や [CODE[?]]
も含め右寄せ[[小書き]]の[[中文]]式です。
[[互換等価]]とされるのは通常の[[句読点]]ですが、
それとは別に[[符号表]]には
[CODE(charname)@en[SMALL]] 形の[[文字]]へ参照が記述されています。


[347] 
[CODE[U+FE45]] [CODE(charname)@en[SESAME DOT]],
[CODE[U+FE46]] [CODE(charname)@en[WHITE SESAME DOT]]
の
[[Unicode]] [[符号表]]には
「sesame dots are used beside vertical text for
emphasis」
とあります
[SRC[>>346]]。
特別に[[縦書き]]に限定されてはいませんが、
[[縦書き]]での利用を想定しているようです。
[[JIS X 0213:2000]]
にも同名の文字がありますが、
そちらでは特に[[縦書き]]限定の字形とはされていません。
[CITE[Unicode Standard]]
は、
「、」と関係しているがただの[[縦書き]]字形ではなく、
機能が違うので分けたとあります [SRC[>>14]]。
なお 「、」の [[Standardized Variants]]
に同形のものがあります (>>350)。

;; [479] 確かに[[ゴマ]]型[[傍点]]は[[縦書き]]で主に使われますが、
[[横書き]]の用例がないわけでもありません。
[SEE[ [[傍点]] ]]

[354] 
[CODE[U+3190]] - [CODE[U+319F]]
に[[漢文]]用の[[文字]]があります [SRC[>>353]]。
[[返り点]]が一通り用意されていますが、
使い方が謎であまり利用されていないとみられます。

- [355] 
[CODE[U+3190]] [CODE(charname)@en[IDEOGRAPHIC ANNOTATION LINKING MARK]]
は、
「tateten」
と説明があり、上下の[[漢字]]をひとまとめにすることを表す[[訓点]]を意味するようです。
[[例示字形]]は上半中央付近の短い縦線です。
[CODE[[[Vertical_Orientation]]=[[U]]]]
です。
[[互換分解]]はなぜかありません。 
[CODE[<vertical>]] [CODE(charname)@en[HYPHEN]]
辺りになっていても良さそうなものですが。
- [356] 
[CODE[U+3191]] [CODE(charname)@en[IDEOGRAPHIC ANNOTATION REVERSE MARK]]
は、
「kaeriten re」
と説明があり、[[レ点]]を表すようです。
[[例示字形]]は上半やや左寄りの「レ」の字型ですが、
[[片仮名]]の「レ」の例示字形とはやや異なるように見えます。
[CODE[[[Vertical_Orientation]]=[[U]]]]
です。
[[互換分解]]はありません。
- [357] [CODE[U+3192]] - [CODE[U+319F]]
は、
[[返り点]]の[[漢字]]を意味するようです。
[[例示字形]]は右上寄りの小書きの[[漢字]]です。
[CODE[[[Vertical_Orientation]]=[[U]]]]
です。
[[互換分解]]は
[CODE[<super>]]
で元の[[漢字]]になり、
[[上付き]]という扱いになっているようです。
[[上付き]] ([[superscript]])
に見えるのは、
[[横書き]]視点なのでしょうか。

;; [358] 実際の[[フォント]]は大書きの字形にしているものもあります。


[325] 
[CODE[,]]
は[[鏡像化]]されませんが、
[CODE[U+060C]]
[CODE(charname)@en[ARABIC COMMA]]
として中央大書きの[[コンマ]]を180°回転した字形が別に符号化されています
[SRC[>>323]]。

[326] 
[CODE[;]]
は[[鏡像化]]されませんが、
[CODE[U+061B]]
[CODE(charname)@en[ARABIC SEMICOLON]]
として180°回転した字形が別に符号化されています
[SRC[>>323]]。
他に左右反転させた
[CODE[U+204F]] [CODE(charname)@en[REVERSED SEMICOLON]],
同じく180°回転した
[CODE[U+2E35]] [CODE(charname)@en[TURNED SEMICOLON]]
が用意されています。

[327] 
[CODE[?]]
は[[鏡像化]]されませんが、
[CODE[U+061F]]
[CODE(charname)@en[ARABIC QUESTION MARK]]
として左右反転させた字形が別に符号化されています
[SRC[>>323]]。
同じ字形の
[CODE[U+2E2E]] [CODE(charname)@en[REVERSED QUESTION MARK]],
[CODE[U+2426]] [CODE(charname)@en[SYMBOL FOR SUBSTITUTE FORM TWO]] ([CODE[[[Vertical_Orientation]]=[[U]]]])
もあります。

;; [334] [[アラビア語]]の[[句読点]]は他に [CODE[.][FULL STOP]]、
[CODE[:]]、[CODE[!]] などがあるが、[[ラテン文字]]用と [[unify]]
されている。
[[bidi]] 処理により[[左横書き]]か[[右横書き]]か自動決定され、
必要ならそれに応じて[[グリフの選択]]がなされる。

[367] 
[[チェス]]記号として、
[[正立]]字形の他に、
45°、
90°、
135°、
180°、
225°、
270°、
315°
回転させた字形が[[符号化]]されています。
旧時代の印刷用の便宜のための慣習によるものと説明されています。
[SRC[>>365, >>366]]

[471] 
[[将棋]]の[[駒]]を表す[[記号]]の[CODE[☖]], [CODE[☗]]は、
攻守の違いを表す180度回転した[CODE[⛉]], [CODE[⛊]]があります。
[[ARIB外字]]由来で [[Unicode]] に追加されました。
[[新聞]]等の盤面の表示では[[駒]]だけでなく他の[[文字列]]も、
180度回転された状態となることがあります。
なぜか[[駒]]の記号だけ専用の[[文字コード]]があります。


[REFS[
- [332] [CITE[The Unicode Standard, Version 13.0 - U2300.pdf]], [TIME[2020-03-02T22:41:12.000Z]], [TIME[2020-10-24T03:18:41.526Z]] <https://www.unicode.org/charts/PDF/U2300.pdf>
- [353] [CITE[The Unicode Standard, Version 13.0 - U3190.pdf]], [TIME[2020-03-02T22:41:14.000Z]], [TIME[2020-10-24T06:31:10.614Z]] <https://www.unicode.org/charts/PDF/U3190.pdf>
- [342] [CITE[The Unicode Standard, Version 13.0 - UFE10.pdf]], [TIME[2020-03-02T22:41:18.000Z]], [TIME[2020-10-24T05:17:12.522Z]] <https://www.unicode.org/charts/PDF/UFE10.pdf>
- [346] [CITE[The Unicode Standard, Version 13.0 - UFE30.pdf]], [TIME[2020-03-02T22:41:18.000Z]], [TIME[2020-10-24T05:30:00.540Z]] <https://www.unicode.org/charts/PDF/UFE30.pdf>
- [365] [CITE[The Unicode Standard, Version 13.0 - ch22.pdf]], [TIME[2020-03-09T17:53:52.000Z]], [TIME[2020-10-24T07:39:38.288Z]] <https://www.unicode.org/versions/Unicode13.0.0/ch22.pdf#page=57>
- [368] [CITE[The Unicode Standard, Version 13.0 - ch22.pdf]], [TIME[2020-03-09T17:53:52.000Z]], [TIME[2020-10-24T07:39:38.288Z]] <https://www.unicode.org/versions/Unicode13.0.0/ch22.pdf#page=59>
- [366] [CITE[The Unicode Standard, Version 13.0 - U1FA00.pdf]], [TIME[2020-03-02T22:41:08.000Z]], [TIME[2020-10-24T07:40:12.143Z]] <https://www.unicode.org/charts/PDF/U1FA00.pdf>
]REFS]

[403] [CITE[Jドキュメントについて]]
([TIME[2020-10-25T06:40:19.000Z]], [TIME[2001-11-02T20:07:16.050Z]])
<https://web.archive.org/web/20011102200606/http://www.nec.co.jp/bungo/10info/support/jdoc.html>

>フォーム9~14では一部の文字は縦書きに適した向きで表示されますが、電子メールで受信すると、縦書きに適した向きになりません。これらの文字の使用は控えましょう。

[410] 詳細不明ですが、縦書き記述に無理のある方法を使っていたのでしょうか。

[539] 
[CITE[null]], [TIME[2005-04-08T15:38:04.000Z]], [TIME[2022-10-16T13:19:23.669Z]] <https://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ReadMe.txt>

** 類似字形による代替表現

[104] 
[[縦書き]]に対応していない環境で強引に[[縦書き]]を実現する手法として、
[[縦書き字形]]に似た[[横書き]]の[[文字]]で[[代用][代替表記]]するというものがあり、
そこそこ広く用いられているようです。
[SEE[ [[縦書きエミュレーション]] ]]


** 組合せて使う文字

[318] 
複数の[[文字]]を組合せて使う[[文字]]群があります。
[[grapheme cluster]]
と同様、
[[書字方向]]と[[グリフ]]の扱いが全体として一貫している必要があります。
[SEE[ [[組合せて使う文字]] ]]

** Teletex

[8] 
[[T.61]]
は[[日本語]]用の[[縦書き]]と[[中文]]用の[[縦書き]]を定めていました。

[438] いくつかの[[文字]]に[[横書き字形]]と[[縦書き字形]]が示されていました。
[[日本語]]と[[中文]]で違っていました。

@@


* フォントのグリフ

[400] 
[[フォント]]とその周辺の[[文字のレンダリング]]関連システムは、

- [472] [[書字方向]]に依存した[[グリフ]]データを持つこと
- [473] [[書字方向]]に応じて適切な[[グリフ]]を[[選ぶ][グリフの選択]]こと
- [474] [[書字方向]]に応じて適切に[[グリフ]]を配置
[WEAK[([[文字送り]], [[カーニング]], 対[[基線]]配置など)]]
すること
- [475] [[書字方向]]と[[グリフ]]配置に応じて適切に装飾、
編集機能等を提供
[WEAK[([[傍線]], [[キャレット]]など)]]
すること

... といった機構を持つ必要があります。

** JIS フォント

[87] 
[[JIS]]
は、
[[JIS X 0208-1983]]
の時代に、
[[ビットマップフォント]]を2種類規定していました。

[88] 
基本は[[横書き]]用の[[字形]]としつつ、
[[縦書き]]で[[字形]]が異なる場合も[[規定]]していました。

[89] 
この[[フォント]]をそのまま使う場合、
敢えて[[縦書き]]の[[字形]]が[[規定]]されたもの以外は、
[[横書き]]用の[[字形]]をそのまま縦に並べることが想定されたようです。

;; [90] この[[フォント]]の[[規格]]はその後改正も廃止もされずに放置されているようです。
[[JIS X 0208-1990]],
[[JIS X 0208:1997]],
[[JIS X 0213:2000]],
[[JIS X 0213:2004]]
とは整合していない上に追加された[[文字]]も欠けたままです。

[REFS[

[FIG(quote)[ [62] [[JIS X 9052-1983]] 2.

>
[B[(3) 縦書き用字形]] 各行の文字が縦読みになるような文字の並びにおいて使用する文字。
]FIG]

[FIG(quote)[ [59] [[JIS X 9051-1984]] 2.

>
[B[(3) 縦書き用字形]] 各行の文字が縦読みになるような文字の並びにおいて使用する字形。
]FIG]


[FIG(quote)[ [63] [[JIS X 9052-1983]]

>
[B[3.2 横書き用字形と縦書き用字形]] 文字の並びは, 横書き及び縦書きとする。

[B[(1)]] すべての文字に対して横書き用字形を定める。 

[B[(2)]] 横書き用字形の外に縦書き用字形を定める文字は, [B[JIS X 0208]] に規定している特殊文字の内, 記述記
号12文字, 括弧記号18文字及び学術記号1文字, 並びに平仮名小文字10文字及び片仮名小文字12
文字の計53文字とする。 

[BOX(indent)[
[B[参考]] 上記[B[(2)]]の53文字以外の文字の字形は, 横書きを基本として設計されているが, 縦書きにも用
い る文字については, 縦書きに用いることも配慮してある。
]BOX]
]FIG]


[FIG(quote)[ [60] [[JIS X 9051-1984]]

>
[B[3.2 横書き用字形と縦書き用字形]] 文字の並びは, 横書き及び縦書きと次のとおりとする。

[B[(1)]] すべての文字に対して横書き用字形を定める。 

[B[(2)]] 横書き用字形のほかに縦書き用字形を定める文字は, [B[JIS X 0208]] に規定している特殊文字の内, 記述 
記号12文字, 括弧記号18文字及び学術記号1文字, 並びに平仮名小文字10文字及び片仮名小文字 
12文字の計53文字とする。 

[BOX(indent)[
[B[参考]] [B[3.2(2)]]の53文字以外の文字の字形は, 横書きを基本として設計されているが, 縦書きにも用い 
る文字については, 縦書きに用いることも配慮してある。
]BOX]
]FIG]

- [61] 
[[JIS X 9052-1983]]
附属書 [CSECTION[2.3 縦書き用字形]]
- [91] 
[[JIS X 9051-1984]]
附属書 [CSECTION[2.3 縦書き用字形]]

]REFS]

[92] 
[[縦書き]]用の[[字形]]が定められた[[文字]]の一覧:

[REFS[
- [65] [CITE@en[Character set "[[JIS X 9051-1984]] 縦書き用字形"]], [TIME[2020-10-09T06:40:06.000Z]] <https://chars.suikawiki.org/set/%24jisx9051-1984%3Avertical>
- [66] [CITE@en[Character set "[[JIS X 9052-1983]] 縦書き用字形"]], [TIME[2020-10-09T06:40:30.000Z]] <https://chars.suikawiki.org/set/%24jisx9052-1983%3Avertical>
]REFS]

[67] 
9051 と 9052 の[[縦書き用字形]]がある[[文字]]は一致していました。

後の [[JIS X 0208:1997]]
の[[縦書き用字形]]がある[[文字]]とは多少出入りがありました。

[REFS[
- [68] [CITE@en[Compare [[character sets]]]], [TIME[2020-10-09T06:43:43.000Z]] <https://chars.suikawiki.org/set/compare?expr=%24jisx9051-1984%3Avertical&expr=%24jisx9052-1983%3Avertical&expr=$jisx0208-1997:has-vertical-example>
]REFS]

** OpenType のグリフと機能

[489] 
[[OpenType]] [[フォント]]は[[グリフ]]の集合体として構成されています。
[[フォント]]の [CODE[cmap]] [[表][OpenType表]]によって[[文字コード]]から代表の[[グリフ]]を取得し、
[[フォント]]の [CODE[GSUB]] [[表][OpenType表]]から[[書字方向]]に応じた[[機能][フォント機能]]を適用して適切な[[グリフ]]に置換します。

[490] 
[[グリフ]]それ自体のデータ構造は[[書字方向]]に依存せず、
[[正立]]状態の左下が[[座標原点]]、[[右]]が [[X軸]]、
[[上]]が[[Y軸]]の[[座標平面]]で記述されます。
[SEE[ [[OpenTypeの座標]] ]]

[466] 
[[グリフ]]自体には「横書き」「縦書き」のような性質はなく、
[CODE[GSUB]] [[表][OpenType表]]の構成次第で縦横共用にしたり、
左右で使い分けたり、縦横で使い分けたりできます。

;; [491] 
[[座標原点]]が左下にあるので[[左横書き]]のときが一番使いやすいという[[偏り][欧米中心主義]]はありますが。
なお厳密には下端ではなく[[英数字]]用[[基線]]が[[原点]]を通るので、
[[英数字]]に一番適した[[座標系]]という[[偏り][欧米中心主義]]もあります。

[492] 
[[グリフ]]の相互配置に必要な[[基線]]や[[文字幅]]・[[文字高]]などの情報は
[CODE[BASE]] [[表][OpenType表]]や
[CODE[GPOS]] [[表][OpenType表]]などにあり、
[[書字方向]]に依存して適用することになります。
[SEE[ [[グリフ位置決定]] ]]

[493] 
[CODE[GPOS]] [[表][OpenType表]]や [CODE[GSUB]] [[表][OpenType表]]の
[[lookup]]
は[[書字方向]]に依存していません。
[[lookup]] の[[後戻り列]]や[[入力列]]や[[先読み列]]に入力の[[グリフ]]列が一致すると
[[lookup]] の指定が適用されますが、この列の順序は[[論理順]]です。

;;
[494] なお、[[shaping]] によって[[結合文字]]等の配置順序が[[表示順]]に入れ替えられることはあります。
[[論理順]], [[表示順]]という言い方をしてもそれが何についてなのか要注意。

;; [518] 
当然ながら[[データ構造]]が[[論理順]]であるからといって、
そこで記述されるデータが[[書字方向]]非依存であることを意味しません。
例えば[[カーニング]]は隣接する2つの[[字形]]の距離を調整します。
同じ[[グリフ]]の組を同じ順序で並べていても、
[[左横書き]]用の[[カーニング]]値と[[右横書き]]用の[[カーニング]]値は、
一般に異なる値になります。

-*-*-

[380] 
[[OpenType]] は基礎的な部分が[[横書き]]前提で、
[[縦書き]]の場合に一部別の規定が適用されるという形になっています。
[[横書き]]利用、[[縦書き]]利用を想定した寸法情報を
[CODE[hhea]] / [CODE[hmtx]] [[表]]、
[CODE[vhea]] / [CODE[vmtx]] [[表]]に記述できます。

[465] 
[[OpenType]] には[[基線]]情報を記述する [CODE[BASE]] [[表]]があって、
[[横書き]]用と[[縦書き]]用の各種[[基線]]の位置を設定できます。

[495] 
[[OpenType]] には[[縦書き]]と[[横書き]]の違いに特に関係して
[CODE[chws]],
[CODE[cpct]],
[CODE[halt]],
[CODE[kern]],
[CODE[vchw]],
[CODE[vhal]],
[CODE[vkrn]],
[CODE[vpal]]
といった [CODE[GPOS]] [[機能][フォント機能]]があります。


-*-*-

[496] [[OpenType]]
には[[右横書きグリフ]]のための[[機能][フォント機能]]等があります。
(>>183)


[10] 
[[OpenType]]
には[[縦書きグリフ]]のための
[CODE[GSUB]]
[DFN[[CODE[vert]]]]
[[機能][フォント機能]]があります [SRC[>>9]]。

[378] 
[[OpenType]]
には[[仮名]]の[[字形]]のための[[フォント機能]]
[CODE[hkna]],
[CODE[vkna]]
があります。



[379] 
[[OpenType]]
には[[縦書き]]用に[[時計回りに90°回転]]して使うための回転''前''の[[字形]]用の
[CODE[GSUB]]
[DFN[[CODE[vrtr]]]]
[[機能][フォント機能]]と、
同じく回転''済''の[[字形]]用の
[CODE[GSUB]]
[DFN[[CODE[vrt2]]]]
[[機能][フォント機能]]があります。
[SRC[>>9]]


;; [497] 実[[フォント]]の事例は[[フォント機能]]参照。


[555] 
[CODE[vert]] など縦書き系の[[機能]]の[[グリフ]]は
[CODE[lfbd]] や [CODE[rtbd]] 
を使うべきではないとされます。
[SEE[ [[lfbd]] ]]


[FIG(data)[ [553] [[文字関係]]

:key: [DFN[[CODE[opentype:vert]]]]
:desc:
[[OpenType]] [[機能][フォント機能]] [CODE[vert]] (または相当)。

]FIG]

[FIG(data)[ [557] [[文字関係]]

:key: [DFN[[CODE[opentype:vrtr]]]]
:desc:
[[OpenType]] [[機能][フォント機能]] [CODE[vrtr]] (または相当)。

]FIG]

[FIG(data)[ [556] [[文字関係]]

:key: [DFN[[CODE[opentype:vrt2]]]]
:desc:
[[OpenType]] [[機能][フォント機能]] [CODE[vrt2]] (または相当)。

]FIG]



[REFS[
- [9] [CITE@en-us[Registered features, u-z - Typography | [[Microsoft]] Docs]], [[PeterCon]], [TIME[2020-10-03 18:50:22 +09:00]] <https://docs.microsoft.com/en-us/typography/opentype/spec/features_uz>
- [333] [CITE@en['''['''css3 writing modes''']''' text orientation discussion]], [[John Daggett]], [TIME[2011-07-24 16:15:19 +09:00]], [TIME[2020-01-17T22:50:03.000Z]], [TIME[2020-10-31T03:52:21.225Z]] <https://lists.w3.org/Archives/Public/www-style/2011Jul/0402.html>

[FIG(quote)[
[FIGCAPTION[
[428] [CITE[Source Han Sans Version 2.002 ReadMe (Released 2020-11-03) - SourceHanSansReadMe.pdf]], [TIME[2020-11-15T09:36:54.000Z]] <https://raw.githubusercontent.com/adobe-fonts/source-han-sans/release/SourceHanSansReadMe.pdf#page=10>
]FIGCAPTION]

>The pre-rotated non–full-width glyphs that are typically accessible via the effectively-deprecated 'vrt2' GSUB feature have been intentionally excluded from the glyph set.
]FIG]


]REFS]

[517] 
[CITE@en[縦組み 「:」が倒れていない · Issue #6 · trueroad/HaranoAjiFonts · [[GitHub]]]], [TIME[2022-09-07T07:02:07.000Z]] <https://github.com/trueroad/HaranoAjiFonts/issues/6>

[533] [CITE['''['''HarfBuzz''']''' default features for vertical text runs]], [TIME[2013-12-19T02:33:52.000Z]], [TIME[2022-10-10T15:22:05.664Z]] <https://lists.freedesktop.org/archives/harfbuzz/2013-August/003490.html>

[530] [CITE[[[Adobe Technical Note #5901]] - 5901.Kazuraki_Tutorial.pdf]], [TIME[2021-02-18T01:31:12.000Z]], [TIME[2022-09-29T14:52:38.106Z]] <https://adobe-type-tools.github.io/font-tech-notes/pdfs/5901.Kazuraki_Tutorial.pdf#page=23>

>グリフそのものは、2 つともまったく同じものですが、その字幅や、X 軸および Y
軸方向のデフォルトの位置設定に違いがあります。縦組用に、すべてのグリフを重複させて持たせる必
要がありました。これは、OpenType の「vmtx」テーブル内でグリフを X 軸と Y 軸の双方に沿ってシフ
トする機能に制限があったことに加えて、アプリケーションが GSUB や GPOS の機能に依存せずに、こ
れらの機能が有効でない場合でも、デフォルトで期待する動作が得られるようにしたいと考えたからで
す。

[534] 
[CITE@ja[[[花園明朝]]OTを0.510に更新、IVD 2012-03-02版に対応 - しろもじメモランダム]], [TIME[2022-10-10T15:41:56.000Z]] <https://shiromoji.hatenablog.jp/entry/20120306/1331028598>

>>Windowsでは、CFFアウトラインのOpenTypeフォントのGSUBテーブルにvrt2 featureが定義されていないのにvhea/vmtxテーブルがあると、OSに不正なフォントして弾かれます。

>縦書きグリフを追加するのではなく vhea/vmtx テーブルを削除する方法もあるが、これを試したところ Microsoft Word で縦書きができなくなった(花園明朝OTを指定してもMS明朝で描画される)ので採らなかった。


[540] [CITE@en-US[「[[貂明朝]]」は日本語フォントの新たな領域へ]], [TIME[2020-11-19T06:22:31.000Z]], [TIME[2022-10-18T06:24:31.980Z]] <https://ccjktype.fonts.adobe.com/2017/11/ten-mincho-ja.html>

>
G[B[POS]] フィーチャーの vert が含まれているのは、U+3099 (COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK) と U+309A (COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK) が縦組みで役に立つからです。残念ながら、この特定の GPOS フィーチャーに対応している環境は現時点では限られていて、少数ではありますが、これを含めておくことは、先駆的な一歩を踏み出すことであり、長期的には有用なことに違いありません。

-[564] 
[CITE@ja[横組み用仮名(hkna)と縦組み用仮名(vkna)は使うべきか - 帰ってきた💫Unicode刑事〔デカ〕リターンズ]], [TIME[2025-03-03T14:00:39.000Z]] <https://moji-memo.hatenablog.jp/entry/20090804/1249369271>
-[565] [CITE@en[GitHub - trueroad/HaranoAjiFonts: 原ノ味フォント / Harano Aji Fonts]], [TIME[2025-03-03T14:03:14.000Z]] <https://github.com/trueroad/HaranoAjiFonts>

[566] [CITE@ja[fontnoshiyo - 和田研細丸ゴシック Wiki - 和田研細丸ゴシック - OSDN]], [TIME[2009-06-16T03:09:57.000Z]], [TIME[2025-03-04T10:23:04.596Z]] <https://ja.osdn.net/projects/jis2004/wiki/fontnoshiyo#h2-.E6.A8.AA.E6.9B.B8.E3.81.8D.E3.81.A8.E7.B8.A6.E6.9B.B8.E3.81.8D.E3.81.A7.E5.AD.97.E5.BD.A2.E3.81.AE.E7.95.B0.E3.81.AA.E3.82.8B.E6.96.87.E5.AD.97.E3.81.AE.E4.BB.95.E6.A7.98>

-*-*-

[559] 
[[書字方向]]と[[文字のレンダリング]]と[[フォント]]の関係については、
[[結合文字]]、[[ZWJ]] も参照。

** Adobe CID

[523] 
[[CMap][CMap file]] では [DFN[[CODE[WMode]]]] ([[writing mode]] の意)
の値
[DFN[[N[0]]]]
により[[左上横書き]]を、
[DFN[[N[1]]]]
により[[右上縦書き]]を表現できました。
[SRC[>>522]]

[524] 
またその名前は、
末尾に
[DFN[[CODE[-H]]]]
(horizontal の意)
や
[DFN[[CODE[-V]]]]
(vertical の意)
を付けることで区別しています。
[SRC[>>522, >>529]]


[REFS[
-
[522] 
[CITE[5014.[[CMap]]_[[CIDFont]]_Spec.book - 5014.CIDFont_Spec.pdf]], [TIME[2021-02-18T01:31:12.000Z]], [TIME[2022-09-27T13:58:41.019Z]] <https://adobe-type-tools.github.io/font-tech-notes/pdfs/5014.CIDFont_Spec.pdf#page=48>
- 
[529] 
[CITE[Adobe Tech Note #5099 (Developing [[CMap]] Resources for [[CID-Keyed Fonts]]) - 5099.CMapResources.pdf]], [TIME[2021-02-18T01:31:12.000Z]], [TIME[2022-09-29T14:45:01.354Z]] <https://adobe-type-tools.github.io/font-tech-notes/pdfs/5099.CMapResources.pdf#page=21>
]REFS]

-*-*-

[85] 
[[Adobe-Japan1]]
は、
[[横書き]]用の[[字形]]の [[CID][Adobe CID]]
と別に、
[[縦書き]]用の[[字形]]の [[CID][Adobe CID]]
も[[規定]]しています。

- [86] [[JIS X 0208]] や [[JIS X 0213]] の[[規格票]]に[[縦書き]]用の例示字形が示されたものはカバーしているようにみえます。
- [95] [[JIS]] に[[縦書き]]用の例示字形がなくても[[縦書き]]用の[[字形]]が示されたものがあるようです。
- [93] それ以外の独自の[[片仮名]]の[[単位]]の[[組み文字]]などの[[非漢字]]で[[横書き]]と[[縦書き]]の[[字形]]が示されたものがあります。
- [94] [[K-JIS]] 由来らしい、[[縦書き]]用の[[括弧]]と[[数字]]の[[組み文字]]があります。
- [96] 
[[ラテン文字]]その他について、
[[縦書き]]用の[[時計回り]]に90°回転した[[字形]]があります。
[CODE[vert2]] 用です。
- [558] 
非標準の拡張で、互換性への配慮が理由で[[縦書き]]字形を増やしたものがあります。
[SEE[ [[AJ1]] ]]

[525] 
[[Adobe-CNS1]] は [[CNS 11643]] や [[Big5]] に必要な[[縦書き字形]]の他、
[CODE[vrt2]] 用の[[回転][回転 (書字方向)]]字形を収録しています。

[526] 
[[Adobe-GB1]] は [[GB 12345]] 用[[縦書き字形]]の他、
[CODE[vrt2]] 用の[[回転][回転 (書字方向)]]字形を収録しています。

[528] 
[[Adobe-Korea1]] は [[KS X 1001]] 用[[縦書き字形]]の他、
[CODE[vrt2]] 用の[[回転][回転 (書字方向)]]字形を収録しています。

[527] 
[[Adobe-KR]] は[[縦書き字形]]を収録しています。
おおむね [[KS X 1001]] [[非漢字]]に対応するのに必要な分が揃っているようです。
([CODE[vrt2]] 専用グリフはありません。)


[531] 
[CITE@en[Mapping for U+2B05, U+2B06 & U+2B07 in vertical writing · Issue #2 · adobe-type-tools/cmap-resources · [[GitHub]]]], [TIME[2022-09-30T07:45:27.000Z]] <https://github.com/adobe-type-tools/cmap-resources/issues/2>

[532] 
[CITE@en-US[To V, Or Not To V]], [TIME[2020-11-19T06:22:26.000Z]], [TIME[2022-09-30T07:47:13.102Z]] <https://ccjktype.fonts.adobe.com/2015/09/to-v-or-not-to-v.html>



** フォントのグリフ実装状況

[536] 
[CITE[Japanese Windows and hangul---JApanese and KOrean konzai-bun]], [TIME[2006-03-10T14:05:15.000Z]], [TIME[2022-10-11T05:38:55.700Z]] <https://ha1.seikyou.ne.jp/home/akairingosaita/hangul/jako.htm#ks>

>「、」や「。」はKSでは縦書き専用のようです。 (注: フォントにより差異があります。)

[537] 実際には [[KS X 1001]] はそのようにはなっていないのですが、
当時[[大韓民国]]で使われていた[[フォント]]はそういうものが多かったようです。
(「、」や「。」は当時の[[韓国語]]であまり使わず[[縦書き]]専用扱いだった?)



[337] [CITE@ja[文字の取り扱い - 超漢字ウェブサイト]], [TIME[2010-11-10T00:20:37.000Z]], [TIME[2022-08-25T14:53:10.774Z]] <http://www.chokanji.com/ckv/manual/03-07-02.html>

[464] [CITE@en[[[Windows]]日本語フォントでのUAX50問題文字のテスト]], [[Shinyu MURAKAMI]], [TIME[2022-07-12 14:46:45 +09:00]], [TIME[2022-07-12T10:43:40.000Z]], [TIME[2022-07-13T02:14:51.723Z]] <https://lists.w3.org/Archives/Public/public-i18n-japanese/2022JulSep/0028.html>

[515] 
[CITE@ja[書体を登録する - [[超漢字]]ウェブサイト]], [TIME[2010-11-10T00:15:32.000Z]], [TIME[2022-09-03T06:28:43.139Z]] <http://www.chokanji.com/ckv/manual/01-07-10.html>

[CITE[[[超漢字]]]]には[[フォント]]単位で
「横書き文字」、「縦書き文字」の属性があるらしい。

* 組版

[SEE[ [[文字のレンダリング]], [[グリフの選択]] ]]



** JIS X 4051

[48] [[JIS X 4051-1995]]
は[[文字クラス]]を本体4.1.1で[[規定]]し、
附属書で
[[JIS X 0221]] との対応関係を[[規定]]していました。
[[JIS X 4051:2004]]
は[[文字クラス]]を本体6.1.1で[[規定]]し、
附属書で
[[JIS X 0213]] との対応関係を[[規定]]していました。

[45] 
[[JIS X 4051-1995]] 4.1.1 から参照された
[CSECTION[表1 文字クラス]]
に「横書き用文字」
と
「縦書き用文字」
が示されました。
縦横は差分ではなく、縦横同じ字形で示された文字もありました。
横にだけ示された文字もありました。
[[JIS X 4051:2004]] 6.1.1 から参照された
[CSECTION[表4 文字クラス]]
もいくつか追加がある以外はほぼ同じでした。

[46] 
[[JIS X 4051-1995]]
[CSECTION[附属書 国際符号化文字集合 (JIS X 0221) との対応]]
は
「縦書き・横書きの文字種につ 
いては, 横書きを基準として決め, 縦書き時にはそれを縦書き用文字に変換することを原則とし,」
て[[字形]]欄に[[横書き]]と[[縦書き]]の字形例を示しました。

[64] 
[[JIS X 4051:2004]]
[CSECTION[附属書1 (規定) 7ビット及び8ビットの2バイト情報交換用 符号化拡張漢字集合 (JIS X 0213) との対応]] 
は 
「縦書き・横書きの文字種 
については, 横書きを基準として決め, 縦書き時にはそれを縦書き用文字に変換することを原則とし,」 
て[[字形]]欄に[[横書き]]と[[縦書き]]の字形例を示しました。



[49] 
本体表と附属書を比べると、本体表は附属書の一部の[[文字]]に限って示しているように見えます。
(本体表は[[字形]]だけで、[[文字]]を同定できる情報が他に示されていないので、
断言しがたいですが。)

[50] 
附属書では一部の[[文字クラス]]は[[符号位置]]だけが示されており、
それ以外は縦横の字形を明記して示していました。

[69] 
本体表、附属書とも、
1995 と 2004
で出入りがありました。
1995 は [[JIS X 0221]] の[[日本語文字]]、
2004 は [[JIS X 0213:2000]]
を対象としているのが変更の主たる要因のようです。
2004 には [[Unicode]] で1つの[[符号位置]]で表せない
(が [[JIS X 0213]] では1つの[[面区点位置]]で表される)
[[文字]]も含まれました。

[70] 
縦横は差分ではなく、縦横同じ字形で示された文字もありました。
横にだけ示された文字もありました。
2004 には縦にだけ示された文字もありました。
1995 と 2004 の字形は必ずしも等しくありません。

[73] [[JIS X 4051:2004]]
にはなぜか
[[JIS X 0213:2000]] 
にある[[ㇷ゚]]は含まれていませんでした。
([[字形]]が示された[[文字クラス]]に入るべきもののうち唯一 [[Unicode]] で1つの[[符号位置]]で表されないものでした。
他の1つの[[符号位置]]で表されない[[文字]]は、附属書表1の[[字形]]を示さない[[文字クラス]]にすべて含まれていました。)

[REFS[
- [54] [CITE@en[Character set "[[JIS X 4051-1995]] 附属書各表 字形 縦書きに横書きと異なる字形"]], [TIME[2020-10-08T11:23:22.000Z]] <https://chars.suikawiki.org/set/%24jisx4051-1995%3Avertical-specific-glyphs>
- [71] [CITE@en[Character set "[[JIS X 4051:2004]] 附属書各表 字形 縦書きに横書きと異なる字形"]], [TIME[2020-10-09T09:40:13.000Z]] <https://chars.suikawiki.org/set/%24jisx4051-2004%3Avertical-specific-glyphs>
- [72] 1995, 2004 の比較:
[TIME[2020-10-09T09:43:24.000Z]] <https://chars.suikawiki.org/set/compare?expr=%24jisx4051-1995%3Avertical-specific-glyphs&expr=%24jisx4051-2004%3Avertical-specific-glyphs>
]REFS]

[55] 
[[JIS X 4051-1995]]
と
[[JIS X 0208:1997]]
の[[縦書き字形]]を比べると、
[[JIS X 4051-1995]] にだけあるのは [[JIS X 0208]]
にない[[文字]]と「・」 (「・」は[[字形]]は似ているが縦横幅の違い)。
[[JIS X 0208]] にだけあるのは「=」。

[74] 
[[JIS X 4051-1995]]
と
[[JIS X 0213:2000]]
の[[縦書き字形]]を比べると、
若干の出入りがあります。

[REFS[
- [56] 比較:
<https://chars.suikawiki.org/set/compare?expr=%24jisx0208-1997%3Ahas-vertical-example&expr=%24jisx4051-1995%3Avertical-specific-glyphs&expr=%24jisx4051-2004%3Avertical-specific-glyphs&expr=$jisx0213-2000:has-vertical-example>
]REFS]

[51] 
他に本体中の例示でいくつか示されていました。

[FIG(quote)[ [41] [[JIS X 4051-1995]] 2. 

>
[B[(40) 省略記号]] [SNIP[]]
>
[BOX(indent)[
[B[例1.]] 横書きにおける前置省略記号 ¥$£

[B[例2.]] 横書きにおける後置省略記号 °’”%‰¢

[B[参考]] 片仮名単位字を含む全角単位字及び [B[JIS X 0208]] に含まれる単位記号は, この規格では省略記号
として扱う。

[BOX(indent)[
[B[例]] 縦書きの片仮名単位字 [TATE[㌔]]
]BOX]

]BOX]


>
[B[(57) 中点類 (なかてんるい)]] [SNIP[]]
>
[BOX(indent)[
[B[例]] 横書きにおける中点類 ・:;

[B[参考]] 縦書きの和文では, セミコロン “;” を使用しない。
]BOX]



]FIG]

[42] 
[CSECTION[(60) 始め括弧類]] の「[B[例]] 横書きにおける始め括弧類」

[CSECTION[(71) 分離禁止文字]] の 「[B[例]] 横書きにおける分離禁止文字」

[52] 例示中の「[TATE[㌔]]」は表1にも附属書にも字形例がなく、
ここでだけ字形が示された文字でした。

[57] [[JIS X 4051:2004]] でも似たような例示 (項目と例示される文字は多少変更あり)。

[53] 
例示でない本文 (横書き) 中で敢えて[[縦書き]]字形を示したのが1個所。

[FIG(quote)[ [43] [[JIS X 4051-1995]] 3.1 (1) 

>
[B[(a)]] [SNIP[]] 縦書きで漢数字の位取り記 
号として使われる読点 “[TATE[、]]” 及び小数点として使われる中点 “[TATE[・]]” の字幅は半角とするが, [SNIP[]]
]FIG]

(縦書きの実例あり。ここでの[[半角]]とは縦幅のこと。)

2004 4.2 a) 1) では本文中の字形が削除されていた。 (実例は 2004 にもある。)

[58] [[JIS X 4051:2004]] では
5.2, 表2, 表3
に[[漢文]]用の[[文字]]が[[縦書き]]字形で示された。

[113] 
[[JLREQ]] [SRC[>>17]]
には
[[JIS X 4051]]
の[[文字クラス]]に相当するものが示されていましたが、
[[字形]]は[[左横書き]]用が一部挙げられているに過ぎませんでした。
[[ISO/IEC 10646]]
の[[文字]]の一覧表には、
一部の[[文字]]に、
「横組で使用」
または
「縦組で使用」
と書かれていました [SRC[>>133]]。


[141] 
なお、書かれている[[文字の名前]]は[[半角]]の方なのに、
使われている[[文字]]は [CODE(charname)@en[FULLWIDTH]] の方でした。
また対象は 
[[ISO/IEC 10646]]:2003/Amd.3:2008
285 
[[BASIC JAPANESE]]
と
286
[[JAPANESE NON IDEOGRAPHICS EXTENSION]]
の[[文字]]と説明されていましたが、
実際には[[Unicode文字]]以外に2つの[[符号位置]]の列
([[JIS X 0213]] では1[[文字]]で表されるもの)
もいくつか含まれていました。

;; [142] 
[[JIS X 4052:2004]]
は
[[JIS X 4052-1995]] の表をベースに
[[UCS]] から [[JIS X 0213]]
に置き換えたので 
[[JIS]] の符号位置・名前と [[UCS]] のブロックが示されるという矛盾があり、
[[JLREQ]]
は
[[JIS X 4052:2004]]
の表をベースに
[[JIS X 0213]] から [[UCS]]
に置き換えたのでこのようなおかしなことが起こっているのでしょう。


[114] 
[[JLREQ]]
は[[小書き仮名]]について、
「縦組では文字の外枠の天地中央で右寄り,横組では文字の外枠の左右中央で下寄りに字面を配置」
と言及していました
[SRC[>>18]]。

[117] 
[[JLREQ]]
は縦横専用の文字を次のように述べていました。
[SRC[>>116]]


- [118] 「、」: 「縦組では[SNIP[]]使用する」「横組で使用する」
- [120] 「。」: 「縦組では[SNIP[]]使用する」「横組で使用する」
- [119] 「,」、「.」: 「横組で使用する」
-- 書かれている[[文字の名前]]は[[半角]]の方なのに、
使われている[[文字]]は [CODE(charname)@en[FULLWIDTH]] の方
- [121] 「「」、「」」: 「縦組では[SNIP[]]用いる」, (横) 「最近は,かぎ括弧の使用が増えている」
- [122] 「“」、「”」、「‘」、「’」: 「横組では[SNIP[]]用いる」「横組専用の括弧類であり,縦組では使用しない」「縦組において欧文用文字(cl-27)などを時計回りに90度回転させて配置する場合に使用する例がある」
- [123] 「〝」、「〟」: 「縦組専用の括弧類であり,横組では使用しない」
- [124] 「〔」、「〕」: 「縦組用に変形したもの[SNIP[]]である」
- [125] 「[」、「]」: 「特別な場合を除き,横組ではブラケットを使用する」
- [126] [[句点類]]、[[読点類]]: 「縦組用と横組用では,文字の外枠に対する字面の配置位置が異なる」
- [127] [[始め括弧類]]、[[終わり括弧類]]、[[ハイフン類]]: 「縦組用と横組用で字面の向きを変更する」
- [128] [[小書きの仮名]]: 「文字の外枠に対する字面の位置が縦組用と横組用では異なる」
- [129] [[長音記号]]: 「字形の向きを変更するだけではなく,字形そのものも変更している.横組用の長音記号は,縦組用の長音記号を単純に反時計回りに90度回転したものではない」
- [132] 「全角単位字は,主に縦組で使用するもので,横組で使用するのは,体裁がよくないので避けた方がよい」
[SRC[>>131]]


[115] 
その他 [[JLREQ]] も例文中にいくつか[[縦書き字形]]が現れてはいました。


[164] 
[[文字クラス]]の一覧表で[[縦組]]でまたは[[横組]]で使うと明記されているもの:

[REFS[
- [165] [CITE@en[[[Character set]] "horizontal"]], [TIME[2020-10-18T08:32:32.000Z]] <https://chars.suikawiki.org/set/%24jlreq%3Ahorizontal>
- [166] [CITE@en[[[Character set]] "vertical"]], [TIME[2020-10-18T08:32:40.000Z]] <https://chars.suikawiki.org/set/%24jlreq%3Avertical>
]REFS]


-*-*-

[44] 
([[時計回り]]90度回転の[[左横書き]])
1995 3.5 (6)
2004 4.6 f) 「縦書きの行中で, 連数字及び単位記号の文字の向きを右回りに90° 回転して横書きにした場合」
1995 3.6 (2) 
2004 4.7 b)「縦書きの行中では, 欧文の文字の向きを右回りに90° 回転して欧文を横書きにし,」
2004 4.13 d) 「[L[文字の向きを右回りに90°回転して横書きにする]]」
[[JIS X 4052:2000]] 6.1 a) 3) 
「文字の並びの横軸を時計回りに 90度回転させた横書き」
[[JLREQ]] [SRC[>>16]]
「文字を時計回りに90度回転し,配置」

(広義の[[縦中横]])
1995 3.5 (7)
2004 4.6 g) 「縦書きの行中で, 連数字及び単位記号を縦書きの文字の向きのまま横書きにした場合」
1995 3.6 (2) 備考
2004 4.7 b) 備考 「縦書きの欧字又は数字を和字として扱う場合」「添え字付きの欧字を縦中横を使用して配置する場合」
1995 3.7 
2004 4.8「[B[縦中横処理]] 縦中横処理は, 縦書きの行中で, 縦書きの字の向きのまま横書きになるように文字列 
を中央に配置する。」
1995 3.9 (4)
2004 4.13 d) 「文字の向きを右回りに90° 回転して横書きにする」
[[JIS X 4052:2000]] 6.18 「欧文用文字を縦書き中で和字扱いとする」 (1文字ずつ[[正立]]させること)
[[JLREQ]] [SRC[>>16]]
「正常な向きで,1字1字配置」
「正常な向きのまま,横組」 ([[縦中横]])

[144] 
この辺の整理は [[CLREQ]] が [[JLREQ]] の整理を踏襲しています。
「相同的書寫方向,依字母逐個排列」
「保持正常方向,橫排處理(如日文的縱中橫排)」
「順時針方向旋轉90°」
[SRC[>>143]]
[[KLREQ]]
にも似た分類がありました
[SRC[>>158]]。

[REFS[
- [17] [[JLREQ]]:
[CITE@en[Requirements for Japanese Text Layout [[日本語組版処理の要件]](日本語版)]], [TIME[2020-09-16 08:08:39 +09:00]] 
-- [18] <https://w3c.github.io/jlreq/#kanji_hiragana_and_katakana>
-- [16] 
<https://w3c.github.io/jlreq/#major_differences_between_vertical_writing_mode_and_horizontal_writing_mode>
-- [116] 
<https://w3c.github.io/jlreq/#differences_in_vertical_and_horizontal_composition_in_use_of_punctuation_marks>
-- [130] 
<https://w3c.github.io/jlreq/#mixed_text_composition_in_vertical_writing_mode>
-- [131] 
<https://w3c.github.io/jlreq/#grouping_of_characters_and_symbols_depending_on_their_positioning>
-- [133] 
<https://w3c.github.io/jlreq/#character_classes>

]REFS]

** Unicode の鏡像化


[225] 
[[Unicode]]
は
[[bidi]]
を[[表示順]]ではなく[[意味順][論理順]]に[[文字]]を並べることで実現しています。
その結果[[左横書き]]と[[右横書き]]で同じ意味でも[[字形]]が逆になるケースが出てきますが、
あくまで[[文字]]データは[[意味順][論理順]]で適切なものを選び、
[[表示][文字のレンダリング]]の際に相応しい[[グリフを選ぶ][グリフの選択]]こととしています。

[221] 
[[Unicode Bidirectional Algorithm]]
の
[DFN[L4]]
は、
[[文字]]の[[解決済方向性]]が
[CODE[R]]
であって、かつ[[文字]]の
[CODE[Bidi_Mirrored]]
[[特性][特性 (UCD)]]値が[[真]]である[[場合、その場合に限って][if and only if]]、
[[鏡像化グリフ]]で描画することと定めています
[SRC[>>6]]。
ただし [[HL6]]
が適用される場合は例外となります
[SRC[>>6, >>5, >>2]]。

[226] 
意図した[RUBYB[[[意味]]][semantics]]を表す適切な[[文字]]を使うため、
また[[相互運用性]]や[[セキュリティー][文字のセキュリティー]]を防ぐため、
実装は
[[L4]]
に従い適切に[[鏡像化]]しなければ[RUBYB[なりません][must]]。
[SRC[>>2]]

[222] 
[[Unicode Bidirectional Algorithm]]
の
[DFN[HL6]]
は、
[[上位層プロトコル]]次第で、
特定の状況で、
[CODE[Bidi_Mirrored]]
[[特性][特性 (UCD)]]値が[[偽]]であっても、
[[鏡像化グリフ]]で描画できるとしています。
歴史的な[[用字系]]とその[[句読点]]、
[[私用文字]]、
[[数式]]中の[[文字]]などの状況が想定されます。
次のいずれかまたは両方の条件に合致する[[文字]]となります。
[SRC[>>5]]

- [223] [[解決済方向性]]が [CODE[R]] の[[文字]]
- [224] [[解決済方向性]]が [CODE[L]] で、
[[双方向的型]]が [CODE[R]] または [CODE[AL]]
の[[文字]]

[177] 
[[UCD]]
の[[特性][特性 (Unicode)]]
[DFN[[CODE[Bidi_Mirrored]]]]
は、
[[規定]]であり [SRC[>>167]]、
[CODE[UnicodeData.txt]] [SRC[>>175]]
に収録されています。
[DFN[[CODE[DerivedBinaryProperties.txt]]]] [SRC[>>210]]
にも収録されています (こちらの方が使いやすいかもしれません)。
値は[[ブール型]]です。
[[真]]は[RUBYB[[[鏡像化]]される][mirrored]]ことを、
[[偽]]はそうでないことを表します
[SRC[>>167]]。
大部分の[[符号位置]]は[[偽]]です。

[REFS[
- [193] [CODE[[[Bidi_Mirrored]]=Y]] の[[文字]]の一覧
<https://chars.suikawiki.org/set/%24unicode%3ABidi_Mirrored>
]REFS]

[227] 
[[鏡像化]]には、
[[括弧]]のように組になった[[文字]]があって、
一方の[[鏡像化]]が他方になっているケースと、
そうでないケースがあります。
組になっている[[文字]]の情報は、
[CODE[Bidi_Mirroring_Glyph]]
として提供されています [SRC[>>2]]。

[179] 
[[UCD]]
の[[特性][特性 (Unicode)]]
[DFN[[CODE[Bidi_Mirroring_Glyph]]]]
([DFN[[CODE[bmg]]]])
は、
[[参考]]であり、
[DFN[[CODE[BidiMirroring.txt]]]] [SRC[>>178]]
に収録されています。
[[鏡像化]]によって想定される[[グリフ]]を持った[[文字]]を表します
[SRC[>>168]]。
例えば[[開き括弧]]の[[符号位置]]の[[特性]]値は、
[[閉じ括弧]]になっています。

[176] 
値は[[符号位置]]か [CODE[<none>]] です。
[CODE[Bidi_Mirrored]] 
が[[真]]であっても、
[[鏡像化]]して他の[[文字]]の[[グリフ]]と一致しないものは、
この値を持ちません。

[180] 
[[Unicode 5.1]]
時点の
[CODE[Bidi_Mirroring_Glyph]]
は
[[The OpenType Mirroring Pairs List]] ([[OMPL]]) 
と一致していました (>>189)。
その後の
[[Unicode]]
側の変更で一致しなくなっています。
[SRC[>>178]]




[181] 
この[[写像]]のうちいくつかは
「"BEST FIT" mirroring pairs」
とされるものがあって、
[CODE[BidiMirroring.txt]]
に
[DFN[[CODE[BEST FIT]]]]
とマーキングされています
[SRC[>>178]]。
その場合、
組になっている方と入れ替えて[[レンダリング]]しても構いませんが、
理想的には[[鏡像化グリフ]]は他の字形となるべきです [SRC[>>2]]。
[[開き括弧]]と[[閉じ括弧]]で左右対称になっていない字形要素が含まれるようなケースが該当しているようです。




[REFS[
- [194] 
[CODE[Bidi_Mirroring_Glyph]] のある[[文字]]の一覧
<https://chars.suikawiki.org/set/%24unicode%3Ahas-Bidi_Mirroring_Glyph>
- [195] 
うち、 [CODE[BEST FIT]] の[[文字]]の一覧
<https://chars.suikawiki.org/set/%24unicode%3Ahas-Bidi_Mirroring_Glyph-BEST-FIT>
- [199] 
[CODE[Bidi_Mirrored]]
と
[CODE[Bidi_Mirroring_Glyph]]
の比較
<https://chars.suikawiki.org/set/compare?expr=%24unicode%3ABidi_Mirrored&expr=%24unicode%3Ahas-Bidi_Mirroring_Glyph&expr=$unicode:has-Bidi_Mirroring_Glyph-BEST-FIT>

]REFS]

[200] 
[[UCD]]
の[[特性][特性 (Unicode)]]
[CODE[Bidi_Paired_Bracket_Type]],
[CODE[Bidi_Paired_Bracket]]
は、
[[規定]]であり、
[DFN[[CODE[BidiBrackets.txt]]]] [SRC[>>171]]
に収録されています。
[CODE[Bidi_Mirroring_Glyph]]
とよく似ていますが、
[CODE[Bidi_Mirroring_Glyph]]
が[[フォント]]設計に関係しているのに対し、
[CODE[Bidi_Paired_Bracket]]
は
[[Unicode Bidirectional Algorithm]]
の[[アルゴリズム]]に関係しています。

;;
[212] 
現在の [[UCD]]
の分類では[[規定]]です。
[[Contributory]]
ではありません。
しかしファイルの[[コメント]]には
「normative contributory data file」
とあり [SRC[>>171]]、
両方の性質を備えているものであるようです。




[201] 
[DFN[[CODE[Bidi_Paired_Bracket_Type]]]]
は、
組になった括弧のうちの当該[[文字]]の型を表します
[SRC[>>169]]。
値は
[DFN[[CODE[o]]]] ([DFN[Open]]),
[DFN[[CODE[c]]]] ([DFN[Close]]),
[DFN[[CODE[n]]]] ([DFN[None]])
のいずれかです [SRC[>>178]]。
[DFN[[CODE[Bidi_Paired_Bracket]]]]
は、
開き括弧に対応する閉じ括弧またはその逆を表します
[SRC[>>170]]。
値は[[符号位置]]または [CODE[<none>]] です [SRC[>>178]]。
この情報は
[[Unicode Bidirectional Algorithm]]
で使われます。

[EG[
[202] 例えば [CODE[(]] の型は [CODE[o]] (開き括弧) で、
対応するのは [CODE[)]] です。
[CODE[Bidi_Paired_Bracket_Type]]
は対応する方ではなく、当該文字の方の種類を表しています。
]EG]

[203] この情報は、

[FIG(math)[
[[General_Category]] ([VAR[A]]) = [[Ps]]

[[General_Category]] ([VAR[B]]) = [[Pe]]

[[Bidi_Class]] ([VAR[A]]) = [[Bidi_Class]] ([VAR[B]]) = [[ON]]

[[Bidi_Mirrored]] ([VAR[A]]) = [[Bidi_Mirrored]] ([VAR[B]]) = [[Y]]

[[Bidi_Mirroring_Glyph]] ([VAR[A]]) = [VAR[B]]
]FIG]

... な [VAR[A]], [VAR[B]] について、
[CODE[[[Bidi_Paired_Bracket]] ([VAR[A]]) := [VAR[B]]]],
[CODE[[[Bidi_Paired_Bracket]] ([VAR[B]]) := [VAR[A]]]],
[CODE[[[Bidi_Paired_Bracket_Type]] ([VAR[A]]) := [CODE[o]]]],
[CODE[[[Bidi_Paired_Bracket_Type]] ([VAR[B]]) := [CODE[c]]]]
としたものです。
[SRC[>>178]]

[204] 
[CODE[U+298D]]
[CODE(charname)@en[LEFT SQUARE BRACKET WITH TICK IN TOP CORNER]]
([CODE[⦍]]),
[CODE[U+298E]]
[CODE(charname)@en[RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER]]
([CODE[⦎]]),
[CODE[U+298F]]
[CODE(charname)@en[LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER]]
([CODE[⦏]]),
[CODE[U+2990]]
[CODE(charname)@en[RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER]]
([CODE[⦐]])
は
[CODE[U+298D]] - [CODE[U+2990]],
[CODE[U+298F]] - [CODE[U+298E]]
と対応していることに特に注意が促されています。
[SRC[>>178]]

[205] 
[CODE[U+FD3E]]
[CODE(charname)@en[ORNATE LEFT PARENTHESIS]]
([CODE[﴾]])
と
[CODE[U+FD3F]]
[CODE(charname)@en[ORNATE RIGHT PARENTHESIS]]
([CODE[﴿]])
は
[[legacy]] reason
で括弧の組として扱われていません
[SRC[>>178]]。
[[後方互換性]]のため、
これらは[[鏡像化]]されません
[SRC[>>6]]。

[206] 
[[The Unicode property value stability policy]]
により、
[CODE[Bidi_Paird_Bracket_Type]]
が
[CODE[o]] または [CODE[c]]
の[[文字]]は
[CODE[[[Bidi_Class]]=[[ON]]]]
かつ
[CODE[[[Bidi_Mirrored]]=[[Y]]]]
であることが保証されます。
実装はこれを利用して最適化できます。
[SRC[>>178]]

[REFS[
- [229] [CITE@en[Character set "Unicode [[Bidi_Paired_Bracket_Type]]=Open"]], [TIME[2020-10-22T07:27:00.000Z]] <https://chars.suikawiki.org/set/%24unicode%3ABidi_Paired_Bracket_Type%3AOpen>
- [230] [CITE@en[Character set "Unicode [[Bidi_Paired_Bracket_Type]]=Close"]], [TIME[2020-10-22T07:27:40.000Z]] <https://chars.suikawiki.org/set/%24unicode%3ABidi_Paired_Bracket_Type%3AClose>
- [231] [CITE@en[Character set "Unicode [[Bidi_Paired_Bracket_Type]]=None"]], [TIME[2020-10-22T07:28:06.000Z]] <https://chars.suikawiki.org/set/%24unicode%3ABidi_Paired_Bracket_Type%3ANone>
- [232] [CITE@en[Character set "Unicode has [[Bidi_Paired_Bracket]]"]], [TIME[2020-10-22T07:28:45.000Z]] <https://chars.suikawiki.org/set/%24unicode%3Ahas-Bidi_Paired_Bracket>
]REFS]

[HISTORY[
[20] [[ISO/IEC 10646]]
[CSECTION[15 [[双方向文脈]]での[[鏡像文字]]]]

[37] 
[[JIS X 0221-1:2001]] [CSECTION[19. 双方向文脈での文字]]
は
「左向き用及び右向き用と対をなす文字の種類」
として括弧類を列挙していました。
[[文字の名前]]が「LEFT」や「RIGHT」であっても、
左右ではなく開き、閉じの意味であるとされました。
([[GB 13000.1-93]] 20 も同じ)
[CSECTION[附属書F (参考) 代替書式文字]] F.2.2 にこれに関係する[[代替書式文字]]の説明がありました。
([[GB 13000.1-93]] 附属書D D1.3 も同じ)
[CSECTION[附属書P (参考) 文字に関する追加情報]]
にうち2文字の補足説明がありました。

[38] 
同
[CSECTION[附属書E (参考) アラビア語の双方向文脈での鏡像文字]]
は
「図形記号の鏡像として表示してもよい」
[[文字]]を列挙していました。[[括弧類]]や[[数学記号]]などが含まれていました。
([[GB 13000.1-93]] 附属書Cも同じ)

[39] 
[[JIS X 0221:2007]] 19 は一覧表がなく、附属書Eを参照する形に改められていました。
それは[[ユニコード]]の [[Bidi Mirrored]]
の一覧と等しいと[[注記]]がありました。
[CSECTION[附属書E (規定) 双方向文脈での鏡像文字]]
は
「図形記号の鏡像として表示してもよい」
[[文字]]を列挙していました。[[括弧類]]や[[数学記号]]などが含まれていました。
[CSECTION[附属書F (参考) 代替書式文字]] F.2.2 にこれに関係する[[代替書式文字]]の説明がありました。
[CSECTION[附属書P (参考) 文字に関する追加情報]]
にうち2文字の補足説明がありました。

[40] 
[[JIS X 0221:2014]] 15 は[[ユニコード標準]]第6.1版の 
[[Bidi_[ASIS[Mirrord]]]]
を参照する形に改められていました。



]HISTORY]

[228] 
なお 
[[Unicode]]
の用語としての[RUBYB[鏡像化][mirror]]は、
[[左横書き]]用 vs [[右横書き]]用で逆になることを意味していて、
必ずしも左右対称であることを意味していないようです。


[359] 
[[数式]]では
「]a,b[」
のように意図的に通常と異なる[[括弧]]の向きで使われることがあり、
[[右横書き]]でも同じようになることが特に注意されています
[SRC[>>13]]。

[360] 
[[引用符]]は、
[[括弧]]と似た性質を持ちつつも、
[[言語]]ごとにいろいろな[[字形]]といろいろな用法があり、
[[フォント]]によっても字形が違い、
相当複雑な状況になっています [SRC[>>13]]。
[CODE[«]]
や
[CODE[「]]
の類は 
[CODE[Bidi_Mirrored]]
ですが、
[CODE[”]]
の類はそうではありません。
[CODE[’]]
が[[引用符]]かつ[[アポストロフィー]]であることも厄介なようです。
[CODE[Vertical_Orientation]]
も [CODE[R]]
や
[CODE[Tr]]
ですが、必ずしもそれが適切な表示となるとは限りません (>>309)。

[HISTORY[

[441] 
[[paired stateful controls]] である[[非推奨書式文字]]の
[DFN[symmetric swapping format characters]]
は、
[DFN[symmetric characters]]
(左側と右側の組になった[[文字]])
と共に使います。
[SRC[>>440]]


[442] 
[[文字の名前]]の左、右を、
開き、閉じと解釈するべきかどうかを表します。
[SRC[>>440]]

-[446] 
[DFN[[CODE[U+206A]]]]
[DFN[[CODE(charname)@en[INHIBIT SYMMETRIC SWAPPING]]]]
は、
それ以後、
[[symmetric characters]]
を左側、右側と解釈することを表します。
[SRC[>>440]]
-[447] 
[DFN[[CODE[U+206B]]]]
[DFN[[CODE(charname)@en[ACTIVATE SYMMETRIC SWAPPING]]]]
は、
それ以後、
[[symmetric characters]]
を開き、閉じと解釈するべきことを表します ([DFN[activated]])。
[SRC[>>440]]

[443] 状態は [[activated]] かどうかの2つです。
[[入れ子]]にして使うことはできません
[SRC[>>440]]。

[444] 未使用の場合の既定の状態は、 [[activated]] です。
[[ISO/IEC 6429]] など[[上位層プロトコル]]で上書きできます。
[SRC[>>440]]

[448] 
現在使われている
[[bidi]]
のアルゴリズムでは、
[[鏡像化]]は[[左横書き]]か[[右横書き]]かによって自動的に行われます。
括弧は[[文字の名前]]通りの左右ではなく、開き、閉じと解釈されます。
これが [[activated]] の挙動です。
[[activated]]
でない場合、
自動の[[鏡像化]]は行われなくなります。

[445] 
[[symmetric swapping format characters]]
は、
[[非推奨][Unicodeの非推奨の文字]]で、使うべきではありません。





[REFS[
- [440] 
[CITE[The Unicode Standard, Version 13.0 - ch23.pdf]], [TIME[2020-03-09T17:53:52.000Z]], [TIME[2020-12-13T07:28:31.667Z]] <https://www.unicode.org/versions/latest/ch23.pdf#G19593>
]REFS]

[REFS[
- [450] [[symmetric swapping]] 文字の一覧
<https://chars.suikawiki.org/set/%24unicode%3Asymmetric-swapping>
- [449] 
[[symmetric character]] の一覧
<https://chars.suikawiki.org/set/%24unicode%3Asymmetric-characters>

]REFS]

]HISTORY]


-*-*-


[372] 
[CODE[U+16A0]] - [CODE[U+16F0]]
の
[[Runic]]
は、
[[左横書き]]、
[[右横書き]]、
[[牛耕式]]などいろいろに書かれました。
[[字形]]にも[[鏡像化]]や[[上下反転]]のものがありました。
また[[書字方向]]関連以外でもいろいろな[[字形]]の[[異体字]]がありました。
[SRC[>>370]]
[CODE[Bidi_Mirrored]]
は[[偽]]なので、
[[グリフの選択]]には別の手段を使う必要があります。


[REFS[
- [12] [[Unicode Standard]]
-- [13] [CITE[The Unicode Standard, Version 13.0 - ch06.pdf]], [TIME[2020-03-10 02:53:36 +09:00]] <https://www.unicode.org/versions/Unicode13.0.0/ch06.pdf#page=14>
-- [361] <https://www.unicode.org/versions/Unicode13.0.0/ch06.pdf#page=21>
-- [14] <https://www.unicode.org/versions/Unicode13.0.0/ch06.pdf#page=31>
-- [323] [CITE[The Unicode Standard, Version 13.0 - U0600.pdf]], [TIME[2020-03-02T22:41:02.000Z]], [TIME[2020-10-24T02:43:15.449Z]] <https://www.unicode.org/charts/PDF/U0600.pdf>
-- [11] [CITE[[[The Unicode Standard]], Version 13.0 - UFE10.pdf]], [TIME[2020-03-03 07:41:18 +09:00]] <https://www.unicode.org/charts/PDF/UFE10.pdf>
-- [75] [TIME[2020-03-02T22:41:18.000Z]], [TIME[2020-10-10T08:56:35.600Z]] <https://unicode.org/charts/PDF/UFE30.pdf>
- [3] [[UAX #9]]
-- [5] [CITE@en-us[[[UAX #9]]: Unicode Bidirectional Algorithm]], [TIME[2020-03-07 07:23:12 +09:00]] <https://unicode.org/reports/tr9/#HL6>
-- [6] [CITE@en-us[[[UAX #9]]: Unicode Bidirectional Algorithm]], [TIME[2020-03-07 07:23:12 +09:00]] <https://unicode.org/reports/tr9/#L4>
-- [2] [CITE@en-us[[[UAX #9]]: [[Unicode Bidirectional Algorithm]]]], [TIME[2020-03-07 07:23:12 +09:00]] <https://unicode.org/reports/tr9/#Mirroring>
- [175] [CODE[UnicodeData.txt]]
-- [167] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-18T09:34:28.933Z]] <http://www.unicode.org/reports/tr44/#Bidi_Mirrored>
- [211] [CODE[DerivedBinaryProperties.txt]]
-- [210] [TIME[2019-09-10T19:51:21.000Z]], [TIME[2020-10-21T08:23:16.357Z]] <https://www.unicode.org/Public/UCD/latest/ucd/extracted/DerivedBinaryProperties.txt>
-- [209] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-21T08:21:24.759Z]] <https://www.unicode.org/reports/tr44/#Derived_Extracted>
-[172] [CODE[BidiMirroring.txt]]
-- [178] [TIME[2019-09-09T19:11:02.000Z]], [TIME[2020-10-18T10:58:29.073Z]] <https://www.unicode.org/Public/UCD/latest/ucd/BidiMirroring.txt>
-- [168] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-18T09:36:01.711Z]] <http://www.unicode.org/reports/tr44/#Bidi_Mirroring_Glyph>
- [171] [CODE[BidiBrackets.txt]]
-- [169] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-18T09:36:52.623Z]] <http://www.unicode.org/reports/tr44/#Bidi_Paired_Bracket_Type>
-- [170] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-18T09:37:11.515Z]] <http://www.unicode.org/reports/tr44/#Bidi_Paired_Bracket>
]REFS]


** OpenType の鏡像化

[183] [[OpenType]] は[[左横書き]] / [[右横書き]]のため、

- [184] [[Character-level mirroring]]
- [185] [[Glyph-level mirroring]]
- [186] [[LTR glyph alternates]] / [[RTL glyph alternates]]

... の3種類の方法を提供しています。
[SRC[>>182]]

[188] 
[DFN[Glyph-level mirroring]]
は、
[[フォント機能]]
[DFN[[CODE[rtlm]]]] /
[DFN[[CODE[ltrm]]]]
によって[[鏡像化]]された別[[グリフ]]を選ぶものです。
[SRC[>>182, >>190, >>499]]

[192] 
[DFN[LTR glyph alternates]] / [DFN[RTL glyph alternates]]
は、
[[フォント機能]]
[DFN[[CODE[ltra]]]],
[DFN[[CODE[rtla]]]]
によって[[鏡像化]]でない別[[グリフ]]を選ぶものです。
[SRC[>>182, >>191, >>499]]

[500] 
[CODE[ltra]], [CODE[ltrm]], [CODE[rtla]], [CODE[rtlm]] は、普通は
[CODE[GSUB]] [[表][OpenType表]]の 
[CODE[lookupType]] [N[1]]
を使うことが想定され [SRC[>>190, >>191, >>499]]、
その場合1つの[[グリフ]]を1つの[[グリフ]]へと置換する規則を記述できます。

[501] 
[[左横書き]]が主な用法なら [CODE[cmap]] で[[左横書き]]用の[[グリフ]]を指定し、
[CODE[rtlm]] / [CODE[rtma]] で[[右横書き]]用の[[グリフ]]に置き換えるように設計できます。
[[右横書き]]が主な用法なら [CODE[cmap]] で[[右横書き]]用の[[グリフ]]を指定し、
[CODE[ltrm]] / [CODE[ltra]] で[[左横書き]]用の[[グリフ]]に置き換えるように設計できます。

[99] 
[[OpenType]] の[[仕様書]]は対称形かどうかで
[CODE[ltrm]] / [CODE[rtlm]] と [CODE[ltra]] / [CODE[rtla]] を区別しているようです。
実際の[[フォント]]では必ずしもそうなっていません。
何を想定して区別しているのかよくわからないです。

;; [98] 実[[フォント]]の事例は[[フォント機能]]参照。



[189] 
[[左横書き]]の[[グリフ]]から[[右横書き]]の[[グリフ]]の置き換えは
[DFN[Character-level mirroring]]
によっても行われます。これはまず
[DFN[OpenType Mirroring Pairs List]] ([DFN[OMPL]])
の[[文字]]の組に基づき他の[[文字]]にまず置き換え、
その[[文字]]の[[グリフ]]を選ぶものです。

[502] 
このリストは
[[Unicode 5.1]]
の
[CODE[Bidi_Mirroring_Glyph]]
でした (>>180)。
今後も変更されることはないとされています。
[SRC[>>182, >>187]]


[REFS[
- [196] [[OMPL]] の[[文字]]の一覧
<https://chars.suikawiki.org/set/%24opentype%3Aompl-char>
- [197] [[Unicode 5.1]] [CODE[Bidi_Mirroring_Glyph]] の[[文字]]の一覧
<https://chars.suikawiki.org/set/%24unicode5.1%3Ahas-Bidi_Mirroring_Glyph>
- [198] [[OMPL]] と [[Unicode]] 最新版 [CODE[Bidi_Mirroring_Glyph]]
の比較
(付: [CODE[Bidi_Mirroring_Glyph]] [[BEST FIT]])
<https://chars.suikawiki.org/set/compare?expr=%24opentype%3Aompl-char&expr=%24unicode%3Ahas-Bidi_Mirroring_Glyph&expr=$unicode:has-Bidi_Mirroring_Glyph-BEST-FIT>
]REFS]


[503] 
以後 
[[Unicode]]
に追加された[[文字]]は他の2つの手法で扱うことになります。


[504] 
利用頻度が高く古くから [[Unicode]] にあった[[アラビア文字]]や[[ヘブライ文字]]に関係する[[文字]]は
[[OPML]] に入っているものが多く、
それらは[[フォント]]内の情報ではなく固定の表を使って[[右横書きグリフ]]が選択されることになります。
それより新しい[[文字]]や、[[フォント]]依存で[[右横書きグリフ]]が存在するもの、
通常[[右横書き]]で[[左横書きグリフ]]に置き換えるものは、
[[フォント]]内に情報を入れることになります。

[EG[
[505] 
[[日本語]]の[[右横書き]]に必要な[[句読点]]は [[OPML]] に入っていないものもあるので、
[[フォント]]が [CODE[GSUB]] [[lookup]] を持つ必要があります。
]EG]

[506] 
[[OPML]] に含まれている[[文字]]については、
[[フォント]]の [CODE[rtlm]] (や [CODE[rtla]]) に規則を含めてはいけません。
(そうしないと二重適用されて[[鏡像化]]しない状態に戻ってしまいます。)
[SRC[>>498]]


[507] 
[[OpenType]] [[フォント]]からの[[グリフの選択]]は、
次のようにして行います。
[SRC[>>498]]

- [508] [[even resolved level]] ([[左横書き]]) の[[連なり]]にあっては、
-- [509] [CODE[ltrm]] [[機能][フォント機能]]と
[CODE[ltra]] [[機能][フォント機能]]を[[連なり]]全体に適用します。
- [510] [[odd resolved level]] ([[右横書き]]) の[[連なり]]にあっては、
-- [512] [[OPML]] に含まれる[[文字]]は、
[[OPML]] によって置き換えられた[[文字]]が
[CODE[cmap]] において非 [N[0]] 値 ([[グリフID]]) を持つなら、
その[[グリフ]]を使います。
-- [511] [CODE[rtlm]] [[機能][フォント機能]]と
[CODE[rtla]] [[機能][フォント機能]]を[[連なり]]全体に適用します。

[513] 
[[Character-level mirroring]] (>>512) は[[文字]]から[[グリフ]]への変換であることに注意。
[[shaping engine]] で[[文字]]から[[文字]]への変換と実装することもできるのでしょうが。


[544] 
なお、 [CODE[MERG]] は[[グリフ]]の配置が決定した後に適用され、
[[ltr]] 用と [[rtl]] 用が記述できます。

[REFS[
- [182] [CITE@ja-jp[Advanced typographic tables - [[OpenType]] Layout - Typography | Microsoft Docs]], [[PeterCon]], [TIME[2020-10-18T14:31:29.000Z]] <https://docs.microsoft.com/ja-jp/typography/opentype/spec/ttochap1#ltrrtl>
-
[498] 
[CITE@ja-jp[Advanced typographic tables - OpenType Layout (OpenType 1.9) - Typography | [[Microsoft]] Docs]], [[PeterCon]], [TIME[2022-08-28T09:26:40.000Z]] <https://docs.microsoft.com/ja-jp/typography/opentype/spec/ttochap1#left-to-right-and-right-to-left-text>
- [187] [CITE@en-us[OpenType Mirroring Pairs List (OMPL) - Typography | Microsoft Docs]], [[PeterCon]], [TIME[2020-10-18T14:41:19.000Z]] <https://docs.microsoft.com/en-us/typography/opentype/spec/ompl>
-
[499] 
[CITE@en-us[Registered features, k-o (OpenType 1.9) - Typography | [[Microsoft]] Docs]], [[PeterCon]], [TIME[2022-08-28T09:44:27.000Z]] <https://docs.microsoft.com/en-us/typography/opentype/spec/features_ko#ltra>
- [190] [CITE@ja-jp[Registered features, p-t - Typography | Microsoft Docs]], [[PeterCon]], [TIME[2020-10-18T14:45:49.000Z]] <https://docs.microsoft.com/ja-jp/typography/opentype/spec/features_pt#rtlm>
- [191] [CITE@ja-jp[Registered features, p-t - Typography | Microsoft Docs]], [[PeterCon]], [TIME[2020-10-18T14:46:25.000Z]] <https://docs.microsoft.com/ja-jp/typography/opentype/spec/features_pt#rtla>
]REFS]


[568] 
詳しく検証していないのですが、
[[Chrome]]
で[[仮名]]を[[右横書き]]すると [CODE[rtla]] が適用される (正しい挙動) のに対して、
[[下縦書き]] ([CODE[vertical-tb]] + [[右横書き]]の指定) 
だと [CODE[rtla]] が適用されません。
(もちろん [CODE[font-feature-settings]] で手動で指定すれば [CODE[rtla]]
も適用可能です。) 
[[縦書き]]だとおかしくなるのか、それとも[[仮名]] ([CODE[vo]] = [CODE[U]]) 
だからおかしいのかはわかりません。
[TIME[2025-04-09T13:54:18.300Z]]


** Unicode の縦書き字形選択



[214] 
[[UCD特性]]
[CODE[Vertical_Orientation]]
([DFN[[CODE[vo]]]] [SRC[>>213]])
は、
[[参考]]であり [SRC[>>174]]、
[DFN[[CODE[VerticalOrientation.txt]]]] [SRC[>>173]]
に収録されています。

[215] 
[DFN[[CODE[Vertical_Orientation]]]]
は[[列挙]]特性で、
値は次のいずれかです。
ファイルに明記されていないときの既定値は
[CODE[R]]
です。
[SRC[>>213]]

- [216] [DFN[[CODE[U]]]] は、[RUBYB[[[正立]]][Upright]]で、
[[符号表]]と同じ[RUBYB[向き][orientation]]で表示されます
[SRC[>>213, >>243]]。
- [217] [DFN[[CODE[R]]]] は、
[[符号表]]から[[時計回り]]に90°[RUBYB[[[回転][回転 (書字方向)]]して][Rotated]]
[SRC[>>213, >>243]]、
[RUBYB[横向き][sideways]]に表示されます [SRC[>>243]]。
- [218] [DFN[[CODE[Tu]]]] は、
[RUBYB[typographical 的に変形したもの][Transformed typographically]]で、
Upright に[[フォールバック]]します。
- [219] [DFN[[CODE[Tr]]]] は、
[RUBYB[typographical 的に変形したもの][Transformed typographically]]で、
Rotated に[[フォールバック]]します。

[244] 
[CODE[Tu]] と [CODE[Tr]]
は、[[縦書き]]専用の、[[符号表]]とは異なる[[グリフ]]が必要なものです。
専用[[グリフ]]がないときのフォールバックとして
[CODE[U]]
型か
[CODE[R]] 
型かで2分されています。
[SRC[>>243]]




[208] 
[[既定値]]は、
ほとんどの[[符号位置]]では
[CODE[R]]
ですが、
predominantly Upright な[[用字系]]に関連付けられた[[ブロック]]の[[未割当符号位置]]では
[CODE[U]]
です。
[SRC[>>207, >>213]]

[451] 
[[私用文字]]も 
[CODE[U]]
です
[SRC[>>213]]
が、変更も認められます。
[SEE[ [[私用文字]] ]]

[237] 
既定値が [CODE[R]]
となっており、
値を決めかねるものはすべて
[CODE[R]]
になっているようです。例えば[[制御文字]]や[[非文字]]は
[CODE[R]]
になります。

;;
[482] 
[[制御文字]]でも[[フォント]]や[[プラットフォーム]]依存の[[代替字形][〓]]や
[[ANSIコードページ]]の[[字形]]が表示されることがあるので、
まったく無意味でもありません。

[245] 
日常語の[[文字]]に相当する概念は
[[Unicode文字]]ではなく[[書記素クラスター]]です。
[[Unicode]]
の[[縦書き]]における[RUBYB[向き][orientation]]は[[書記素クラスター]]単位で扱われます。
[[書記素クラスター]]の向きは、
最初の文字の向きです [SRC[>>213]]。
ただし、
[[書記素クラスター]]が
[[enclosing combining mark]] ([CODE[[[General_Category]]=[[Me]]]])
を含むとき、
[[書記素クラスター]]の
[CODE[Vertical_Orientation]]
は 
[CODE[U]]
です
[SRC[>>213]]。



[REFS[
- [233] [CITE@en[Character set "Unicode [[Vertical_Orientation]]=U"]], [TIME[2020-10-22T07:29:46.000Z]] <https://chars.suikawiki.org/set/%24unicode%3AVertical_Orientation%3AU>
- [234] [CITE@en[Character set "Unicode [[Vertical_Orientation]]=Tu"]], [TIME[2020-10-22T07:30:24.000Z]] <https://chars.suikawiki.org/set/%24unicode%3AVertical_Orientation%3ATu>
- [235] [CITE@en[Character set "Unicode [[Vertical_Orientation]]=Tr"]], [TIME[2020-10-22T07:30:40.000Z]] <https://chars.suikawiki.org/set/%24unicode%3AVertical_Orientation%3ATr>
- [236] [CITE@en[Character set "Unicode [[Vertical_Orientation]]=R"]], [TIME[2020-10-22T07:30:53.000Z]] <https://chars.suikawiki.org/set/%24unicode%3AVertical_Orientation%3AR>
]REFS]




[258] 
[CODE[Vertical_Orientation]]
は
[CITE[Unicode Standard]]
の[[符号表]]の[[例示字形]]を基準に記述されています。
[[上位層プロトコル]]や[[応用]]は、
[CODE[Vertical_Orientation]]
と[[フォント]]の情報を勘案し適切な[[グリフ]]の向きを決定することが求められています。
[SRC[>>254]]

[418] 
[CODE[Vertical_Orientation]]
が
[CODE[Tu]],
[CODE[Tr]]
の[[文字]]は、
[[符号表]]の他に、
[[UAX #50]]
に代表字形がいくつか例示されています (>>260)。



[270] 
そのいずれも実装義務はありません。
[[Unicode]] 本体と
[[UAX #50]]
を実装しているというだけでは、
どの[[字形]]が表示されるのかわからず、
別途[[上位層プロトコル]]の情報を加えれなければならないということになります。
[SEE[ [[グリフの選択]] ]]

[381] 
[[bidi]]
に対しては[[文字]]の向きを定め、
それが混在するときにどう[[レンダリング]]するか
[CITE[Unicode Bidirectional Algorithm]]
で定め、
その既定の[[レンダリング]]が適切でないときに挙動を調整する特殊な文字が用意されています。
特殊な文字の代わりに[[上位層プロトコル]]で制御することも認められています。
一方[[縦書き]]に対しては、
[[文字]]の向きだけが定められ、
[[横書き]]との混在の方法や、
既定の挙動が適切でないときの制御法を
[[UAX #50]]
は定めておらず、すべて[[上位層プロトコル]]に任せられています。
[[bidi]]
との対比でいえば、
[[縦中横]]や[[回転][回転 (書字方向)]]を調整する特殊な文字があってもよさそうなものですが。

[HISTORY[
[382] [[UAX #50]] (当初 [[UTR #50]])
は
[[JLREQ]]
の[[文字クラス]]を整理し
[[Unicode]]
全体に拡大するところから開発が始まったようです。
[SRC[>>383]]
当初案では
[[JLREQ]]
由来の[[文字クラス]]を根拠に[[文字]]の向きを説明しようと試みていました
[SRC[>>383, >>384]]。

[392] 
一時期、方向を表す特性は複数に分けられていました。

- [393] 
[DFN[Default Vertical Orientation]] ([DFN[dvo]]) [SRC[>>386]]
改め
[DFN[Stacked Vertical Orientation]] ([DFN[svo]], [DFN[SVO]]) [SRC[>>387]]
は、
「parts of the world where characters are mostly upright」
で使う縦書き用とされました。
- [394] 
[DFN[East Asian Vertical Orientation]] ([DFN[eavo]]) [SRC[>>386]]
改め
[DFN[Mixed Vertical Orientation]] ([DFN[mvo]], [DFN[MVO]]) [SRC[>>387]]
は、
[[東アジア]]とりわけ[[日本]]、[[支那]]、[[Korea]] で使う[[縦書き]]用とされました。
- [395] 
[DFN[Horizontal Orientation]]  ([DFN[ho]])
は、[[横書き]]用とされました。
[SRC[>>391]]

[396] 
しかし [[svo]] と [[ho]] は廃止され [SRC[>>390]]、
[[mvo]] は
[CODE[Vertical_Orientation]]
となりました。
[[UAX #50]] を参照する他の[[仕様書]]や議論が、
この廃止前の古い値を参照していることがあります。

[385] 
字形の種別も何度か再編されました。

- [CODE[U]] [SRC[>>383]]
- [DFN[[CODE[S]]]] (sideways) [SRC[>>383]] → [CODE[R]] [SRC[>>387]]
- [DFN[[CODE[SB]]]] (sideways, bracket) [SRC[>>383]] → [CODE[R]] [SRC[>>387]]
- [DFN[[CODE[L]] ([[反時計回り]]90°回転) [SRC[>>389]] → 廃止 [SRC[>>390]]
- [DFN[[CODE[T]]]], [DFN[[CODE[TK]]]] (位置をずらす[[小書き仮名]]) [SRC[>>383]] → [CODE[T]] [SRC[>>384]]
- [CODE[T]] → [CODE[T]], [CODE[Tu]], [CODE[Tr]] [SRC[>>387]]
- [CODE[T]] → [CODE[Tx]] [SRC[>>397]] → 廃止 [SRC[>>398]]

属する文字もかなり変更されていました。

[388] 
長らく
[[tailoring]]
用と称して
brackets set [SRC[>>387]],
arrows set [SRC[>>389]]
が定義されていました。
しかし使われないまま廃止されました [SRC[>>399]]。

[322] [[CSS WG]] との関係は [[CSS Writing Modes]] 参照。

]HISTORY]

[REFS[
- [383] [CITE[[[UTR #50]]: Unicode Properties for Vertical Text Layout]], [TIME[2011-10-04T14:02:12.000Z]], [TIME[2020-10-24T10:27:18.716Z]] <https://www.unicode.org/reports/tr50/tr50-1.html>
- [330] [CITE@en[Re: Strawman proposal for UTR #50: Unicode Properties for Vertical Text Layout]], [[fantasai]], [TIME[2011-10-05 08:36:53 +09:00]], [TIME[2020-01-17T22:50:08.000Z]], [TIME[2020-10-31T03:11:56.945Z]] <https://lists.w3.org/Archives/Public/www-style/2011Oct/0128.html>
-- [331] 当時の編集者のスタンスが垣間見える (メールに引用されているのが編集者のコメント)。
- [320] [CITE@en-gb[The Unicode Consortium Discussion Forum • View forum - PRI 207 - UTR #50, Unicode Properties for Vertical Text Layout]], [TIME[2020-10-31T03:07:34.000Z]], [TIME[2012-01-07T01:27:34.712Z]] <https://web.archive.org/web/20120106042128/http://www.unicode.org/forum/viewforum.php?f=35>
- [321] [CITE@en-gb[The Unicode Consortium Discussion Forum (CLOSED) • View forum - PRI 207 - UTR #50, Unicode Properties for Vertical Text Layout]], [TIME[2020-10-31T03:08:50.000Z]], [TIME[2019-06-11T06:29:48.790Z]] <https://web.archive.org/web/20190611062922/http://www.unicode.org/forum/viewforum.php?f=35>
- [384] [CITE[[[UTR #50]]: Unicode Properties for Vertical Text Layout]], [TIME[2011-12-22T23:54:12.000Z]], [TIME[2020-10-24T10:28:44.652Z]] <https://www.unicode.org/reports/tr50/tr50-2.html>
- [386] [CITE[UTR #50: Unicode Properties for Vertical Text Layout]], [TIME[2012-03-06T22:24:07.000Z]], [TIME[2020-10-24T11:32:31.249Z]] <https://www.unicode.org/reports/tr50/tr50-3.html>
- [387] [CITE[UTR #50: Unicode Properties for Vertical Text Layout]], [TIME[2012-04-20T22:22:54.000Z]], [TIME[2020-10-24T11:34:36.800Z]] <https://www.unicode.org/reports/tr50/tr50-4.html>
- [389] [CITE[UTR #50: Unicode Properties for Horizontal and Vertical Text Layout]], [TIME[2012-05-17T15:53:02.000Z]], [TIME[2020-10-24T11:39:19.030Z]] <https://www.unicode.org/reports/tr50/tr50-5.html>
- [391] [CITE[UTR #50: Unicode Properties for Horizontal and Vertical Text Layout]], [TIME[2012-08-22T22:08:28.000Z]], [TIME[2020-10-24T11:42:06.161Z]] <https://www.unicode.org/reports/tr50/tr50-6.html>
- [390] [CITE[UTR #50: Unicode Properties for Horizontal and Vertical Text Layout]], [TIME[2013-01-01T13:32:57.000Z]], [TIME[2020-10-24T11:40:53.531Z]] <https://www.unicode.org/reports/tr50/tr50-7.html>
- [397] [CITE[UTR #50: Unicode Vertical Text Layout]], [TIME[2013-05-29T17:35:53.000Z]], [TIME[2020-10-24T11:51:58.900Z]] <https://www.unicode.org/reports/tr50/tr50-10.html>
- [398] [CITE[UAX #50: Unicode Vertical Text Layout]], [TIME[2017-06-14T21:37:48.000Z]], [TIME[2020-10-24T11:53:17.156Z]] <https://www.unicode.org/reports/tr50/tr50-19.html>
- [399] [CITE[UAX #50: Unicode Vertical Text Layout]], [TIME[2018-02-09T00:36:48.000Z]], [TIME[2020-10-24T11:53:54.942Z]] <https://www.unicode.org/reports/tr50/tr50-20.html>
]REFS]


-*-*-

[275] 
[[Unicode]]
の[[半角]]の
[[ASCII文字]]は、
すべて
[CODE[R]]
とされています。
相当する[[全角英数字]]の方は、
[[文字]]ごとに
[CODE[U]], [CODE[R]], [CODE[Tu]], [CODE[Tr]]
が決められているようです。
[[半角]]で[[欧字]]、
[[全角]]で「[[和字]]扱いの[[欧字]]」 (>>44)
を表す出版業界の慣行に配慮したのでしょうか。
しかしそのせいで、
例えば[[日本語]]文中で[[句点]]としてよく使われる
[CODE[?]]
や
[CODE[!]]
が
[CODE[R]]
なので倒した表示になってしまいます。

[277] [[全角英数字]]は、
[[ラテン文字]]や[[算用数字]]を含む多くの[[文字]]が
[CODE[U]]
です。[[縦書き]]で1字ずつ[[正立]]で並べる方法に使う想定なのでしょう。
半角文字は [CODE[R]] で横倒し、
全角文字は [CODE[U]] で正立で使い分ける便宜なのかもしれませんが、
「Â」
のような[[合成済文字]]は1種類しかないですし
(全角の方は全角[[基底文字]] + [[結合文字]]で書けないこともないですが)、
[[JIS X 0208]] にあって通例[[全角文字]]扱いの[[ギリシャ文字]]や[[キリル文字]]も
[[Unicode]] には1種類しかないので、
どうしても扱いに一貫しない面が出てきます。

[313] 
[CODE[U]] 以外のもの [SRC[>>276]]
をみると、

- [278] 
表示位置などの問題がある[[句読点]]が
[CODE[U+FE01]] ([CODE[!]]),
[CODE[U+FE0C]] ([CODE[,]]),
[CODE[U+FE0E]] ([CODE[.][FULL STOP]]),
[CODE[U+FE1F]] ([CODE[?]])
の
[CODE[Tu]]、
[CODE[U+FE1A]] ([CODE[:]]),
[CODE[U+FE1B]] ([CODE[;]])
の
[CODE[Tr]]
にわかれています。
- [279] 
3組の括弧は
[CODE[Tr]]
となっています。
- [280] 
[CODE[U+FF1C]] [CODE[<]],
[CODE[U+FF1D]] [CODE[=]],
[CODE[U+FF1E]] [CODE[>]],
[CODE[U+FF0D]] [CODE[-]]
が
[CODE[R]] 
となっています。
- [281] 
[CODE[U+FF3F]] [CODE[_]],
[CODE[U+FF5C]] [CODE[|]]
が
[CODE[Tr]]
となっています。
- [286] 
[CODE[U+FF5E]] [CODE[~]]
が
[CODE[Tr]]
となっています。

[282] 括弧が [CODE[R]]、
実際上括弧として使われることも多い不等号が [CODE[Tr]]
と分かれていますが、
結局どちらも[[字形]]は縦型になることにはかわりありません。

[283] [[数学記号]]としても[[ハイフン]]としても使われることがある
[CODE[=]] や [CODE[-]]
が
[CODE[R]]
なのは、妥当な判断でしょう。[[数学記号]]の [CODE[+]]
や [CODE[*]]
は [CODE[U]] なので異なります。後者の字形が[[横書き]]か[[縦書き]]かで異なることも有り得そうですが、
[[フォント]]の設計次第ということで仕様的にはこれでいいのでしょう。
ただ
[CODE[U+00B1]]
([CODE[±]])
や
[CODE[U+00F7]]
([CODE[÷]])
が
[CODE[U]]
なのと整合しないのは気になります。

[287] 
[CODE[|]], [CODE[_]]
が
[CODE[Tr]]
ですが、字形例を見ても特別なところがなく、
なぜ
[CODE[R]]
でないのか不明です。
[CODE[U+30A0]]
[CODE(charname)@en[KATAKANA-HIRAGANA DOUBLE HYPHEN]]
も
[CODE[Tr]]
で同様です。


[285] 
[CODE[~]]
が
[CODE[Tr]]
なのは、
[[横書き]]例示字形が左半が上側へ、右半が下側へと丸まっている字形なのに対し、
[[縦書き]]例示字形が上半が左側へ、下半が右側へと丸まっている字形で、
単純な[[時計回り]]回転ではないためでしょう。
[CODE[U+007E]] [CODE(charname)@en[TILDE]],
[CODE[U+02DC]] [CODE(charname)@en[SMALL TILDE]]
が
[CODE[R]]
なのと扱いが違いますが、
[CODE[U+301C]] [CODE(charname)@en[WAVE DASH]]
とは一致しています。
[CODE[U+301C]] も [CODE[Tr]]
で、同じような字形です。
[CODE[U+3030]] [CODE(charname)@en[WAVY DASH]]
も
[CODE[Tr]]
で、
山と谷の数が違いますが、
横書きと縦書きの関係は同様です。

[328] 
[CODE(charname)@en[WAVE DASH]]
と似た[[横書き字形]]の[[文字]]として[[数学記号]]扱いの
[CODE[U+223C]]
[CODE(charname)@en[TILDE OPERATOR]]
があります。
その上下反転字形
[CODE[U+223D]]
[CODE(charname)@en[REVERSED TILDE]]、
丸みを増した字形
[CODE[U+223E]]
[CODE(charname)@en[INVERTED LAZY S]]
もあります。
[SRC[>>324]]
これらはいずれも
[CODE[Vertical_Orientation]] が [CODE[R]]
です。
[[Unicode]]
の[[符号表]]の[[例示字形]]に従えば、
[CODE[WAVE DASH]]
の[[縦書き]]は
[CODE[U+223D]]
[CODE(charname)@en[REVERSED TILDE]]
の方に近づきます。
なおこれら3文字は
[CODE[Bidi_Mirrored]] 
なので、
[[鏡像化]]される点が
[CODE(charname)@en[WAVE DASH]]
や
[CODE(charname)@en[TILDE]]
などとは違います。

[329] 
なお
[CODE(charname)@en[REVERSED TILDE]]
は[[符号表]]に
「= lazy S」、
「reversed tilde and lazy S are glyph variants」
とあります。 [SRC[>>324]]
[[例示字形]]は 
[CODE(charname)@en[TILDE OPERATOR]]
と
[CODE(charname)@en[REVERSED TILDE]]
が組になっているように見えますが、
[CODE(charname)@en[REVERSED TILDE]]
は
[CODE(charname)@en[INVERTED LAZY S]]
とも組になっているようです。
実際 
[[JIS X 0208]]
では[[日本]]でよく見かける[[相似記号]]の[[字形]]が
[CODE(charname)@en[REVERSED TILDE]]
となっていて、
むしろ
「[CODE[∞]]」
に近い字形設計ですが、
どちらかといえば
[CODE(charname)@en[INVERTED LAZY S]]
と組にするべきといえます。
ちなみにその
「[CODE[∞]]」
は
[CODE[U]]
です。
[[字形]]が似ていたとしても、
[[演算子]]の
「[CODE[∽]]」
と[[数字]]や[[変数]]に準じるのであろう
「[CODE[∞]]」
とでは扱いが異なるということでしょう。

[295] 
[CODE["]] や [CODE[']] や [CODE[`]] や [CODE[^]] は
[CODE[U]]
です。なぜ
[CODE[R]] 
にしなかったのかは謎ですが、この辺は扱いが難しそうです。


[284] [[半角カナ]]は、[[日本語文字]]であるにも関わらず、
[[句読点]]や[[鉤括弧]]も含めすべて [CODE[R]] です。

[312] 
[CODE[U+FE50]] - [CODE[U+FE6B]] 
の [CODE(charname)@en[SMALL]]
系の句読点類は、
相当する[[全角英数字]]等とも扱いが微妙に違っています。


[288] 
ともかく[[半角]]と[[全角]]でこれほど扱いが違うので、
安易に[[互換分解]] ([[NFKC]]、[[NFKD]])
するのは危険です。

[REFS[
- [276] 
[[全角英数字]]のうち
[CODE[Vertical_Orientation]]
が
[CODE[U]]
でないもの
<https://chars.suikawiki.org/set?expr=%5B%5CuFF01-%5CuFF5E%5D+-+%24unicode%3AVertical_Orientation%3AU>
]REFS]


[REFS[
- [324] [CITE[The Unicode Standard, Version 13.0 - U2200.pdf]], [TIME[2020-03-02T22:41:12.000Z]], [TIME[2020-10-24T02:43:53.326Z]] <https://www.unicode.org/charts/PDF/U2200.pdf>
]REFS]

-*-*-


[317] 
[[日本語]]の[[長音符号]]
(>>4)
のうち
[CODE[U+30FC]]
[CODE[ー]]
は、
[CODE[Tr]]
で、
[[横書き]]は横線、
[[縦書き]]は縦線となっています。
例示字形は[[筆押さえ]]があって単純な回転ではありません。
[[書体]]設計次第では回転でも十分かもしれませんが、
一般には
[CODE[Tr]] としておくのが妥当でしょう。
よく誤って[[長音符号]]として使われる[[ハイフン]]や[[負符号]]の類は
[CODE[R]]
で、向きは同じように変化します。
[[Unicode]]
は[[日本語]]の[[右横書き]]を想定していないようで、
[[鏡像化]]の対象には指定されていません。

[316] 
[[長音符号]]の[[異体字]]の記述に使われる
「[CODE[〜]]」
および関係する[[文字]]は、
同じく
[CODE[Tr]]
です
(>>285)。
これらも[[鏡像化]]の対象に指定されていません。

[302] 
[[長音符号]]の[[異体字]]の記述に使われる
「[CODE[→]]」
は、
[CODE[R]]
です。
この他[[矢印]]の類は概ね
[CODE[R]]
で、指す方向が変化します。
[[鏡像化]]の対象には指定されておらず、
[[左横書き]]と[[右横書き]]では変化しないのに、
[[縦書き]]にすると変化するのは一貫していません。
[[日本語]]の[[右横書き]]を持ち出さずとも、
[[化学変化式]]で使われることを考えると、
[[不等号]]が[[鏡像化]]されるのと一貫していません。







[300] 
[[小書き仮名]]は、
[CODE[Tu]]
で、
[[横書き]]は下寄せ[[小書き]]、
[[縦書き]]は右寄せ[[小書き]]となっています。
[[鏡像化]]の対象にはなっていませんが、
[[フォント]]の設計次第では左右で字形を変える必要があるかもしれません。

[560] 
[CITE@ja[25035-vo-small-kana-and-bopomofo.pdf]], [TIME[2025-01-13T18:56:19.000Z]], [TIME[2025-01-14T01:31:38.223Z]] <https://www.unicode.org/L2/L2025/25035-vo-small-kana-and-bopomofo.pdf>


-*-*-



[241] 
[[JIS X 0213]] の[[縦書き例示字形]]がある[[文字]]や、
[[JIS X 4051]] の[[縦書き字形]]がある[[文字]]と
[CODE[Tr]],
[CODE[Tu]],
[CODE[R]]
を比較すると、
やや出入りがあります。
[SRC[>>242]]

[305] 
[CODE[;]]
は
[[JIS]]
に縦書き字形がなく、
[[Unicode]]
には縦書き字形が回転したものとしていないもので、
複数示されています。

[306] 
[CODE[_]] や [CODE[|]] や [CODE[~]]
は
[[JIS]]
に縦書き字形がありませんが、
[[Unicode]]
では縦書き字形が示されています。

[308] 
逆に
[CODE[U+2013]]
の
[CODE[–]]
や
[CODE[U+2014]]
の
[CODE[—]]
は
[[JIS]]
に縦書き字形がありますが、
[[Unicode]] では [CODE[R]] です。
結局同じような表示になるのですが、
[CODE[_]] や [CODE[|]]
との扱いの違いは不思議です。


[307] 
[CODE[U+00AB]]
の
[CODE[«]]
などは
[[JIS]]
には縦書き字形が示されていますが、
[[Unicode]]
では 
[CODE[R]] 
です。結局同じような表示になるのですが、
[[Unicode]]
は他の括弧類を
[CODE[Tr]]
としていて一貫していません。



[309] [CODE[U+2018]] の [CODE[‘]]
や
[CODE[U+2019]] の [CODE[’]]
は
[[JIS]]
には縦書き字形が示されていますが、
[[Unicode]]
では
[CODE[R]] です。

[310] 
[CODE[U+2025]] の [CODE[‥]]
や
[CODE[U+2026]] の [CODE[…]]
は
[[JIS]]
には縦書き字形が示されていますが、
[[Unicode]]
では
[CODE[R]]
です。結局同じような表示になるのですが、
これらの文字は欧文横書きでは下点、
日本語横書き・縦書きでは中点と別な表示になるものを同じ[[符号位置]]に統合してしまっている点が要注意です。

[362] 
[CITE[Unicode Standard]]
は[[横書き]]についてはこの
「East Asian typographic traditions, particularly in Japan」
における[[中点]]の表現を
「In practice, it is
relatively common for authors of East Asian text to substitute U+22EF midline horizon-
tal  ellipsis  for  this.」
と [CODE[U+2026]] のかわりに [CODE[U+22EF]] 
を使うのが比較的一般的になっていると述べているのですが [SRC[>>361]]、
[[JIS X 0208]] と対応関係にあるのはあくまで
[CODE[U+2026]]
で、そうでない 
[CODE[U+22EF]]
が一般的になっているようには見えません。どこか特殊な業界でのことでしょうか。

[363] 
[[縦書き]]については、
[CODE[U+2026]]
東アジアのフォントは縦書き字形を持つのが一般的で、
[CODE[U+22EF]]
も一般的になっている (has become popular)
ので 
[CODE[U+22EF]] の縦書き字形も持つことになる (will)
とされています
[SRC[>>361]]。
縦書きグリフ選択が使えないシステムでは
[CODE[U+FE19]]
を使うのが望ましく、
[CODE[U+22EE]]
は[[数式]]用なので望ましくないとされています
[SRC[>>361]]。
([[組合せて使う文字]]も参照。)



[REFS[
- [242] 
[[JIS X 0213]],
[[JIS X 4051]]
と
[CODE[[[Vertical_Orientation]]]]
を比較
<https://chars.suikawiki.org/set/compare?expr=$jisx0213-2000:has-vertical-example&expr=%24jisx4051-2004%3Avertical-specific-glyphs&expr=$unicode:Vertical_Orientation:Tr&expr=$unicode:Vertical_Orientation:Tu>

]REFS]



-*-*-

[272] 
[[Unicode]]
の[[符号表]]で
[CODE[U+3031]] - [CODE[U+3035]]
の[[くの字点]]は、
「These characters are only used in vertical writing of Japanese.」
と注釈されています。
[CODE[U+3031]]
[CODE(charname)@en[VERTICAL KANA REPEAT MARK]]
([CODE[〱]])
と
[CODE[U+3032]]
[CODE(charname)@en[VERTICAL KANA REPEAT WITH VOICED SOUND MARK]]
([CODE[〲]])
は、
例示字形が[[縦書き字形]]を1文字分の高さに圧縮したものでした。
「implemented as glyphs that are two-em tall」
と注釈がありました。
[CODE[U+3033]]
[CODE(charname)@en[VERTICAL KANA REPEAT MARK UPPER HALF]]
([CODE[〳]]),
[CODE[U+3034]]
[CODE(charname)@en[VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF]]
([CODE[〴]]),
[CODE[U+3035]]
[CODE(charname)@en[VERTICAL KANA REPEAT MARK LOWER HALF]]
([CODE[〵]])
は、
例示字形が[[縦書き字形]]でした。
最初の2つに対して
「implemented as glyphs that are one-em tall
and that combine with the following character
to form ligated two-em glyphs for the
complete repeat marks」
と注釈がありました。
[SRC[>>271]]
これらはみな
[CODE[[[Vertical_Orientation]]=U]]
でした。

[273] 
[[縦書き]]で使う[[蒙古文字]]が[[符号表]]では[[横書き]]用に倒された[[字形]]で、
[[縦書き]]では回転させることになっている (>>256)
のとは、
扱い方が違っています。
2文字分に分かれた3文字などは、
[[符号表]]のままの[[字形]]では[[左横書き]]で使うことがまず不可能なのですが。

[274] 
[CODE(char)[U+303B]]
[CODE(charname)@en[VERTICAL IDEOGRAPHIC ITERATION MARK]]
([CODE[〻]])
も[[文字の名前]]に
「VERTICAL」
と入っていますが、
特に注釈もありません [SRC[>>271]]。
[[JIS X 0213]]
の同[[名][文字の名前]]の文字は大書きの[[縦書き字形]]と右寄せ[[小書き]]の[[縦書き字形]]のどちらもあり得るとしていますが、
[[Unicode]]
は大書きの字形しか示しておらず、どのようなスタンスなのか不明です。


[266] 
[[Unicode]]
に含まれる[[合略仮名]]の
[CODE(char)[U+309F]] 
[CODE(charname)@en[HIRAGANA DIGRAPH YORI]]
([CODE[ゟ]])
[SRC[>>267]]
と
[CODE(char)[U+30FF]]
[CODE(charname)@en[KATAKANA DIGRAPH KOTO]]
([CODE[ヿ]])
[SRC[>>265]]
について、
[[符号表]]には通常の字形が表示されていますが、
相当する[[仮名]]2文字に
[CODE[<vertical>]]
で[[互換等価]]という扱いにされています [SRC[>>267, >>265]]。
[[符号表]]には
「historically used in vertical contexts, but now
found also in horizontal layout」
と注釈があります
[SRC[>>267, >>265]]。

;; [567] 
歴史的に縦書きで使われ、今では横書きでも使われる、というのは仮名や漢字すべてに当てはまる特徴です。
なぜこの2文字にだけわざわざ注釈しているのか謎です。


;; [289] 
[CODE[Decomposition_Type]] が
[CODE[Vertical]]
な[[文字]]は、
本項執筆時点で、
この2つの[[合略仮名]]を除けば
[CODE[U+FE10]]-[CODE[U+FE46]]
の縦書き専用[[符号位置]]だけです。
まったく性質の異なるそれらと同一に扱うこの[[互換分解]]には疑問があります。

;; [268] 
[CODE(char)[U+2A708]]
[CODE(charname)@en[CJK UNIFIED IDEOGRAPH-2A708]]
([CODE[𪜈]])
はなぜか
[[CJK統合漢字]]で、
[[互換分解]]もされません。
扱いが一貫していません。

[314] 
[CODE[U+00B2]]
の
[CODE[²]]
を始め、[[上付き]]、[[下付き]]の[[文字]]は
[CODE[R]]
となっています。
この種の表現の[[縦書き]]は難しく苦心しているようですが
[SEE[ [[小書き]] ]]、
「いろ²」
のような[[日本語]]の[[踊り字]]の用法に
[CODE[R]]
は馴染みません。(かといって [CODE[U]] もおかしいですが。)


[351] 
[CODE[U+25B6]]
[CODE(charname)@en[BLACK RIGHT-POINTING TRIANGLE]]
([CODE[▶]])
の類は
[CODE[U]]
です。
[CODE[U+23F5]]
[CODE(charname)@en[BLACK MEDIUM RIGHT-POINTING TRIANGLE]]
([CODE[⏵]])
の類は
[CODE[U]]
です。
後者は特に[[媒体タイムライン]]の操作ボタンとしての利用が想定されているようです。
これらは[[矢印]]の類が [CODE[R]] なのと扱いが違います。
三角形を[[矢印]]的なものや[[箇条書き]]のマークとして使うことがあるので要注意です。


[REFS[
- [271] [CITE[The Unicode Standard, Version 13.0 - U3000.pdf]], [TIME[2020-03-02T22:41:14.000Z]], [TIME[2020-10-22T12:28:54.387Z]] <https://www.unicode.org/charts/PDF/U3000.pdf#page=4>
- [267] [CITE[The Unicode Standard, Version 13.0 - U3040.pdf]], [TIME[2020-03-02T22:41:14.000Z]], [TIME[2020-10-22T12:15:10.740Z]] <https://www.unicode.org/charts/PDF/U3040.pdf#page=4>
- [265] [CITE[The Unicode Standard, Version 13.0 - U30A0.pdf]], [TIME[2020-03-02T22:41:14.000Z]], [TIME[2020-10-22T12:13:40.156Z]] <https://www.unicode.org/charts/PDF/U30A0.pdf#page=4>
- [264] [CITE[The Unicode Standard, Version 13.0 - U3100.pdf]], [TIME[2020-03-02T22:41:14.000Z]], [TIME[2020-10-22T12:09:52.534Z]] <https://www.unicode.org/charts/PDF/U3100.pdf#page=2>
- [7] [CITE[[[UAX #50]]: Unicode Vertical Text Layout]], [TIME[2020-03-07 07:23:12 +09:00]] <https://www.unicode.org/reports/tr50/>
-- [243] <https://www.unicode.org/reports/tr50/#vo>
--- [254] <https://www.unicode.org/reports/tr50/#code_charts>
-- [259] <https://www.unicode.org/reports/tr50/#vertical_alternates>
- [173] [CODE[VerticalOrientation.txt]]
-- [213] [TIME[2019-10-12T21:51:11.000Z]], [TIME[2020-10-22T02:53:53.457Z]] <https://www.unicode.org/Public/UCD/latest/ucd/VerticalOrientation.txt>
-- [207] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-21T06:31:45.938Z]] <https://www.unicode.org/reports/tr44/#Complex_Default_Values>
-- [24] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-21T06:24:49.510Z]] <https://www.unicode.org/reports/tr44/#Default_Values_Table>
-- [174] 
[CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2020-03-06T22:23:11.000Z]], [TIME[2020-10-18T09:39:12.689Z]] <http://www.unicode.org/reports/tr44/#Vertical_Orientation>
]REFS]




* 文書記述


** [CODE[@]] フォント

[100] 
[[Windows]]
では[[フォント名]]に
[CODE[@]]
をつけると[[縦書きフォント]]になります。

[101] 
[[左横書き]]環境でこの[[フォント名]]を使うと、
[[縦書き字形]]が選択された上で、
[[仮名]]や[[漢字]]は[[反時計回り]]90°[[回転][回転 (書字方向)]]した状態になります。
[SEE[ [[[CODE[@]]フォント]] ]]



[FIG(quote)[
[FIGCAPTION[
[97] [CITE[縦書き編集]]
([TIME[2009-01-15T08:09:52.000Z]], [TIME[2020-10-17T00:22:08.267Z]])
<http://0ban.com/araken/qxhelp/tategaki.htm>
]FIGCAPTION]

>  フォント設定により 縦書き用フォント(1文字目が @)を使用すると、縦書き編集できます。
>  縦書き編集はウィンドウが時計回りに90度回転していると考えてください。
>  矢印キー(→←↑↓)の機能も時計回りに90度回転します。つまり、通常の横書き編集のときは → で「1文字右に移動」が実行されるとすると、縦書き編集では、↓ で「1文字右に移動」が実行されます。

]FIG]

** RTF

[411] [[RTF]] には進行方向の指定 [SEE[ [[書字方向]] ]] や、
[[フォント]]の回転の指定がありました。

- 「vertically, non-vertical font」
- 「Font rotation」: 「Right」「Down」「Left」「Up」

[REFS[
- [404] [CITE[Rich Text Format (RTF) Specification 1.6 - 222118993.pdf]], [TIME[2016-12-17T21:45:10.000Z]], [TIME[2020-10-25T08:32:15.910Z]] <http://docshare01.docshare.tips/files/22211/222118993.pdf>
]REFS]

** JustView

[401] 
[[JustView]]
の
[CODE[<multicol baseline=vert>]]
を使った[[縦書き]]の実装は、
適用される[[フォント]]の[[縦書き]]用の字形に切り替えていたようです。

[402] 
[[左横書き]]で同じような横線に見えても[[縦書き]]で縦線に変わる文字とそうでない文字があったり、
[[プロポーショナルフォント]]を使うと[[字形]]が縦に揃わなかったりと不便があったようです。

[SEE[ [[<multicol baseline=vert>]] ]]

** JIS X 4052

[405] 
[[JIS X 4052:2000]] 6.1
によると、
[CODE['[[組方向]]']]
が
[CODE['[[縦]]']] (「[L[[[縦書き]]]]」)
または
[CODE['[[横]]']] (「[L[[[横書き]]]]」、[[左横書き]]のこと)
で指定できました。
[CODE[body]] に必ず指定するよう求められていました。

[406] 
「[L[[[欧文用文字クラス]]及び[[連数字クラス]]]]」
は既定値が
「[L[[[横書き]]]]」
で、
[[縦書き]]時は
「[L[文字の並びの横軸を時計回りに]]
[L[90度回転させた横書きとして表現]]」
することとされました。

[409] 
[CODE[yoko]] [[要素]]で[[縦中横]]が指定できました [SRC[6.17]]。
[CODE[tate]] [[要素]]で
「[L[欧文用文字を縦書き中で和字扱い]]」 [SRC[6.18]]
と指定して[[欧字]]や[[数字]]を[[正立]]で縦に並べられました。

[407] 
「[L[組方向に依存した約物の使い方及び表記方法 (数字の書き方など)]]」
は組方向変更時に書き換えなければならないとされていました。

[408] 
[CODE['[[スラント]]']]
は、
[[横書き]]では右側、
[[縦書き]]では下側に変形するとされました。
[SRC[6.2 4.2)]]

** [CODE[layout-flow]]

[412] 
[CODE['[[layout-flow]]']]
は、

- [[横書き]]で[[正立]]
- [[横書き]]で[[正立]]、ただし縦書き文字は[[反時計回り90°回転]]
- [[縦書き]]右左で[[正立]]、ただし横書き文字は[[時計回りに90°回転]]
- [[縦書き]]左右で[[正立]]

の4モードを指定できるとしていました。
回転の有無の変更や[[縦中横]]は入れ子の指定で実現していました。

[413] 例示では「。」の位置が縦横で変わっていましたが、
規定本文には言及がありませんでした。

** 現代 Web プラットフォーム


[238] 
[[HTML]]
の[[仕様書]]は
[[bidi]]
処理を
[[CSS]]
を使って記述しています。
[[CSS]]
は
[[Unicode Bidirectional Algorithm]]
を使って[[左横書き]]と[[右横書き]]の扱いを[[規定]]しています。
[[HTML]]
にも
[[CSS]]
にも[[鏡像化]]に関する規定はなく、
[[Unicode]]
のアルゴリズムの挙動を[[著者]]が制御する手段は提供されていません。

[520] 
[[縦書き]]用字形の決定については、
仕様上は明確に定まっている (ことになっている) ものの、
現実は混乱した状況が続いています。
[[フォント]]ごとに[[グリフ]]の有無がまちまちである上、
[[UAX #50]]
と
[[CSS]]
の規定がそれぞれ問題を抱えており、
各[[Webブラウザー]]が仕様とは異なる独自の処理を行っているため、
[[相互運用性]]が低い状態です
[SRC[>>519]]。


[REFS[
-
[519] 
[CITE@ja[縦書きHTMLにおける文字の向きはどのように定まるか - [[ドワンゴ]]教育サービス開発者ブログ]], 
[[berlysia]], 
2022-07-01, 
[TIME[2022-09-15T03:55:44.000Z]] <https://blog.nnn.dev/entry/2022/07/01/180000>
]REFS]


* メモ





[FIG(quote)[
[FIGCAPTION[
[111] [CITE[法令における拗音及び促音に用いる「や・ゆ・よ・つ」の表記について]]
([TIME[2008-07-03T14:51:11.000Z]], [TIME[2020-10-17T09:46:04.354Z]])
<http://www5d.biglobe.ne.jp/~Jusl/Bunsyo/yayuyotu.html>
]FIGCAPTION]

>  (4)	 小書きにした「や・ゆ・よ・つ」は、タイプ又は印刷の配字の上では一文字文として取り扱うものとし、(注)に示すように、上下の中心に置き、右端を上下の字の線にそろえる。

]FIG]


[112] ([TIME[2018-01-18T11:57:34.000Z]], [TIME[2020-10-17T09:48:48.383Z]])
<https://upload.wikimedia.org/wikipedia/commons/d/d5/%E6%9D%A1%E4%BE%8B%E3%80%81%E8%A6%8F%E5%89%87%E7%AD%89%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E6%8B%97%E9%9F%B3%E5%8F%8A%E3%81%B3%E4%BF%83%E9%9F%B3%E3%81%AB%E7%94%A8%E3%81%84%E3%82%8B%E3%80%8C%E3%82%84%E3%83%BB%E3%82%86%E3%83%BB%E3%82%88%E3%83%BB%E3%81%A4%E3%80%8D%E3%81%AE%E8%A1%A8%E8%A8%98%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%EF%BC%88%E9%80%9A%E7%9F%A5%EF%BC%89.pdf>



[FIG(quote)[
[FIGCAPTION[
[417] [CITE@ja[イコール(=)の記号を縦に書いても意味はイコールですか? - 英語圏の... - Yahoo!知恵袋]]
([[Yahoo! JAPAN]], [TIME[2020-10-29T02:52:27.000Z]])
<https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10114045845>
]FIGCAPTION]

> 英語圏の友人にイコール記号を縦に書いた資料を渡したら、どういう意味?と聞かれました。
> 日本ではイコールの記号を縦向きに書いても、イコールの意味になりますよね?

]FIG]




[FIG(quote)[
[FIGCAPTION[
[419] [CITE@ja[縦書きで約物(≠)の表記方法 - DTP駆け込み寺掲示板過去ログ]]
([[吉田印刷所]], [TIME[2020-10-29T02:56:42.000Z]])
<https://dtp-bbs.com/dtpbbs/archives/_20071012080443.html#gsc.tab=0>
]FIGCAPTION]

> ①使ってはいけない
> ②そのまま横書きと同じ表記に
> ③90度回転のみ(横一線が左上から右上に)
> ④90度回転後、横一線を右上から左上にする
> のどれかだと思うのですが、ご存知の方いましたらアドバイスを
> いただければ幸いです。
>  
> » 001
> 5.マイナス90度回転のみ(横一線が左上から右下に)

]FIG]


[341] [CITE@ja-JP[GIMPで縦書き - mynote]]
([TIME[2020-11-05T05:27:21.000Z]])
<http://reddog.s35.xrea.com/wiki/index.php?GIMP%E3%81%A7%E7%B8%A6%E6%9B%B8%E3%81%8D#icc5aa31>

[FIG(quote)[
[FIGCAPTION[
[344] [CITE@ja[EPUBで縦書きや組版を綺麗に表示する電子書籍ソリューション | BPS株式会社]]
([TIME[2020-11-07T08:53:18.000Z]])
<https://www.bpsinc.jp/epub.html#typesetting-fonts>
]FIGCAPTION]

> 縦書きでは、図のようにフォントが回転してしまうこともありますが(左側)、CSSの指定で回避可能です(右側)。
> 1	-epub-text-orientation: upright;

]FIG]

[345] [[Web Fonts]] で指定した[[フォント符号化]]の独自[[絵文字]]が回転されるのを回避。

[364] [CITE[Word で縦書きし印刷すると句読点などが崩れる: 世の中は不思議なことだらけ]]
([TIME[2020-11-07T10:45:17.000Z]])
<https://snow-white.cocolog-nifty.com/first/2019/07/post-f228d1.html>

[FIG(quote)[
[FIGCAPTION[
[376] [CITE[小さい「っ」の表示位置がおかしい?他テキストツール要望 | CLIP STUDIO PAINTの要望・不具合ボード | CLIP STUDIO]]
([TIME[2020-11-07T10:45:42.000Z]])
<http://www.clip-studio.com/clip_site/support/request/detail/svc/54/tid/34432>
]FIGCAPTION]

> CSPの方は、小さい「っ」の表示位置がおかしいように感じます。
> これに限らず、CSPのテキストには、日本語縦書きの表示としてはおかしい?と言うような
> 違和感を感じる部分が多々ありまして、

]FIG]


[420] [CITE@ja[1「M's」や「B'z」といった文字を縦書きにするとどういう表記が... - Yahoo!知恵袋]]
([[Yahoo! JAPAN]], [TIME[2020-11-07T10:46:30.000Z]])
<https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1367094243>

[FIG(quote)[
[FIGCAPTION[
[427] [CITE@ja[フォント関連仕様調査部会について | 一般社団法人 文字情報技術促進協議会]]
([TIME[2020-11-15T08:09:45.000Z]], [TIME[2020-11-15T08:12:18.441Z]])
<https://moji.or.jp/wg/spec/>
]FIGCAPTION]

> 2020年は、縦書きEPUB文書での文字横転にまず着手します。
> 縦書きEPUB書籍の文字が、フォントの違いによって、横転したりしなかったりすることを確認します。
> CSS Writing Modes仕様書、Unicode仕様書、OpenType仕様書の関連部分を調査します。
> Adobe-Japan1フォントについてのデータ(GitHubに公開されているもの)を調査します。
> 有力なフォントが縦書きにどう対応しているかを調査します。

]FIG]


[453] [CITE@ja[印刷データ→電子書籍で外字化が必要な文字のまとめ | 電書魂]], [TIME[2020-12-27T01:24:55.000Z]] <http://densyodamasii.com/?p=314>

[454] [CITE@ja[InDesignとEPUBの縦書き時の文字の向きの差について | 電書魂]], [TIME[2020-12-27T08:03:23.000Z]] <http://densyodamasii.com/?p=2314>

[455] [CITE@ja[UTR50(Unicode縦書きの文字の向き仕様)で注意を要する文字 | CSS組版ブログ]], [TIME[2020-12-27T08:05:32.000Z]] <https://blog.antenna.co.jp/CSSPage2/archives/100>