月別アーカイブ: 2018年11月

PDF Viewer SDK V4.0 のご紹介:システム製品販売開始!

『Antenna House PDF Viewer SDK』はこれまでOEM販売のみ行っておりましたが、2018年10月よりV4としてシステム製品販売を開始しております。

自社のシステムやサービスでご利用になる場合などソフトウェア再頒布の必要がなければ、契約手続き不要でお気軽にご購入していただき早期の導入が可能になりました。
また、評価版やデベロッパライセンスもご用意しておりますので、事前の製品評価や、デベロッパライセンスをご購入いただいてまずは開発を進めるといったこともできます。

評価版のお申込みページよりダウンロードしてお気軽にお試しいただけます。これまで製品を試してみたいけれど、OEM専用販売製品ということで躊躇されていたお客様も、ぜひ一度『Antenna House PDF Viewer SDK』をお試しください。

『Antenna House PDF Viewer SDK』は、独自のPDFリーダーの開発に利用できる Windows 向けの SDK です。PDFの表示に加えて、プログラムからの自動印刷や、テキスト抽出や画像ファイルへの変換にも利用できます。
また、注釈やページ移動など PDF 編集ができる GUI コントロールを提供しております。コントロールを組み込むことで簡単にPDFの表示・編集機能をお客様のアプリケーションに追加できます。開発にアクロバットやアドビリーダーは必要ありません!

詳しい機能についてぜひ製品ページをご覧ください。
製品ページ:
https://www.antenna.co.jp/pdfviewersdk/

評価版をご用意しております。ぜひこの機会にお試しください!
評価版のお申し込み:
https://www.antenna.co.jp/pdfviewersdk/trial.html


Web Interface for OSDC 改訂版(V1.0 MR1) リリースのお知らせ ~ OSDC V7.0 リリース カウントダウン -1?? ~

慌ただしい1日が過ぎましたが、実は「OSDC v7.0」のリリースと同時進行で、もう一つの製品の改訂版の準備も進めていました。
OSDCの運用を支援するために開発された、「Web Interface for OSDC V1.0 MR1」のリリースです。
本日は、こちらについて紹介をさせていただきます。

Web Interface for OSDC

「Web Interface for OSDC」は、サーバ上のファイル変換ソフトをインターネット経由で遠方のクライアントから簡単に使用できる便利なソフトウェアです。サーバ側とクライアント側のパソコンに必要なソフトをインストールするだけで、新規にプログラムを開発することもなく、すぐに運用を開始できます。
変換には、『Office Server Document Converter V6.1』以降で使用できます。

インターネット経由でサーバ上のファイル変換ソフトにリクエストを送信し、結果をクライアントで受け取る方式です。クラウドを利用した大規模な Web サービスシステムも簡単に構築できます。

サーバ側とクライアント側のパソコンに必要なソフトをインストールするだけで、すぐに運用を開始できます。クライアントからのリクエストは『Office Server Document Converter』のコマンドラインインターフェイスと同じパラメータを用いたバイナリを提供します。コマンドのサンプルも多種ご用意しています。

『Web Interface for OSDC』は、サーバプログラムとクライアントプログラム、フォルダ監視サービスから構成されます。各プログラムは Java で設計されており異なるプラットフォームの相互間でインターネットを超えて連携することができます。

【基本機能】

  • プログラムレスでサーバ運用が可能
  • 簡単なコマンドでリクエスト送信
  • Windows、Linux の相互間で通信
  • フォルダ監視サービスで更に簡単利用

フォルダ監視サービスは、特定のフォルダにコピーされた文書を自動的に検出し、『Web Interface for OSDC』を利用して変換結果を指定されたフォルダへ出力するクライアント側のサービスです。

Web Interface for OSDC

詳しくは、Web Interface for OSDC をご覧ください。

また、今回の改訂情報は、こちらから ご確認いただけます。

評価版もご用意しております。
評価版は https://www.antenna.co.jp/sbc/wio/trial.htmlから、お申し込みください。


