エンジニアのひよこ_level10

【毎日更新!】新卒4年目エンジニアブログです!

【HTML】英語等をスペースなしで書くと枠からはみ出る理由を考える【927日目】

半角文字を長く書く

あああああああああああああああああああああああああ
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

こんなふうに、文字を打ち込んでデザインを確認したことがあると思います。
その時に、後者だと上手く動かないパターンがあります。このように。

f:id:willow710kut:20200427185550p:plain

日本語は改行しているのに、英語は改行しない。なぜでしょうか。
正確な答えではないですが、考察してみましょう。

英語と日本語の特性を考える

『あ』
これは皆さんなんと発音するでしょう。
発音できますね。

『y』
これは皆さんなんと発音するでしょう。
あ、『わい』ではありませんよ。
英単語の文字の一部と捉えて、どう発音しますか?

『yellow』『sky』『beauty』

全て発音違いますね。

このように、英語は『一文字では完結しない』ものです。
日本語は意味はさておき、文字としては完結します。

supercalifragilisticexpialidocious

supercalifragilisticexpialidocious という曲、もとい単語があります。

これは

super
cali
frag
ilisti
cexp
ialid
ocious

でしょうか。違いますね。

英単語において、改行やスペースは非常に重要な意味を持ちます。
改行がなければ、それで『1単語』として捉えます。

英単語から考える、日本語を途中で改行するということ

apple は、これで初めて発音が出来ます。 ap ple と見ると発音が出来ません。

日本語は、『あ』で発音が出来ます。
この『あ』という文字を真ん中でぶった切られたら?読めないですね。

英単語を途中で改行するというのは、こういう気持ちなのかもしれません。

これから考察するブラウザの挙動

ああああああsupercalifragilisticexpialidocious

このとき、英単語の途中で文字を改行したいとき、あなたならどうしますか?

ああああああsuper
califragilisticexpialidocious

ああああああすーぱー・・・なんだこれ?
こうならないために、こうします。

ああああああ
supercalifragilisticexpialidocious

まだはみ出るとき・・・ここで改行すると意味がない。なので、諦めてはみ出す。
ブラウザはこんなことを考えてるのかもしれません。

おまけ: 日本語だって区切りがあるよ!

さて、日本語は単語区切りというものがないです。
なので、『焼肉定食』という文字が途中で枠に収まらなくてもぶった切って改行します。

f:id:willow710kut:20200427192337p:plain

これを単語で区切りたい。

f:id:willow710kut:20200427192415p:plain

このように。

でも、スペースという区切り方が日本語にはないので、どうするか。
タグでくくってあげましょう。

<div class="box2">ああああああああああああああああ<span class="aaa">焼肉定食</span></div>

これで、焼肉定食という単語の区切りがあることが明示出来ました。
そして、改行に対応するには以下の内容を加えます。

.aaa {
  display: inline-block;
}

単語区切りにしたいものを、インラインブロック要素にしましょう。
これで、日本語にも単語の区切りが生まれました。

こんなふうに、
HTMLの気持ちになると、いろんな要件に対して、どのように対応するかが思いつきやすいかもしれないですφ(・