ろばQ覚え書き2005年07月RobaQ's Memo 2005-07

何故 class 属性で解決するのが嫌なのか

この記事のURL
https://robaq.info/200507.xhtml#d20050725_1
初回更新日
2005-07-25T01:40:00+09:00
要約
undercooled07月22日の記事に拘りたい部分があったので、拘って重箱の隅を突いてみました。

undercooled の07月22日の記事に拘りたい部分があったので、拘って重箱の隅を突いてみました。

まず、もの凄い駄ツッコミですが。

ふつう、段落の最初は一マスあけますが、鉤括弧など括弧を含むものはあけずに書きます。

鉤括弧などの括弧を含む文字の場合最初から半角の空白が含まれた状態で有るために、更に空白を空けないが正解で、鉤括弧など括弧を含むものはあけずに書く訳では有りません (つまり、HTML 文書の場合、表示されるフォントの種類によって話が変わってしまう可能性があるのですが、話が無闇にややこしくなるので、本記事では取り敢えず鉤括弧などの括弧のフォントには空白が含まれている事にします)。ちなみに、これは句読点にも言える事です。

で、細かい事は置いておいて、HTML + CSS では段落の開始を1字空けると言う外観を指定しようとした場合、CSS においては、text-indent で対処するのですが、括弧がついているからあけない、ということはできませんと言う問題が生じます。これに対して、加納さんは以下の3つの解決策を考えて検討しているのですが、どうして class 属性を付けるのがなのでしょうか。

  • 全てスペースを開けない
  • 括弧の箇所はクラスをつける(私は嫌です)
  • <p> 私は</p>と直接記述する荒業

で対処できますが、一番スマートなのは最初の方法でしょう。

基本的に SGML や XML の markup は仕様やスキーマに沿ってなされる物であって、記述者の好き嫌いでなされる物ではありません。勿論、加納さんが仰っているのは単純な感情論ではなく、理論的な考察が裏にあった上で表にと言う言葉が出ただけだとは思いますが、何故なのか是非理由をお伺いしたい所です。と言うのも、ろばQは class 属性で対応するのが仕様に最も沿った解決策だ、と認識しているからです (尤も、仕様に沿っては居ますが運用上は非常に面倒くさいのでろばQはそんな方法を採用したいとは思いませんが)。

あと、全てスペースを開けないと言うのは単に諦めているだけで、解決法ではないように思うのですが、如何でしょうか。

因みに同記事では関連する問題としてエクスクラメーションマークやクエスチョンマークなどのあとも一文字分あけるのですが、ウェブの場合、閲覧環境がそれぞれ違うので、人によっては一文字分あいていても、違う人はウィンドウサイズの問題でうまくいかないことがあります。たまに、スペースが次の文の冒頭にきて、段落のように見えることがありますと言う問題も提示されていますが、ろばQは UA の禁則処理に問題があるからと言って HTML 文書側がその問題に併せて markup や内容を変更するべきではないと思いますので、これに関しては、もし意図しない表示になってしまった場合は UA に向かってやーい、馬鹿と毒突いてみるのが良いかと思います (何の解決にもなってませんが)。

何故 class 属性で解決するのが嫌なのか、その2

この記事のURL
https://robaq.info/200507.xhtml#d20050726_1
初回更新日
2005-07-26T00:40:00+09:00
要約
何故 class 属性で解決するのが嫌なのか空白の處理にてお返事を頂きましたので更に返事。

何故 class 属性で解決するのが嫌なのか空白の處理にてお返事を頂きましたので更に返事。

  • 最初から半角の空白が含まれた状態で有るために、更に空白を空けない(正解)
  • 鉤括弧など括弧を含むものはあけずに書く(不正解)

と、ろばQさんは仰います。しかし、一體なぜ私の主張(といふか事實の提示)が不正解なのか分かりません。ろばQさんは括弧の前に空白をあけない理由(過程)を述べてゐるのに對し、私は括弧の前に空白をあけないといふ事實(結果)を述べてゐます。これらふたつは互いに補完する關係であつて、對立するものではありません。

ろばQとしては鍵括弧など括弧を含むものでもあけて書くが、(一般的な書き方やフォントの場合) 既に空いているので更に空けないと申し上げている積もりです。ですから、空けるか、空けないか、と問われれば空けるとなりますので鉤括弧など括弧を含むものはあけずに書く(不正解)となります。

仮に鉤括弧など括弧を含むものはあけずに書くのが正解であるならば、フォントが半角で表示されるなどして空白が含まれない字体の場合にもあけない事になってしまいますので、そう言うケースを想定して括弧の前に空白をあけない不正解であると言う事です。

私は単純な感情論で私は嫌と書いたのですが。文字どほりの解釈が一番私の意圖に近いと思ひます。