Office Server Document Converter v7.0 本日公開! ~ OSDC V7.0 リリース カウントダウン 0 ! ~

「Office Server Document Converter v7.0」を無事に本日リリース致しました。
昨日のブログでは、火だるま炎上を予想していましたが、むしろ「真っ白に燃え尽きた」感じです。
「立つんだ○○!」(世代がわかります・・・・)

では、あらためて製品を紹介させていただきます。

【強化される主な機能】

  • SmartArtに対応。
  • OOXMLの数式(Word数式エディタ)に対応。
  • リニアライズドPDFの出力。
  • 大容量のEXCELファイルの1ページ目のサムネイル処理を高速化。
  • Word文書をPDF化する際にアウトライン階層をしおりに反映。しおりを畳むレベルも指定可能。
  • 異体字セレクタ(IVS)に対応。
  • Word文書の段組の段数や段幅の設定を再現。ページ途中の段数切り換えにも対応。

【新しい商品構成】

  • Windows向け32bit版の終了
  • Select版(Word/Excel/PowerPoint)の終了

追加機能と新しい商品構成の詳細は、OSDC v7.0最新情報をご覧ください。
また、新バージョンのリリースに伴い、現行製品(OSDC v6.1/SBC v6.0)の販売を終了させていただきます。保守期間内のお客様に対する改訂版提供期間は、販売終了後5年間となります。
昨日は比較的見栄えの良い機能を紹介しましたが、本日は地味目なものからピックアップします。

○リニアライズドPDFの出力。

いわゆる、Web表示用に最適化されたPDFの出力機能です。
ここに出力結果の画像を貼付けても「だから何?」となりますので割愛します。

PDF出力の際に、以下のパラメータを追加して下さい。

-lpdf

地味です・・・。

○異体字セレクタ(IVS)に対応。

異体字には以前から対応していたのでは?と思われた方、使い込んでいらっしゃいますね。
ありがとうございます。
さいとう さんの 齊 齋 斎 斉 などですね。
これはそれぞれの文字に単独のコードが割り振られている異体字でして、今回対応したのは「異体字セレクタ」です。
異体字セレクタの説明だけでブログ数回分となりますので、詳細についてはこちらを参照してください。

一般的な文書ではあまり有難みは分からないかも知れませんが、人名・地名に関する書類では必須となります。
例えば、こんな感じでしょうか。

不動産や行政関係の業界の方々への朗報です。

○Word文書をPDF化する際にアウトライン階層をしおりに反映。

PDFのしおり、便利ですね。
せっかくWord文書でアウトライン化して目次まで作ったのに、PDFにしたらしおりがベタではつまらない。
そんな声にお応えして作りました。
しかも、しおりを畳むレベルも指定可能です。

・Word アウトラインレベル出力の設定に関するパラメータに追加
-docpdfbookmarklevel 値
0 : 階層を生成しません。
1-9 : 階層を生成して値の階層で畳みます。

値を色々変えて試してみて下さい。きっと楽しいですよ。

さて、今週初めのブログのタイトルは、「Office Server Document Converter のバージョンアップは何をもたらすのか?」でしたが、その回答をさせていただきます。

ユーザーの皆様には、OSDCの変換対象範囲の拡大と変換精度の向上、そしてより一層の利便性を。
製品担当者には、ストレスと緊張感と、その後に訪れるささやかな達成感、です。

お粗末さまでした。
OSDCに関する詳しい情報は、製品ページ https://www.antenna.co.jp/sbc/ を、ぜひ、ご覧ください。

評価版もご用意しております。
評価版は、https://www.antenna.co.jp/sbc/trial.html から、お申し込みください。


Office Server Document Converter バージョンアップ先行ネタバレ新機能紹介 ~ OSDC V7.0 リリース カウントダウン1日前 ~

