─グーテンベルクの遙か彼方へ─このブログはEPUB3をはじめとした電子書籍制作の現場からの「現地レポート」を目指しています。電子書籍制作、アプリケーション開発など、多方面の方々からの積極的なご意見をお待ちしております。※『InDesign→EPUB3用XHTML作成ワークフロー』は通常エントリに移動しました。『ジャンル別まとめ/ダウンロード』からアクセスできます。カテゴリーのアーカイブXojoで実行中のアプリを最前面にする(Mac)2017/10/23Xojoでアプリを作っていて、「実行中のアプリを最前面に移動」っていう割と簡単にやれそうなとこで沼にハマりかけたのでメモとして上げておきます。まあそこはOSレベルの処理なんですよね。探したのですがどうもないらしく、英語の掲示板にそれっぽい記事見つけたので試してみるもNG。Functionとかやったらヤバげなエラーが出る。堀りかけたのですが、考えてみればMacでOSに処理投げるのならAppleScript呼び出しちゃうのが一番手っ取り早いんじゃないの、と思いついて試したらあっさりクリアできました。runこれだけのシンプルなコードをAppleScriptで書いてmeActivate.scptとして保存してXojoのウィンドウにAppleScriptのファイルをドラッグ&ドロップしてエイリアス出してサブルーチンとして実行すればOK。それはそれとしてmacoslib面白そうですね。»PerlでXHTMLのテキスト内容だけを置換する2017/10/20まあ仕事でEPUBを作っていると恒常的にXHTMLに触ることにはなるのですが、検索で文章中の欧文の部分などを引っかけて修正する時にXHTMLのタグ部分も引っかかってしまって、これこのまま間違えてここも修正しちゃったらエラー直行だよなみたいなケースが時々あります。テキスト部分だけを検索置換対象にできれば便利かなと思って作ってみました。XML::LibXMLでXHTMLをパースしてテキストノードだけ選別して置換処理をループで回してるだけです。置換用ファイルは別ファイルにPerlの置換式書いたヤツを読み込む感じで。外部読み込み置換式.plのような感じで実行すれば置換対象のxhtmlを置換して上書きします。(OUT);exit;外部置換用ファイルは以下のような感じ。$_;}1;いやあ長年作りたかったんですよこういうの。こないだやっとパーサーモジュールでDOM飼い慣らせたんで作れましたよ。要件」(JLREQ)と、これに関連してVivliostyleの村上真雄さんたちが提出したW3Cメンバーサブミッション「Web技術を用いた日本語組版の現状」を取り扱っていることに伴い、会員以外の方の意見を広く求めるとともに、記録を残しておく目的で議事録をベースに補足したものを公開するものです。間違い、補足などございましたらご意見いただければ幸いです。当ブログはコメント許可制を取っているため、反映に時間がかかります。要件」(JLREQ)を先頭から読んでいき、各要素に対応するCSSが存在するのか、存在するとして実用段階なのか、InDesignなどの組版ソフトではどういった形で機能を実現しているのか(いないのか)、などについて見ています。全体に対しての包括的な説明の部分に関しては、細かな部分は次回以降にその部分の説明が出てきた時に掘り下げる、としてスルーしている箇所があります。こちらで取り上げております各CSSプロパティはまだドラフト仕様の段階のものも多いため、今現在すぐに使えるものばかりではありません。Webブラウザで使用出来るかどうかはこちらなどでご確認ください。電子書籍のRSで使用出来るかどうかは、現在広範に調査した資料がありません。当研究会の活動として調査を行いたく考えていますが、しばらく時間はかかるかと思います。ルビの使用ルビの組版処理の方法として、モノルビ、グループルビ、熟語ルビの3種類がある。ルビの意味合いとしては、ひらがなのルビで漢字の読みを示すもの、カタカナのルビで意味を示す別な言葉を付けるもの、(「避難所」に「アジール」のルビなど)、親文字である欧文の単語の読み方又は意味を示す言葉をルビとして付けるもの、親文字であるひらがな等にルビとして漢字等を付ける(振り漢字)ものなどがある。熟語にルビを付ける際にまとめて訓読みのルビを付けるケースがある(「紫陽花」に「あじさい」など)。いったケースを熟字訓と呼ぶ。出てくる漢字等のすべてにルビを付ける総ルビと、読み方がむずかしい一部の漢字等のみにルビを付けるパラルビがある。ルビの文字サイズ「ルビの文字サイズは、原則として親文字の文字サイズの1/2とする」(児童書などでは3文字つける例もある)。※ルビでの小書きの仮名(拗促音を本文同様に小書きで書くこと。Kanaというプロパティがあったが、なくなってしまった模様(2011年のドラフトにはあった)。親文字のどちら側にルビを付けるか両側ルビは社会科の教科書など教育系コンテンツで見られる。propertyでルビ位置を規定している。プロパティとしてover、underがある。デフォルトはover。inter-characterというプロパティもあるが、これは中国語のピンインに使うためのもの。ruby-position指定はブラウザベースでもまだ使えないケースが多い模様。使えてもベンダープリフィックスを付けることが必要だったり、古いドラフトの用語で指定する必要があったりする。縦組みで親文字1文字に付く平仮名のルビ文字が1字の場合の配置位置として、親文字の天地中央とルビ文字の天地中央をそろえて配置する中付きと、親文字の上端とルビ文字の上端をそろえて配置する肩付きがある。横組みでは肩付きでの配置は行われない。propertystart:肩付きの指定。CSSとしては肩付きは縦書き専用という規約はない。center:中付きの指定。space-around:ルビ文字間にスペースを空けて中央配置。これはいわゆるJISの1-2-1ルール。space-between:space-aroundに近いが、ルビ文字列の方が長いときの親文字の配置位置に違いがある。1」の指定で明示的に呼び出すことができる。参考として、InDesignは組版アプリなのでより詳細なルビのプロパティの指定が可能。両側にルビは付けられない。Wordも中付き、肩付きの指定はできる模様。注に「親文字の文字列の長さに比べ,ルビ文字の文字列の長さが極端に短い場合」の規約がある。これは機械処理でどうにかできるのか疑問。モノルビの親文字に対する配置位置で述べた方法で配置する」「熟語を構成するそれぞれの漢字等の中で,1字でもそれに対応するルビ文字が3字以上のものがある場合,熟語全体とルビ文字の文字列を対応させて配置する」その上で「熟語ルビは,それぞれの漢字等とそれに対応するルビ文字を単位として2行に分割してもよい」という話になる。分割した場合はそれぞれがモノルビとして処理される。複雑な処理であり、InDesignもまだ熟語ルビには対応していない。図はちょっと行頭行末に親文字が付いていなくて気になる。propertyこれはまだブラウザでの実装はない。separate:熟語ルビのマークアップでもモノルビのように扱う。collapse:熟語ルビのマークアップでもグループルビのように扱う。auto:いわゆる熟語ルビの挙動になるように表示をユーザーエージェントにまかせる。小書きの仮名には最大でルビ文字サイズの全角までルビ文字を掛ける形で組版処理を行う。例外として、前後の文字にかかるルビ文字が繋がってしまう場合は、誤読を避ける意味で親文字の字間を空けて繋がらないようにする。4051では片仮名は漢字と同じ文字クラスに含まれているため、片仮名についてはルビ文字をかけないようにする。Rubyに記述がある。Alignmentに行頭行末処理の記述もあるが、どちらもJLREQを参照している。Marksで圏点の規定がされている。dot/circle/double-circle/triangle/sesameのそれぞれに対してfilled(塗りつぶす)、open(塗りつぶさない)の指定ができる。任意の記号の指定もできる。InDesignでもこれと同じ種類の圏点を指定して付加することができる。中国語では下に圏点を付けるのが標準であるため、ちょっとGitHubで議論になっている。propertyで圏点を付ける位置を指定できる。Bに各言語ごとの付ける位置の参照情報、デフォルトスタイルシートがある。圏点、ルビともに日本語組版ではそれによって行間が変動したりはしない。Spacingに規定がある。行間が十分に広ければ問題にならないが、行間が狭すぎた場合はその限りではなく、自動で行間を広げて処理する形になる。余談だが同じline-height絡みの話では、現状Webには文字の一部のサイズを大きくした際に行間が広がってしまう挙動の問題があり、今後の課題となっている。割注処理ここはまあCSS的に当面期待もできないので省略。