諦めても問題そのものは解決しないといふ意味でろばQさんは考へていらつしやる。けれども私は、諦めることで、問題に對する個人的な感情の引つ掛かりは解決するといふ意味で使つてゐます。私は、ほぼ個人的な感情の話しかしてゐないのです。

HTMLとCSSでは不可能なことで完璧主義者は苛つくことHTML と CSS において生じる技術的な問題に関する技術的な解決方法に関する話題だと認識して何故 class 属性で解決するのが嫌なのかを書いたのですが、私は、ほぼ個人的な感情の話しかしてゐないのですと言う事でしたら失礼しました。

ただ、それはそれとして、何故なのか是非理由をお伺いしたいと言うのは、現状でも変わりません。もしだと感じる理由が技術的な問題に起因するのであれば、別な技術で解決が付くかも知れませんし、その解決策を模索する思考の過程や結果を第3者に公開する意味もあると思いますので。

何故 class 属性で解決するのが嫌なのか、その3

この記事のURL
https://robaq.info/200507.xhtml#d20050726_2
初回更新日
2005-07-26T00:40:00+09:00
要約
何故 class 属性で解決するのが嫌なのか闇黒日記平成十七年七月二十五日の記事で言及して頂いたので返事。

何故 class 属性で解決するのが嫌なのか闇黒日記平成十七年七月二十五日の記事で言及して頂いたので返事。

ろばQの理解が足りなかったり、誤読しているかも知れませんが……、句點や鉤括弧に惑はされてはいけないと思ふ。會話文は、 (以下略) との事ですが、ろばQとしては会話文に限らず、HTML において鉤括弧などの括弧を含む文字の様な空白を既に含んだ文字が段落の行頭に表示された場合 (括弧が HTML 文書の内容であるとは限らない) に行頭を1字空ける (字下げする) と言う CSS による表示の指定とどの様に整合性をとるか、と言う CSS による表示の指定の仕方の話題のつもりです。

例えば、段落の行頭を1字空ける意図でp{text-indent:1em;} と言う CSS が適用されている HTML 文書において、同時に強調の表示として em:before{content:"「";} と指定もなされている時、<p><em>……</em>……</p>と言う構造が文書内にあると text-indent による字下げと contentによって表示されるに含まれている空白が2重行頭を空けてしまいます。この様な場合 CSS のセレクタに、一番最初の子が特定の内容であったり、特定の要素である場合の指定法があれば良いのですが、無いので次善の策としてどうしよう……、と、そう言う問題に関する話題のつもり (少なくともろばQは) なのですが如何でしょうか。

本当に必要なのは約物の表示指定プロパティかも知れない

この記事のURL
https://robaq.info/200507.xhtml#d20050727_1
初回更新日
2005-07-27T16:30:00+09:00
要約
段落の最初に鉤括弧などの空白を含んだ字体のフォントがあると、段落の開始時の字下げと重なってしまう問題に関して、真にに必要なのはセレクタではなく約物をどう表示するかと言う CSS のプロパティのような気がしてきました。

段落の最初に鉤括弧などの空白を含んだ字体のフォントがあると、段落の開始時の字下げと重なってしまう問題に関して、真にに必要なのはセレクタではなく約物をどう表示するかと言う CSS のプロパティのような気がしてきました。

一連の記事ではclass 属性で対応するのが仕様に最も沿った解決策とかCSS のセレクタに、一番最初の子が特定の内容であったり、特定の要素である場合の指定法があれば良いのですが、無いので次善の策としてどうしよう……、と、そう言う問題と述べていたのですが、もし (&#x300C;) に空白が含まれるか否かが最終的に (例えば表示されるフォントなどに依存して) 指定できないのであれば、class 属性に値を設定したり、CSS のセレクタでが最初に表示される要素の特定が出来ても、そもそも text-indent などの空白と重複するのかどうか解からないので問題は解決しません。

真に必要なのは約物をどのように表示するかを指定する手段で、例えば CSS で punctuation-characters-space と言うようなプロパティ (長いぞ!) を新設して、p {text-indent: 1em;} p:first-child {punctuation-characters-space: none;} と言うような指定によって約物の空白をなくす事が出来るようになれば良いと言う事になります。

これを現在の CSS 2 で実現しようとする場合、精々 p:first-childfont-familymonospace 以外の font-name なり、generic-family なりを指定して固定幅ではない (空白が入っていない) 字体が表示される事を期待するか、矢張り HTML で class 属性を設定し、p.hoge {text-indent: 0;} p.hoge:first-child {font-family: monospace;} とする程度しか思いつかなかったのですが、どちらも苦肉の策というか、何というか。結局、結局、まあしやうがないかと諦めませう、そこまで拘はることでもないしと言う所から全く前進する事が出来ませんでした。

下手の考え休むに似たり。不貞寝。