昨日のブログ では、V7.0の機能の詳細はリリース当日(11月21日)にご紹介とお知らせしましたが、明日は担当が火達磨となっている気がしますので、掟破りのフライング上等、先行ネタバレ大会とさせていただきます。

OSDC v7.0 の機能強化は、ユーザーの皆さんの要望を実現することを優先しました。
新機能を目的毎に大雑把に分類すると以下の通りでしょうか。

  1. 一般的なPDFドライバ並みの機能を付与する。
    ・リニアライズドPDFの出力。
    ・Word文書をPDF化する際にアウトライン階層をしおりに反映。しおりを畳むレベルも指定可能。
  2. レイアウトや図形の再現性を高める。
    ・SmartArtに対応。
    ・Word文書の段組の段数や段幅の設定を再現。ページ途中の段数切り換えにも対応
  3. 技術文書や公的文書など専門的な用途に使用できるようにする。
    ・OOXMLの数式(Word数式エディタ)に対応。
    ・異体字セレクタ(IVS)に対応。
  4. その他
    ・大容量のEXCELファイルの1ページ目のサムネイル処理を高速化。

今回は、地味?な印象の 1 を除いて、2 と 3 の中からご紹介します。

SmartArtに対応

Officeのバージョンアップと共に機能が増え、利用されている方も多い便利な機能です。
しかし、ダイレクト変換で再現させるにはいろいろと難題が多く、長年先送りにされてきました。
先送りにする度に新機能も増える切りの無い「いたちごっこ」の末に、ようやく日の目をみました。
一部未対応があったとしても課題を解決しつつ先に進もう!という「英断?」によるものです。

  1. オプション等の設定は必要ありません。
  2. v7.0のSmartArtの変換内容の実装範囲
    ・各スマートアートのデフォルトの図形の形を出力する
    ・図形内のテキストを出力する
    ・カラーテーブル(一部実装)
  3. v7.0では未対応のもの
    ・テキストの属性の変更
    ・個々の図形の変更
    ・スマートアートの構成要素には含まれない、追加された図形やテキスト

変換結果をご覧ください。
※精度が荒く見えるのはweb用に解像度を落としているためで、実物の美しさ(個人の感想です)は評価版等でご確認ください。

OSDC v7.0

 

 OOXMLの数式(Word数式エディタ)に対応。

wordには昔からMathTypeなどの数式エディタが付いておりが、Word 2007より独自開発の新しい数式エディタを内蔵しています。
昨今、Wordを一般的な文書作成だけではなく、技術的な論文・レポートの作成に利用される方が増えているのは、これらの機能の利便性が高まったためでしょう。
数式を別途エディタで作成し、画像化して貼り付けるなどの手間は昔の話・・・・と思いきや、OSDC(SBC)では「Word2007の数式ツールで作られた数式は変換しません、消去されます。」だったのです。
せっかくお手軽に数式が作れるのに何てこった! とのご要望をいただきまして、今回機能強化いたしました。

  1. オプション等の設定は必要ありません。

変換結果をご覧ください。各部品のサイズのバランスが異なりますが、数式の意味するところに影響はありません。
※精度が荒く見えるのはweb用に解像度を落としているためで、実物の美しさ(個人の感想です)は評価版等でご確認ください。

OSDC v7.0

Office2007の数式エディタについては こちら を、数式とMathML全般については こちら を参照ください。

Office Server Document Converter については、こちら をご覧ください。
なお、新機能の紹介ページなどは、新装開店の明日までお待ちください。

行列必至! 請う、ご期待!


Office Server Document Converter のバージョンアップは何をもたらすのか?~ OSDC v7.0 リリース カウントダウン 2日前 ~

少々お時間がたってしまいましたが、さる10月29日(月)にアンテナハウスのシステム製品のセミナー『アンテナハウス PDF活用レシピ ~PDFの美味しいクッキング教室~ 』を開催しました。

今回のセミナーのメインディッシュは「PDF Tool API 」でしたが、OSDCも「サイドメニュー」ではありますが、「サーバーサイドのOffice文書変換にMS-Officeは必要なし」と題して製品紹介をしました。
参加された皆さんの目的が「PDF Tool API」ということもあり、OSDCの認知度があまり高くはなっかたのがちょっぴり残念でしたが、そこを逆手にとり、まずは製品を知って特色を覚えて帰っていただき、社内で広めていただくことを目標にしました。

結果として、アンケートでは概ね好評をいただき一安心(皆さん、お優しい・・・)。
参加いただいた皆様、ありがとうございました。お越しいただけなかった皆様、いつかお会いできることを楽しみにしております。

さて、プレゼンの内容は、OSDCの基本的な特色と利用例、そして「もうすぐ」リリースされる新バージョン(OSDC v7.0)の先行紹介でした・・・。

OSDC1029

・・・あの頃は、まだまだ余裕と思っていたのだが・・・・。

製品リリースは11月21日。明後日です。
目を覚ませ、現実を直視しろ!カウントダウンは始まっている。

頭の中はOSDC v7.0 のバージョンアップのことで一杯。のんびりとブログのネタを考えている余裕はありません。ということで、今週のブログのお題は、「OSDC v7.0 バージョンアップ特集」とさせていただきます。

【OSDC v7.0で強化される主な機能】

  • SmartArtに対応。
  • OOXMLの数式(Word数式エディタ)に対応。
  • リニアライズドPDFの出力。
  • 大容量のEXCELファイルの1ページ目のサムネイル処理を高速化。
  • Word文書をPDF化する際にアウトライン階層をしおりに反映。しおりを畳むレベルも指定可能。
  • 異体字セレクタ(IVS)に対応。
  • Word文書の段組の段数や段幅の設定を再現。ページ途中の段数切り換えにも対応。

【商品構成の変更】

  • Windows向け32bit版の終了。
  • Select版(Word/Excel/PowerPoint)の終了。

新バージョンの機能詳細については、リリース日に改めてブログにて紹介をさせていただきます。

請う、ご期待!

Office Server Document Converter については、こちら をご覧ください。


『瞬簡PDF 変換 10 改訂版』のお知らせ

朝晩の冷え込みが戻ってきました。
先週は気持ち悪いくらい気温が高くて、北海道では初雪もまだ観測されていないと聞きました。
今年は異例ずくめの天候ばかりですが、これでようやく?通常の季節感になりホッとしています。

さて、弊社のPDF変換ユーティリティ『瞬簡PDF 変換 10』は現在、改訂版を製品のWebサイトで公開しております。

『瞬簡PDF 変換 10』(Ver.10.0.2)

今回の改訂版は、先週トレンドマイクロ社の「ウイルスバスター クラウド」で『瞬簡PDF 変換 10』がランサムウェアと誤認識される現象が報告されたことに対応し、急遽準備したものです。

ランサムウェアと誤認識される

ウィルスチェックプログラムでアプリケーションの動作がウィルスと誤認識されたり、インストール時にファイルが誤検知されて削除されるといった現象はこれまでもいくつか弊社サポートに報告がされています。
その都度、ウィルスチェックプログラムを一時的に止めてもらうなどでお客様に対応をお願いしてきましたが、今回はアプリケーション側でも回避可能なことが判明したため、改訂版として公開しました。

「ウイルスバスター クラウド」に関しては、弊社「Antenna House PDF Driver」が出力したPDFファイルのウイルスチェックに時間がかかり、当該PDFファイルの処理に時間がかかる現象も報告されております。

緊急のお知らせ

こちらは「ウイルスバスター クラウド」の機能不具合に起因するものと判明し、現在トレンドマイクロ社からの修正版公開を待っている状況です。該当するお客様にはご迷惑をおかけして恐縮に存じますが、今しばらくお待ちいただけますようお願いいたします。

