Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MurakamiShinyu/8a4c92eae03dd15284d28ae1f9f066c9 to your computer and use it in GitHub Desktop.
Save MurakamiShinyu/8a4c92eae03dd15284d28ae1f9f066c9 to your computer and use it in GitHub Desktop.
文字幅と縦書きの文字の向きを指定する異体字セレクタ(提案)

文字幅と縦書きの文字の向きを指定する異体字セレクタ(提案)

名称と略称の案:
East Asian Typographic Variation Selectors (EATVS)

目的

従来フォント依存あるいは処理系依存でありプレーンテキストでは指定することができなかった文字幅や縦書きの文字の向きを特別な異体字セレクタにより指定できるようにする。

  • 文字幅(全角、半角、プロポーショナル)を指定。UAX #11 East_Asian_Width (EAW) プロパティに変更を加える。約物の全角・半角の指定ができる。
  • 縦書きでの文字の向きを指定。UAX #50 Vertical_Orientation Property (vo) プロパティに変更を加える。

必要な異体字セレクタ

文字幅の指定と縦書きでの文字の向き指定は関連するので、組み合わせを網羅する必要はなく、まず次の3つがあれば十分だろう:

  • 全角文字扱いにする異体字セレクタ。以下 "{全}" で表す。
  • 約物など半角幅の扱いにする異体字セレクタ。以下 "{半}" で表す。
  • 欧文用文字扱いにする異体字セレクタ。以下 "{欧}" で表す。

適用対象の文字種と各異体字セレクタの効果

  • ラテン文字、ギリシャ文字、キリル文字、数字、シンボル類、など
    • {全}:全角文字、漢字等(cl-19)の扱い。EAW=Fの扱い。vo=Uの扱い。
    • {半}:半角文字、EAW=Hの扱い。vo=Rの扱い。縦中横に使える。半角幅字形がない場合は{欧}と同じ扱い。
    • {欧}:欧文用文字(cl-27)の扱い。プロポーショナル。EAW=Naの扱い。vo=Rの扱い。実際の字幅は文字とフォントに依存。
  • 約物(句読点、括弧類、引用符類)
    • {全}:全角約物の扱い。約物の種類により、半角約物と同等の字形で前か後ろに半角アキ、または両側に四分アキが付いたものとなる。EAW=Fの扱い。voは変えない。
    • {半}:半角約物の扱い。全角約物に含まれる前または後ろのアキを取り除いたものとなる。EAW=Hの扱い。voは変えない(半角カタカナのブロックの約物はvo=Rであるので、通常の約物に{半}を指定したものと一致しない)。半角幅に詰められない約物(全角ダッシュなど)には適用されない。
    • {欧}:欧文約物の扱い。プロポーショナル。EAW=Naの扱い。vo=Rの扱い。ただし、欧文用やプロポーショナルな字形がない場合は{半}と同じ扱い。実際の字幅は文字とフォントに依存。

使用例

縦組みで標準では横倒し(vo=R)の文字を正立(vo=U)にする:

ギリシャ文字α{全}とユーロ記号€{全}

右向き矢印→{全}を縦組みで下向き↓{全}に変えない。

縦組みで標準では正立(vo=U)の文字を横倒し(vo=R)にする:

§{欧}3.2.1 Composition of Japanese and Western Mixed Texts

縦書きで横倒しにしたい‖{欧}双柱

クォーテーションマークの和文用と欧文用を切り替える:

和文で“{全}ダブルクォーテーションマーク”{全}を使う。

Let’{欧}s use “{欧}quotation marks”{欧} in English.

読点及び中点の例外的な配置方法をプレーンテキストで実現:

三、{半}四五六、{半}七八九人

二、{半}三人

〇・{半}三五一四

約物が​連続する​場合の​配置方法をプレーンテキストで明示的に指定:
(通常は指定しなくても自動処理されるべきだが、明示的に指定できることは処理方法の記述などに有用)

…である。{半}」{全}この…

…である){半}。{全}この…

…である、{全}「{半}この…

…である」{全}「{半}この…

…である「{全}『{半}この…

…である){半}」{全}この…

「編集」{半}・{全}「{半}校正」

実装はどうなるか

これらの異体字セレクタの処理は、Webブラウザなどテキストを表示するレンダリングエンジンに実装される必要がある。レンダリングエンジンは、文字幅を変えるのに OpenType の feature を使ってもよい。あるいは標準のグリフの前または後ろまたは両側を詰めるかアキを追加するかしてもよい。

CSS Text の text-spacing プロパティによる行頭・行末の約物、連続約物の詰め(trim-)とアキ(space-)の処理は、これらの異体字セレクタが指定された約物には適用されない。つまり異体字セレクタでの指定が優先されるものとする。

CSS Writing Modes の text-orientation プロパティが初期値の mixed である場合、これらの異体字セレクタによる縦書きの文字の向きが優先される。mixed 以外の場合には text-orientation プロパティの指定が優先されるものとする。

なお、現状のWebブラウザの実装では、矢印記号など、フォントによって縦書きで 'vert' feature で回転した字形が存在するものは、text-orientation に upright を指定した場合にもそれが適用されて正立の文字とならないという問題がある。このような方向のある文字には upright が指定されたとき 'vert' feature は適用されるべきではないだろう。

@MurakamiShinyu
Copy link
Author

MurakamiShinyu commented Dec 17, 2020

Twitterから関連情報(ありがとうございます)

https://twitter.com/monokano/status/1339465800286052354

文字幅の異体字セレクタはKen先生がStandardized Variants で提案しているような記憶があります。

https://blogs.adobe.com/CCJKType/2018/01/svs-part1.html
これかな?

https://twitter.com/MurakamiShinyu/status/1339472583972933633

なるほど異体字セレクタで区別する提案はすでにあったのですね。ありがとうございます。
これも関係しそうですね:
http://unicode.org/L2/L2014/14006-sv-western-vs-cjk.pdf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment