• 検索結果がありません。

CSS勉強会

N/A
N/A
Protected

Academic year: 2021

シェア "CSS勉強会"

Copied!
97
0
0

読み込み中.... (全文を見る)

全文

(1)

CSS勉強会

ビヨンド・パースペクティブ・

ソリューションズ株式会社

(2)

自己紹介

• @babatakao

• BPS株式会社

• プログラマー

(3)

目次

• CSS2の復習

• コラム: JLReq

• Writing Modesの概要と縦書き

• HTML5/CSS Rubyの基本と組版

(4)
(5)

CSSとは

CSS 2.1 is a style sheet language that

allows authors and users to attach style

(e.g., fonts and spacing) to structured

documents (e.g., HTML documents and

XML applications).

http://www.w3.org/TR/CSS2/

構造化文章(HTMLなど)に

(6)

HTMLとCSS

<!DOCTYPE html> <html> <head> <title>CSS勉強会</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>CSS勉強会2015年9月</h1> <p>こんにちは<br>世界!</p> </body> </html> p { color: red; text-decoration: underline; CSS勉強会2015年9月 こんにちは 世界! CSS勉強会 ×

(7)

インラインとブロック

インライン ブロック

むかしむかし、あるところに、 おじいさんとおばあさんが住 んでいました。

a, span, img, input など • 横に進む • 右端で折り返す むかしむかし、あるところに、 おじいさんとおばあさんがす んでいました。 div, p, h1, form など • 下に進む • 横いっぱいに広がる

(8)

HTML/CSSの用語

a:visited

{

color

:

gray

;}

セレクタ プロパティ

<p

class="text"

>

日本語

</p>

要素 属性 Attribute 内容 開始タグ 終了タグ

(9)

CSS Level

• Level != Version

• http://www.w3.org/Style/2011/CSS-process

Writing Modes Level 3 Ruby Level 1 Selectors Level 3 Media Queries Level 3 Color

Level 3 FlexboxLevel 1 AnimationsLevel 1

Page Floats Level 3 CSS 2.1 (Level 2 Revision 1) CSS Level 3 Color

(10)
(11)

JLReq

http://www.w3.org/TR/jlreq/

• Req

uirements for

J

apanese Text

L

ayout

– 日本語組版処理の要件

• 組版の要件を定義

– 仕様書ではない

– W3C Working Group Note

• JIS X 4051

– 日本語のみ

(12)
(13)

シリーズ

• http://www.w3.org/International/layout

– Japanese

– Hangul

– Chinese

– Indic

– Tibetan

– Latin

– Arabic

– Ethiopic

(14)
(15)

目次

• 概要

– Writing Modeの基本概念

• 色々な「方向」

– ブロックの進行方向

– 行の進行方向

– 行と文字の向き

• そのほかの要素

– 縦中横

– ベースライン

【登場するプロパティ】 • direction • unicode-bidi • writing-mode • text-orientation • text-combine-upright

(16)
(17)

<p>

縦<br>

書<br>

き<br>

の<br>

文<br>

章<br>。

</p>

(18)
(19)

Writing Modesモジュール

多言語対応のため、書字方向を切り替える

• left-to-right

– ラテン系言語、インド語

• right-to-left

– ヘブライ語、アラビア語

• bidirectional

– ラテン系言語とアラビア語の混在

• vertical

– 日本語、中国語

(20)

縦書きにするには

html {

writing-mode: vertical-rl;

}

p {

text-align: left;

}

??

(21)
(22)

用語の(再)定義

• CSS2.1では、horizontal-tbしか考慮され

ていなかった

• 位置や大きさを示す用語は、方向の影響

を受けるものと受けないものがある

– 物理座標を直接示すもの

– 進行方向(ブロック/行)に対する相対的なも

– 行の向きに対する相対的なもの

(23)

用語の(再)定義

位置を表す • physical – 物理的な位置 – margin-left – border-top • flow-relative – ブロック/行の進行方向に対 する位置 – text-indent • line-relative – 行の向きに対する位置 – text-align – text-decoration 大きさを表す • physical – 物理的なサイズ – width – height • logical – 縦書きでは幅・高さの意味 が入れ替わる – line-height

(24)
(25)

インラインとブロックの進行方向

横書き 縦書き(RTL) むかしむかし、あるところに、 おじいさんとおばあさんがす んでいました。 む か し む か し 、 あ る と こ ろ に 、 お じ い さ ん と お ば あ さ ん が す ん で い ま し た 。 インラインの進行方向ブロックの進行方向は 必ず直交する。

(26)

writing-mode プロパティ

• インラインとブロックの主要な進行方向を指定 – horizontal-tb – vertical-rl – vertical-lr • テーブルのgroup以外すべてに適用可能 – インラインにも! – ::markerにも!

• Principal writing mode

– root要素のwriting modeは、ページ進行方向に影響を与 える

• Replaced Element(画像や動画)は回転しない

(27)
(28)

行の進行方向

こんにちは、世界

ءْىَش

ِ لُكِل اًرْكُش

Left-to-right (LTR) Right-to-left (RTL)

Hello,

wor

ld.

Left-to-right (LTR)

(29)

行の進行方向を決める要素

• CSSプロパティ? – direction, unicode-bidi • HTML? – <bdi>, <bdo> • Unicodeの仕様? – UAX#9 • Unicodeの制御文字?

– LRE, RLE, LRO, RLO, PDF, ... (UAX#9)

• フォント?

(30)

行の進行方向 影響を受けるもの

• text-alignの初期値、text-indent

• テーブルのカラム

Col.1 Col.2 Col.3

1.1 1.2 1.3 2.1 2.2 2.3

Col.3 Col.2 Col.1

1.3 1.2 1.1 2.3 2.2 2.1

(31)
(32)

行の向き と 文字の向き

Hello,

Line Top Line Bottom 文字の向き

(33)

文字の向き 自動判定

• horizontal-only

– ラテン言語

• bi-orientational

– 日本語、ハングル

• vertical-only

– モンゴル語 Vertical script Horizontal script rotate translate

(34)

文字の向き 手動指定

text-orientation

Hello

World

こんにちは

Hello

Worl

d

世界

World

世界

こんにち

Hello

H

e

l

l

W

o

r

l

d

mixed sideways-right sideways-left upright

﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅ 行の向きが 逆になっている!

(35)

文字の向きを指定するだけ?

mixedのときどうする? • 日本語は正立 • 英語は回転 • じゃあこれらは? → ← ↑ → ( ) < > 「 」 “ ” ー ~ 〒 | : ; ! ? ‖ ± ∴ ∵ ゞ ㍍ ㍑ 日本語はそのままでOK?

びっくり

(36)

UTR#50とCSS Writing Modes

• UTR#50ではVertical_Orientation Property (VO) を定義

– U: 正立 – R: 時計回りに90度回転 – Tu: 縦書きグリフがあれば使い、無ければ正立 – Tr: 縦書きグリフがあれば使い、無ければ90度回転 • CSSでは2パターンしかない – typeset upright • 縦書きグリフ/メトリクスがあれば使う • ただし、Trで縦書きグリフがない場合は、回転しても良い – typeset sideways • 横書き用のグリフ/メトリクスを使い、90度回転する • マッピング

– U, Tu, Trはtypeset upright

“ 変 形 す る 「 文 字 ㍍ 」 も あ る ! ”

(37)

注意が必要な文字

• U+2016 DOUBLE VERTICAL LINE 「‖」

– 縦書きでも、縦棒でありたい

– VO: "U" → そのままで大丈夫だ! – CSS: "typeset upright"

• 回転しないが、縦書きグリフがあれば使う – フォントの縦書きグリフを見てみる

(38)
(39)

縦中横

• 縦書きの中に横書き

– 数字、!?、(a)

• 常に正立

<p>平成<span>24</span>年</p> span { text-combine-upright: all; }

(40)

縦中横の特徴

• 常に正立、縦横中央

– 1文字の縦中横

• 常に1文字ぶんのスペース

– OpenTypeではhwid, twid, qwid – 全角→半角

– その他圧縮

• 原則、1文字として扱う

(41)

ベースライン

(42)

ちょっとややこしい話

Orthogonal Flow

(43)

基本のboxサイズ計算

Hello, world. Browser Window こ ん に ち は Browser Window <html> <body> <p style=

"border: 3px solid blue"> Hello, world. </p> </body> </html> measure extent extent measure 43

(44)

'auto'のサイズ計算

• measureは広がる

– 例外:inline-block, float, absoluteの一部

ケース

• extentは子にフィット

• writing modeが入れ子になって循環依存

する場合は?

(45)

ちょっとややこしい話

sideways-left

(46)

cibarA

aL

の文章

の文章

,

Hell

o!

こんにちは

モンゴル

Alabic Language」という部分はアラビア語 「モンゴル語」という部分はモンゴル語

こんにちは

cibarA

egaugnaL

の文章

基本の横書き

こんにちは

cibarA

egau

gn

aL

の文章

日本語、中国語 vertical-rl

The pop

ulation

of

and NY

.

sideways-lr モンゴル語 vertical-lr Σ(゜д゜

gn

aL

の文章

cibarA

vertical-rl sideways-left 90° 270°

(47)
(48)

Writing Modes まとめ

• 4つの方向を制御する

– ブロックの進行方向(writing-mode) • 入れ子にできる – 行の進行方向(writing-mode + direction) • bidiとの関連 – 行の向き(writing-mode + text-orientation) • sideways-leftが特殊 – 文字の向き(text-orientation) • フォントやUTR#50との関連

• 文字は向きだけでなく、変換が発生する

(49)
(50)

目次

• ルビとは

• 基本のマークアップ

• CSSでできるルビ

– モノルビ、熟語ルビ、グループルビ

– ruby-position

– ruby-align

• CSSでできないルビ

【登場するタグとプロパティ】 • <ruby> • <rt> • <rb> • <rtc> • ruby-position • ruby-merge

(51)

ルビとは

とある科学の超電磁砲

かがく

レールガン

ruby base

【親文字】

【ルビ】

ruby text

(52)

ルビの特徴

• 横書きでは上

• 縦書きでは右

• 親文字の1/2のサイズ

• 小書き文字は使わない

とある科学(かがく)の超電磁砲(レールガン)

(53)

マークアップ

<p> とある <ruby> <rb>科学</rb> <rt>かがく</rt> </ruby> の <ruby> <rb>超電磁砲</rb> <rt>レールガン</rt> </ruby> </p> <p> とある <ruby> 科学<rt>かがく </ruby> の <ruby> 超電磁砲<rt>レールガン </ruby> </p>

(54)

コラム:XHTML Ruby

<ruby> <rbc> <rb>10</rb> <rb>31</rb> <rb>2002</rb> </rbc> <rtc> <rt>Month</rt> <rt>Day</rt> <rt>Year</rt> </rtc> <rtc> <rt rbspan="3"> Expiration Date </rt>

10 31 2002

Month Day Year Expiration Date

(55)

コラム:どうしてこうじゃないのか

<span

ruby="かがく"

>

科学

</span>

マークアップが簡単!

(56)

【HTML5/CSSでできるルビ】

モノルビ・熟語ルビ・グループルビ

(57)

モ ノ ル ビ 熟 語 ル ビ

(58)

方角を凝視する

ぎようし

方角を 凝 視する

ぎよう し

<ruby>凝<rt>ぎょう</ruby><ruby>視<rt>し</ruby> <ruby>凝<rb>視<rt>ぎょう<rt>し</ruby> モノルビ 熟語ルビ

(59)

熟語ルビ:親文字とルビ文字を対応させる

新しい熟

語を覚え

ることで

じゆくご

新しい熟

語を覚え

ることで

じゆ くご

新しい熟

語を覚え

ることで

じゆく ご

(60)

グループルビが必要なケース

とある科

学の超電

磁砲

がく

レー

ルガン

ルガン?

とある科

学の

超電磁砲

がく

レールガン

(61)

まとめ

モノルビ・熟語ルビ・グループルビ

モノルビ 熟語ルビ グループルビ

(62)

【HTML5/CSSでできるルビ】

<rp>

(63)

普通のルビ

私は<ruby>日本語<rt>にほんご</ruby>を話します。 とても面白い<ruby>話<rt>はなし</ruby>です。

私は日本語を話します。

にほんご

とても面白い話です。

はなし

(64)

_人人人人人人人人人人_

> 突然のstrip_tags() <

(65)
(66)

タグを消しました

私は<ruby>日本語<rt>にほんご</ruby>を話します。

とても面白い<ruby><rt>はなし</ruby>です。

私は日本語にほんごを話します。

(67)

<rp>を入れると

とても面白い<ruby>話<rp>(<rt>はなし<rp>)</ruby>です。

(68)

rp: Ruby Parenthesis

括弧を <ruby> 付 <rp>(</rp> <rt>つ</rt> <rp>)</rp> </ruby> ける

括弧を付ける

括弧を付(つ)ける

(69)

【HTML5/CSSでできるルビ】

auto-hiding

(70)

auto-hiding

日本語に振り仮名を

ふ り が な

日本語に振り仮名を

日本語に振り仮名(ふりがな)を

日本語に振(ふ)り仮名(がな)を

が な

(71)

auto-hiding

<ruby> <rb>振</rb><rb>り</rb><rb>仮</rb><rb>名</rb> <rp>(</rp> <rt>ふ</rt><rt>り</rt><rt>が</rt><rt>な</rt> <rp>)</rp> <ruby>

(72)

【HTML5/CSSでできるルビ】

付ける側の指定

(73)

反対側にルビを付ける

雑誌の編集者は

editor

ruby {

ruby-position: under;

}

(74)

両側にルビを付ける

慶應義塾大学

Keio University

けいおうぎじゆくだいがく

<ruby> 東南 <rtc>とうなん</rtc> <rtc class="under">たつみ</rtc> </ruby>

(75)

親文字とルビ文字の数が違うケース

<ruby> 日<rb>本<rb>語 <rt>に<rt>ほん<rt>ご <rtc>Japanese</rtc> </ruby>

Japanese

日本語

にほんご

??

(76)

If there are not enough ruby text annotations in a ruby

annotation container, the last one is associated with any excess ruby bases. ルビ文字の数が足りない場合、最後の1つを残りの親文字に対応付ける。 <ruby> <rbc><rb>日</rb><rb>本</rb><rb>語</rb></rbc> <rtc><rt>に</rt><rt>ほん</rt><rt>ご</rt></rtc> <rtc><rt rbspan="3">Japanese</rt></rtc> </ruby> XHTML Ruby HTML5 Ruby

(77)

親文字とルビ文字の数が違うケース

<ruby> 日<rb>本<rb>語 <rt>に<rt>ほん<rt>ご <rtc>Japanese</rtc> </ruby>

Japanese

日本語

にほんご

Japanese

日本語

にほんご

(78)

【HTML5/CSSでできるルビ】

配置指定

(79)

配置指定A: ルビ文字が短い場合

四面楚歌

しめんそか

四面楚歌

し め ん そ か

四面楚歌

し め ん そ か

四面楚歌

しめんそか

ruby { ruby-align: center; }

start (肩付き) space-around

space-between center

(80)
(81)

配置指定A: ルビ文字が短い場合

神の左手悪魔の右手

ギヤラリーフエイク

神の左手悪魔の右手

ギ ヤ ラ リ ー フ エ イ ク

space-around

(82)

配置指定B: ルビ文字が長い場合

金門橋

(83)

配置指定B: ルビ文字が長い場合

私は

金門橋

を見

ゴールデンゲートブリッジ

私は 金

橋 を見

ゴールデンゲートブリッジ

私は金

ゴールデンゲートブリッジ

橋を見

center space-around space-between

(84)

【HTML5/CSSでできないルビ】

行頭・行末調整の指定

(85)

行頭・行末調整

なのは 周囲 の

状況を考えな

がら 行動 する

(86)

行頭・行末調整

なのは 周囲 の

状況 を考えな

がら 行動 する

(87)

【HTML5/CSSでできないルビ】

はみ出しの指定

(88)

はみ出し

大切なのは 志 をた

こころざし

大切なのは志をたかく

こころざし

大切なのは 志 をたか

こころざし

(89)

はみ出し

学生は皆志高く

こころざし

人類鏖計画

(90)

はみ出し

~JLReq~

a. 前又は後ろにくる

漢字等

(cl-19)にルビ

文字を掛けてはならない.

b. 前又は後ろにくる

平仮名

(cl-15),

片仮

(cl-16),

長音記号

(cl-10)又は

書きの仮名

(cl-11)に最大でルビ文字サ

イズの全角までルビ文字を掛けてもよい.

(91)

はみ出し

大切なのは 志 高く

こころざし

人類 鏖 計画

みなごろし

学生は皆 志 高く

こころざし

(92)

はみ出し

景色に暁の趣を感じ

周囲の状況

慮る

おもんぱか

じようきよう

あかつきおもむき

(93)

【HTML5/CSSでできないルビ】

小書き文字変換の指定

(94)

小書き文字の変換

熟語

じゅくご

熟語

じゆくご

• CSSで自動変換を制御する機能はない • OpenTypeの"ruby" + font-feature-settings ?

(95)

まとめ:ルビに関する組版事項の対応

項目 CSS モノルビ <ruby>人<rt>ひと</rt></ruby> ruby-merge: separate 熟語ルビ <ruby>熟<rb>語<rt>じゅく<rt>ご</ruby> ruby-merge: collapse グループルビ <ruby>紫陽花<rt>あじさい</ruby> ルビをどちら側につけるか ruby-position ひらがなに対するルビの非表示 自動 ルビのはみ出し UA依存 ルビの寄せ ruby-align 行頭・行末調整 UA依存 ルビの肩付け ruby-align 親文字の伸長 ruby-align 両面ルビ rtc + ruby-position 小書き文字変換 なし(OpenType featureはあり)

(96)
(97)

まとめ

Writing Modes • 4つの方向を制御する – ブロックの進行方向(writing-mode) • 入れ子にできる – 行の進行方向(writing-mode + direction) • bidiとの関連 – 行の向き(writing-mode + text-orientation) • sideways-leftが特殊 – 文字の向き(text-orientation) • フォントやUTR#50との関連 • 文字は向きだけでなく、変換が発生する HTML5/CSS Ruby • <ruby>と<rt>による基本マークアップ • モノルビ、熟語ルビ、グループルビ • <rp> • ruby-positionと両面ルビ • ruby-align • auto-hiding • 行頭・行末調整 • はみ出し HTMLとCSS • 基本はCSS2.1で、CSS3の各モジュールがそれを拡張する • CSS3にはたくさんのモジュールがあり、個別に標準化が進められている

参照

関連したドキュメント

ところで,このテクストには,「真理を作品のうちへもたらすこと(daslnsaWakPBrinWl

式目おいて「清十即ついぜん」は伝統的な流れの中にあり、その ㈲

こうしゅう、 しんせん、 ふぉーしゃん、 とんがん、 けいしゅう、 ちゅうざん、

てい おん しょう う こう おん た う たい へい よう がん しき き こう. ほ にゅうるい は ちゅうるい りょうせい るい こんちゅうるい

司園田園田園.

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から

神戸市外国語大学 外国語学部 中国学科 北村 美月.

FEED (FRONT END ENGINEERING DESIGN) – TOPSIDE FACILITIES AND NAVAL &amp; STRUCTURE (FLOATING PRODUCTIO SYSTEMS, FIXED. PRODUCTION SYSTEMS