インターネットを通じて悪意あるウィルスが蔓延する昨今の事情を見ますと、ウィルスチェックプログラムは常備せざるを得ない生命保険のようなものですが、ソフトウェアである以上100%完全ということはなく、期待されるべきアプリケーションの使い勝手を阻害してしまう場合もあるのは悩ましいところです。
ソフトウェアの利用にはメリットもデメリットもあることを理解して、うまく折り合いをつけていくしかないのでしょうね。


「瞬簡PDF 変換 10」は体験版をご用意しております。
これにより、変換精度や使い勝手を事前にご確認いただくことができます。

体験版では以下のような制限がありますので、あらかじめご了承ください。

  • インストールしてから 15日を過ぎると利用できなくなります。
  • ひとつのPDFについて、3ページまで変換可能です。
  • 評価以外の目的で日常業務に利用することはできません。

体験版に関する詳細は、『瞬簡PDF 変換 10 体験版のお申し込み』をご参照ください。


『Antenna House PDF to Office 変換ライブラリ』 改訂版のお知らせ

本日は、コンバータ製品グループからの投稿です。

Antenna House PDF to Office 変換ライブラリ』は、弊社パッケージ製品『瞬簡PDF 変換 シリーズ』の高精度変換エンジン(PDF→Word/PDF→Excel/PDF→PowerPoint)を各種アプリケーションから利用するための組み込み専用ライブラリです。
今回、新たに改訂版(1.4.0)を公開しました。

改訂の主な目玉は、OCR機能(オプション)に使用するOCRエンジンの刷新です。
まったく新しいOCRエンジンの採用により、日本語・英語を含む約40の言語で使用される文字を認識できるようになりました。
OCR処理の対象データに使用されている言語種別を指定することで、日中韓はもちろん、ラテン系文字、ギリシャ文字、キリル文字をそれぞれ識別します。
文字を正しく識別することで、表組みや段組みなどの書式もより高精度に変換できるようになります。

対応する言語やライブラリの詳細は ライブラリの概要 から確認することができます。

本ライブラリの活用をご検討いただければ幸いです。


『Antenna House PDF to Office 変換ライブラリ』は、ソフトウェアの開発会社等が開発するPDFソリューション、ISV(独立系ソフトウェア・ベンダ)が開発するPDFアプリケーションに組み込んで再配布するためのOEMライセンスのみ販売しております。

価格は、組み込み条件等により異なります。
詳しくは、oem@antenna.co.jp までお問い合わせください。


