アカウント名:
パスワード:
日本は年賀状の文化があったので昭和の時代には理想科学のプリントゴッコが普及しその後はインクジェットプリンターで年賀ハガキを印刷するのが10年前くらいまであったのですがここ最近はスマホの普及もあって あ・け・お・めで終わってるので年賀状を印刷しなくなった。当然プリンタも減ってくるわけですね。
ここ最近はテレワークでプリンターの需要も増えているのですが半導体不足もあって生産数が減っている状況に、需要が増えたので2ヶ月待ち3ヶ月待ちの状態品薄になっている製品が結構あります。今年国内メーカーのプリンターが入手しようにも買えなかったってのは結構ありました。HPが増えた
これってWindowsの問題だった?Excelの問題だと思っていたけど、Wordはそんなことないですよね?もともとExcelは文書整形用としての用途を想定されていなかったのと、昔のPCの処理速度が不足していたのでそうなっていると聞いていたように思いますが。
原因は、GDIが整数で座標を管理してることで、プリンタと画面の解像度で生じてる誤差の問題ExcelだとかWordだとかに限らず、GDI使って印刷にDDI使ってるアプリは、印刷したら位置がずる。Windowsで開発やってれば常識レベルというか、最低限知ってないとヤバイというレベルの基本だが、最近はDDIで印刷しなくても良くなって、こういうレベルの話を知らなくてもやってけるようになってきたのか。
具体的な例として600dpiのプリンタで、1文字の幅を28ドットで印刷しようとする。この場合、画面(96dpi)のプレビューでは、1文字あたり4ドット(600/96 = 28/4.48で少数は切り捨て)10文字印刷すると プリンタで280(28*10)ドット分右に移動。画面のプレビューでは40(4*10)ドット分右に移動。600/96 = 280/44.8 なので、この時点で1文字分の誤差がでる。プレビューと印刷で、誤差が出るのはこのため。
Excelはそれとして、Wordでは計算違うんじゃないかなあ。Word6.0でちょっとだけ改善され、今に至ってるという記憶がある。
Excelはそれとして、とかじゃなく、ExcelやWordに限らず、GDI/DDI使ってるアプリは漏れなく同じ問題もってるんだよ。根本的に整数で座標指示してるAPIつかっておいて、解像度の違うもので同じ表示が出来るはずがないぐらい、自明だろう。
もちろん改善方法は、いくつかあって(浮動小数点使える)別の座標系使って全て自分でレンダリングしたあと、出力時にDDIに投げる。TextOutやExtTextOutに文字を投げずに文字列を投げるだけでも、同じフォント、同じサイズ、同じ修飾だけの文字列なら改善する。(WinNT系になってから文字列の場合には基準座標の計算が先頭だけになった。計算が一回なので計算誤差は起きにくくなってる)とか、他にもやりようはあるし、みんなそれぞれ会社ごとのやり方で、補正したし、DDI使ってれば今でもやってるんだよ。
Excelがいつまでも改善されんのは、明確な理由はわからんけど、Wordのように文字列が全て出るとか改行位置が揃うのが必須機能とは見做されてないからだろうな。
>GDI/DDI使ってるアプリは漏れなく同じ問題もってるんだよ。いや、別にそこを否定したわけじゃなくて例示された計算式についてだったんだが。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
人生unstable -- あるハッカー
あけおめが悪い。 (スコア:0)
日本は年賀状の文化があったので
昭和の時代には理想科学のプリントゴッコが普及し
その後はインクジェットプリンターで年賀ハガキを印刷するのが10年前くらいまであったのですが
ここ最近はスマホの普及もあって
あ・け・お・め
で終わってるので年賀状を印刷しなくなった。
当然プリンタも減ってくるわけですね。
ここ最近はテレワークでプリンターの需要も増えているのですが
半導体不足もあって生産数が減っている状況に、需要が増えたので
2ヶ月待ち3ヶ月待ちの状態品薄になっている製品が結構あります。
今年国内メーカーのプリンターが入手しようにも買えなかったってのは結構ありました。
HPが増えた
Re: (スコア:0)
これってWindowsの問題だった?
Excelの問題だと思っていたけど、Wordはそんなことないですよね?
もともとExcelは文書整形用としての用途を想定されていなかったのと、昔のPCの処理速度が不足していたのでそうなっていると聞いていたように思いますが。
Re: (スコア:1)
原因は、GDIが整数で座標を管理してることで、プリンタと画面の解像度で生じてる誤差の問題
ExcelだとかWordだとかに限らず、GDI使って印刷にDDI使ってるアプリは、印刷したら位置がずる。
Windowsで開発やってれば常識レベルというか、最低限知ってないとヤバイというレベルの基本だが、最近はDDIで印刷しなくても良くなって、こういうレベルの話を知らなくてもやってけるようになってきたのか。
具体的な例として
600dpiのプリンタで、1文字の幅を28ドットで印刷しようとする。
この場合、画面(96dpi)のプレビューでは、1文字あたり4ドット(600/96 = 28/4.48で少数は切り捨て)
10文字印刷すると プリンタで280(28*10)ドット分右に移動。画面のプレビューでは40(4*10)ドット分右に移動。
600/96 = 280/44.8 なので、この時点で1文字分の誤差がでる。
プレビューと印刷で、誤差が出るのはこのため。
Re:あけおめが悪い。 (スコア:0)
Excelはそれとして、Wordでは計算違うんじゃないかなあ。
Word6.0でちょっとだけ改善され、今に至ってるという記憶がある。
Re: (スコア:0)
Excelはそれとして、とかじゃなく、ExcelやWordに限らず、GDI/DDI使ってるアプリは漏れなく同じ問題もってるんだよ。
根本的に整数で座標指示してるAPIつかっておいて、解像度の違うもので同じ表示が出来るはずがないぐらい、自明だろう。
もちろん改善方法は、いくつかあって
(浮動小数点使える)別の座標系使って全て自分でレンダリングしたあと、出力時にDDIに投げる。
TextOutやExtTextOutに文字を投げずに文字列を投げるだけでも、同じフォント、同じサイズ、同じ修飾だけの文字列なら改善する。
(WinNT系になってから文字列の場合には基準座標の計算が先頭だけになった。計算が一回なので計算誤差は起きにくくなってる)
とか、他にもやりようはあるし、みんなそれぞれ会社ごとのやり方で、補正したし、DDI使ってれば今でもやってるんだよ。
Excelがいつまでも改善されんのは、明確な理由はわからんけど、Wordのように文字列が全て出るとか改行位置が揃うのが必須機能とは見做されてないからだろうな。
Re: (スコア:0)
>GDI/DDI使ってるアプリは漏れなく同じ問題もってるんだよ。
いや、別にそこを否定したわけじゃなくて例示された計算式についてだったんだが。