PDF Tool API (C#の場合)

いろんな機能がいろいろ紹介されてるPDF Tool APIですが

参考
たったこれだけで 9行目で指定した入力PDFをロードして10行目で指定した出力PDFとして保存できます。

あとはロードと保存の間でPDFの処理をするだけ。

PDF CookBook 第1巻
PDF CookBook 第2巻
PDF CookBook 第3巻
各処理の詳細な説明も取りそろっております。


アンテナハウス製品におけるJava 11以降の動作確認と動作保証

2019年1月でJava 8のサポートが切れます。
そして、2018年9月下旬、Java 11が予定通り出荷され、お客様からの問い合わせが入っていますので、アンテナハウス製品におけるJava 11以降の動作確認、動作保証について、現段階での方針をお知らせします。

Oracleが、これまで無償で配布してきたJDKのサポートを有償化するという話が出て、いろいろと混乱した話が飛び交いましたが、OpenJDKを使えば、無償で使えます。
OpenJDKは、OracleからJDKのソースコードの提供を受けて、いろんな企業や団体がビルドして無償で配布しているもので、企業や団体によって、有償サポートがあったりなかったり、サポート料やサポート期間もマチマチです。
この辺は、Linuxに各種のディストリビューションがあるのと似ています。
詳しい話は、参考に挙げた記事やサイトをお読みください。

アンテナハウスは、OpenJDKの中でも、LTS(Long Term Support)バージョンのOpenJDKを、無償で、最低4年間は、セキュリティやバグフィックスのアップデートを提供するといっているAdoptOpenJDKによって、動作確認と動作保証を始めています。
AdoptOpenJDKのJava 11は、最低、2022年9月までアップデートが提供される予定です。

AdoptOpenJDK

AdoptOpenJDK Support

First Availability End of Availability [1]
Java 8 (LTS) March 2014 At Least Sep 2023 [2]
Java 9 Sept 2017 March 2018
Java 10 March 2018 Sept 2018
Java 11 (LTS) Sept 2018 At Least Sept 2022 [2]

AdoptOpenJDKでダウンロードできるバイナリのうち、アンテナハウスが動作確認、動作保証の対象とするJava 11は、「OpenJDK 11 Hotspot」です。
Hotspotは、元々Sun(Javaの本家)が作ったJVM(Java仮想マシン)です。Oracleがメンテナンスや機能拡張をしています。これがリファレンスと考えてよいので、このJVMのみ動作保証対象にする予定です。
理由は、JVMは多くの実装があるので、やり出したら、きりがないからです。
たとえば、上記サイトには、Java 11でも、
「OpenJDK 11 with Eclipse OpenJ9」
がありますが、OpenJ9は、IBMが開発したJVMです。これは動作保証の対象にはしない予定です。
アンテナハウス自身が、動作確認、動作保証をするJVMを限定することについては、何卒、ご了承ください。

現在、アンテナハウス製品で使われているJavaのコードは、Java 8のコンパイラでビルドして出荷していますが、動作確認を始めた製品では、いずれも、問題なくJava 11で動いています。
アンテナハウスの製品のうち、Javaを使っている製品については、いずれ、各製品のウェブページで、動作確認が取れたことをお知らせしていく予定です。
なお、Java 8のコンパイラからJava 11のコンパイラに切り替える時期は未定です。
Java 11のコンパイラでビルドすると、Java 11の実行環境が必要になり、Java 8では動かなくなることが予想されます。
2019年1月でJava 8のサポートが切れるといっても、すぐ、Java 11に乗り換えられるお客様は、そんなに多くないだろうと考えていますので、2019年早々のコンパイラの切り替えは考えていません。
Javaを使っているアンテナハウス製品のリリース時期によりますが、今後、1年から数年をかけて、コンパイラを切り替えていくことになるでしょう。

参考:
【GlassFish勉強会レポート】各JDKベンダの動向を知ってJava 11に備えよう
2018年10月5日
杉山貴章

Javaは今も無償です

Oracle Java SE サポート・ロードマップ
(2018年 9月25日更新)

Time to look beyond Oracle’s JDK
Monday, 3 September 2018


Breaking Paragraphs into Lines

Breaking Paragraphs into Lines は、Donald E. Knuth と Michael F. Plass の行分割に関する論文で、40年近く前のものです。ここで示されているアルゴリズムは、パラグラフ全体を Box/Glue/Penalty という要素(Paragraph Item)でモデル化して、行分割位置を決定するものです。処理の流れは次のようになります。

  1. アプリケーションが、文書から Paragraph Items を構築する。
  2. 分割可能位置に対して、そこで行分割したときの不具合度を示すデメリット値と呼ばれる値を計算する。
  3. もっともデメリット値の合計の少ない位置を選択し、行分割位置とする。

Paragraph Item の要素 Box/Glue/Penalty は、それぞれが幅を持っています。

  • Box は常に幅が確保される。伸縮性はない。
  • Glue も幅が確保されるが、そこで分割が起こったとき幅がなくなる。Glue には伸縮性がある。
  • Penalty はその逆で、通常は幅が確保されないが、そこで分割が起こったとき前の行末にその幅が確保される。Penalty に伸縮性はない。また、行分割の起こり易さを調整するペナルティ値という値を持っており、分割不可では ∞ を、分割必須では −∞ を与えることになっている。 ハイフネーションは Penalty を利用して実現されている(通常の Penalty と区別するために Flagged Penalty と呼ばれる)。

次のような文書(論文に出てくるグリム童話)を例に、このアルゴリズムがどのように行分割位置を決定するのかをざっと見てみましょう。

fig-12

これから次のような Paragraph Items が構築されます。
x は要素、t は要素の種別、w は要素の幅、y は伸ばせる幅、z は縮められる幅、p はペナルティ値を示しています。

x0 empty box for indentation t0 = box w0 = 20
x1 box for ‘In’ t1 = box w1 = 17.44
x2 glue for space U+0020 t2 = glue w2 = 4.54 y2 = 5 z2 = 2
x3 box for ‘old’ t3 = box w3 = 25.68
x4 penalty for hyphenation t4 = flagged-penalty w4 = 7.12 p4 = 100
x5 box for ‘en’ t5 = box w5 = 19.44
x6 glue for space U+0020 t6 = glue w6 = 4.54 y6 = 5 z6 = 2
x7 box for ‘times’ t7 = box w7 = 43.7
x8 glue for space U+0020 t8 = glue w8 = 4.54 y8 = 5 z8 = 2
x9 box for ‘when’ t9 = box w9 = 43.88
......
x24 glue for space U+0020 t24 = glue w24 = 4.54 y24 = 5 z24 = 2
x25 box for ‘lived’ t25 = box w25 = 38.54
x26 glue for space U+0020 t26 = glue w26 = 4.54 y26 = 5 z26 = 2
x27 box for ‘a’ t27 = box w27 = 8.78
x28 glue for space U+0020 t28 = glue w28 = 4.54 y28 = 5 z28 = 2
x29 box for ‘king’ t29 = box w29 = 35.5
x30 glue for space U+0020 t30 = glue w30 = 4.54 y30 = 5 z30 = 2
x31 box for ‘whose’ t31 = box w31 = 50.64
......
x51 box for ‘young’ t51 = box w51 = 49.76
x52 penalty for hyphenation t52 = flagged-penalty w52 = 7.12 p52 = 100
x53 box for ‘est’ t53 = box w53 = 21.84
x54 glue for space U+0020 t54 = glue w54 = 4.54 y54 = 5 z54 = 2
x55 box for ‘was’ t55 = box w55 = 29.82
x56 glue for space U+0020 t56 = glue w56 = 4.54 y56 = 5 z56 = 2
x57 box for ‘so’ t57 = box w57 = 17.7
x58 glue for space U+0020 t58 = glue w58 = 4.54 y58 = 5 z58 = 2
x59 box for ‘beau’ t59 = box w59 = 38.36
x60 penalty for hyphenation t60 = flagged-penalty w60 = 7.12 p60 = 100
x61 box for ‘ti’ t61 = box w61 = 11.56
x62 penalty for hyphenation t62 = flagged-penalty w62 = 7.12 p62 = 100
x63 box for ‘ful’ t63 = box w63 = 21.82
......
x143 box for ‘old’ t143 = box w143 = 25.68
x144 glue for space U+0020 t144 = glue w144 = 4.54 y144 = 5 z144 = 2
x145 box for ‘lime-‘ t145 = box w145 = 42.34
x146 penalty for inter-word t146 = flagged-penalty w146 = 0 p146 = 100
x147 box for ‘tree’ t147 = box w147 = 30.46
x148 glue for space U+0020 t148 = glue w148 = 4.54 y148 = 5 z148 = 2
x149 box for ‘in’ t149 = box w149 = 16.3
......
x267 box for ‘her’ t267 = box w267 = 26.52
x268 glue for space U+0020 t268 = glue w268 = 4.54 y268 = 5 z268 = 2
x269 box for ‘fa’ t269 = box w269 = 14.7
x270 penalty for hyphenation t270 = flagged-penalty w270 = 7.12 p270 = 100
x271 box for ‘vor’ t271 = box w271 = 26.48
x272 penalty for hyphenation t272 = flagged-penalty w272 = 7.12 p272 = 100
x273 box for ‘ite’ t273 = box w273 = 19.6
x274 glue for space U+0020 t274 = glue w274 = 4.54 y274 = 5 z274 = 2
x275 box for ‘play’ t275 = box w275 = 33.42
x276 penalty for hyphenation t276 = flagged-penalty w276 = 7.12 p276 = 100
x277 box for ‘thing.’ t277 = box w277 = 47.02
x278 finishing glue t278 = glue w278 = 0 y278 = ∞ z278 = 0
x279 forced break t279 = flagged-penalty w279 = 0 p279 = −∞

次の位置が分割可能位置となります。上の例では、x2、x4 などです。

  1. xb が Penalty であり pb < ∞ である xb
  2. xb が Glue であり xb-1 が Box である xb

デメリット値は、そこで行分割するとどの程度よろしくないのかを示す値であり、この値が小さいほどよい分割位置と判断されます。 あまりに大きなデメリット値のときは分割位置の候補から除外されます。 デメリット値の算出方法の詳細はここでは触れませんが、外部から与えるいくつかのパラメタによって、デメリット値を調整できるようになっています。

上の例では、x2 や x4 のデメリット値は非常に大きく、候補から除外されます。最初(1行目)の分割位置候補となるのは x26 と x28 で、デメリット値を d とすると、d26 = 975.065、d28 = 23.5004 となっています。
x26 で行分割したとき、次の行(2行目)の分割位置候補は、x52 と x54 で、d52 = 29412.2、d54 = 1288.3 です。
x28 で行分割したときは、x56 と x58 が次の候補となり、d56 = 24.6185、d58 = 6446.52 です。
パラグラフ全体にこれを繰り返すと、次のようなネットワークができ上がります(パスのいくつかは省略されています)。数値は、下に示された語の後で分割したときのデメリット値を示しています。この例では、太い枠の語で分割するのが最良となっています。

fig-12-network

 

現在の AH Formatter はこのアルゴリズムを利用していません。そこで、このアルゴリズムを利用すると、どのように行分割位置が変化するのかを見てみます。

AH Formatter の結果 — ハイフネーションなし
V6-1
Knuth-Plass アルゴリズム の結果 — ハイフネーションなし
V7-1

これは、行あたりの単語数の少ない文書です。つまり、分割可能位置が少ない。 行末のアキの幅がより均等に近いのは、Knuth-Plass アルゴリズム の方であるのが見て取れます。

ハイフネーションをしたときは次のようになります。

AH Formatter の結果 — ハイフネーションあり
V6-2
Knuth-Plass アルゴリズム の結果 — ハイフネーションあり
V7-2

AH Formatter はハイフネーションが多く発生しています。
Knuth-Plass アルゴリズム は、ハイフネーションの発生を少なく抑えるように作られていますが、パラメタを調整して、もう少しハイフネーションが起こり易くすると、次のようにもなります。

Knuth-Plass アルゴリズム の結果 — ハイフネーション多め
V7-2a

行あたりの単語数が多いときは分割可能位置も多いので、結果に差はなくなってきます。

AH Formatter の結果 — ハイフネーションなし
V6-3
Knuth-Plass アルゴリズム の結果 — ハイフネーションなし
V7-3

Knuth-Plass アルゴリズム には、いろいろ制約があることがわかっています。例えば以下のようなものです。

  • 空白によって分かち書きされる英語などの文書を想定しているので、日本語のように分かち書きせず、ほとんどの文字間で分割可能な言語のことは考慮されていない。
  • 非矩形の領域を扱えるが、そのとき行の高さが一定であることが仮定されている。つまり、途中で大きな文字が入っていたりすると処理できない。
  • ドロップキャップ、letter-spacing、カーニング、リガチャ、綴りの変化するハイフネーション、ルビなどは考慮されていない。
  • ページ分割は処理しないので、widows/orphans は処理できない。

AH Formatter にこのアルゴリズムを導入することが検討されています。

 


Pages: 1 2 Next