不定期戯言

戻る

« | 2021 | Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec | »

古いページ

2021.05.08 (Sat)

小江戸らぐ

・「小江戸らぐ5月のオフな集まり」というオンラインの勉強会に参加させていただいた。「オフ」というところに突っ込んではいけない。半年ぶり2回目になるということで,okularに強引なパッチを書いた件について発表した。フォントに関する情報を真っ当に得る方法があるはずなのに…という話で,もっと調査の幅を広げたほうがいいのかもしれないという意見があった。私が調べたのはpopplerのコードそのものについてだが,そもそもKDEやQtではそのあたりをどのように処理しているのかというところから見ていくとよさげであろうと。気長にやるかな。

コメント(0)

コメント投稿

日本語の文字が入っていないものは受け付けません。URL欄は使わないでください。

Name:
URL (NEVER USE):
Comments:

トラックバック(0)

トラックバック用URL: https://watayan.net/blosxom.cgi/computer/202105080001.trackback

2021.04.25 (Sun)

vokoscreenNG

・解説動画を撮ろうと思って準備したが,vokoscreenNGが起動しない。仕方ないのでOBS Studioで録画したが,すっきりしない。

・ソースを追いかけても,QMediaPlayerのコンストラクタ内部で落ちているのでどうしようもない。ライブラリ周りをしばらく調べて,intel-media-va-driverパッケージをintel-media-va-driver-non-freeに変えたら動くことがわかった。といっても環境依存な話だけど。

・(追記)録画したのを見直してみたら,Gromit-mpxで画面に手書きした分が記録されていなかった。OBS Studioだとソースの管理がしっかりしてるから,そこに描画されていない以上当然のことではあるのだが。そんなわけなので,今週の早いうちにvokoscreenNGで撮り直すことにする。

コメント(0)

コメント投稿

日本語の文字が入っていないものは受け付けません。URL欄は使わないでください。

Name:
URL (NEVER USE):
Comments:

トラックバック(0)

トラックバック用URL: https://watayan.net/blosxom.cgi/computer/202104250001.trackback

2021.04.21 (Wed)

スクールプランニングノートのカバー

・スクールプランニングノートも2年目,ということでノートカバーを買ってみたのだが,これがなかなかいい。東急ハンズで現物を見て選んだものなのだけど,メーカとか商品名とかは覚えていない。授業に行くときも会議に出るときもこれがお供。

コメント(0)

コメント投稿

日本語の文字が入っていないものは受け付けません。URL欄は使わないでください。

Name:
URL (NEVER USE):
Comments:

トラックバック(0)

トラックバック用URL: https://watayan.net/blosxom.cgi/misc/202104210001.trackback

画面への書き込みとペンタブレット

・情報教室ではプロジェクタで見せている教員画面をvncでも生徒に送っている。書き込んで説明したいときにはスクリーンを上げてホワイトボードを使っているのだが,反射したりとかいうこともあってあまり良くない。そんなわけで画面に書き込めるツールがないかと探して,Gromit-MPXを導入することにした。

・しかしマウスだと字が書きにくい。Linuxで使えるペンタブレットはないか…ということで調べてみると,XP-Penとかのが良さげらしい。そこで安いのを買ってみたが,わりといい感触だ。後で自分用のも買っておこう。驚いたのは,Gromit-MPXが筆圧を感知して線が太くなったりすることだ。

コメント(0)

コメント投稿

日本語の文字が入っていないものは受け付けません。URL欄は使わないでください。

Name:
URL (NEVER USE):
Comments:

トラックバック(0)

トラックバック用URL: https://watayan.net/blosxom.cgi/education/202104210002.trackback

2021.04.11 (Sun)

今年度の環境

・LibreOfficeは7系が使いたいということで,ちょっと気が早いけど生徒の端末はBullseyeにした。いろいろ変わったけどまあそれも新鮮だ。しかし学校全体での動きもあるので,いくらかの部分はそれに合わせていこうと思う。Googleのアカウントを生徒に与えるということなので,Googleドキュメントをいくらか使っていければと思っている。それに合わせて授業スライドもGoogleスライドを使ってみることにした。過去の資産がそのまま使えないのは痛いが,どうせ毎年作り直してるんだし。moodleは例年の通り使っていく。

コメント(0)

コメントの受付は終了しました。

トラックバック(0)

トラックバックの受付は終了しました。

2021.04.04 (Sun)

《整数》個の《値》

・車の6ヶ月点検を待っている間に,PyPENに配列の初期化を導入しようと考えていた。「〜を〜で初期化する」としたいのだけど,配列の長さが指定できない。「〜個の〜で初期化する」として作りかけたのだけど,それだったらいっそ「〜個の〜」で配列を生成して,それを代入すればいいのではないかと考えた。そんなわけで実装してみた。

・しかし一つ問題がある。「a←10個のrandom()」とすると,全部同じ値になってしまうのだ。これを解決するには,あらゆる構文について値の評価をもっときちんと再帰的にやらなくてはいけない(はず)。それは大改造になるので,すぐには手をつけられない。しかしこれを直せば,いろんなことが簡単になるのだと想像する。

コメント(0)

コメントの受付は終了しました。

トラックバック(0)

トラックバックの受付は終了しました。

2021.03.29 (Mon)

KB5001649

・職場で使ってもらっているプログラムが,印刷のときに「汎用的なGDI+エラー」とかいうやつで止まってしまう。IDisposalなオブジェクトのDisposeを忘れていた件はかなりきっちり対応したはずなのだが。Fontを作っては壊ししているのがいけないのかと思って,できるだけ使い回せるようにキャッシュしておくことにしてみたがダメ。Fontの生成は数回で済んでいるんだから,Dispose忘れがあっても大したことにはならないはず。

・さらに検索を続けると,KB5001649で対応しているものの,インストールに失敗したりする例があるとのこと。なんとか我慢して問題を起こしているPCにインストールしてみたら,あっけなく印刷ジョブが終了した。あの悩んだ時間を返してくれ。

コメント(0)

コメントの受付は終了しました。

トラックバック(0)

トラックバックの受付は終了しました。

2021.03.28 (Sun)

popplerでのworkaround

・Annot::layoutTextから呼んでいるCharCodeToUnicode::mapToCharCodeの中で,Cmapから対応する番号を探しているのだけど,これでU+0020やU+3000が番号を返さなくて困っている様子。そこで適当にU+0020には1,U+3000には633を返してやることで,とりあえず空白はそれっぽく表示できるようになった。633という数は…無理やり探しあてた。いろいろ妙なところはあるけどまあ自分で使う分にはいいか。備忘録的にパッチを残しておく。

--- poppler-0.71.0.orig/poppler/Annot.cc
+++ poppler-0.71.0/poppler/Annot.cc
@@ -2668,7 +2668,22 @@ static GfxFont * createAnnotDrawFont(XRe
   Dict *fontDict = new Dict(xref);
   fontDict->add("BaseFont", Object(objName, fontname));
   fontDict->add("Subtype", Object(objName, "Type0"));
-  fontDict->add("Encoding", Object(objName, "WinAnsiEncoding"));
+  fontDict->add("Encoding", Object(objName, "Identity-H"));
+  Dict *subfontDict = new Dict(xref);
+  subfontDict->add("Subtype", Object(objName, "CIDFontType0"));
+  Dict *cidSystemInfo = new Dict(xref);
+  cidSystemInfo->add("Registry", Object(new GooString("Adobe")));
+  cidSystemInfo->add("Ordering", Object(new GooString("Japan1")));
+  subfontDict->add("CIDSystemInfo", Object(cidSystemInfo));
+  Array *widthArray = new Array(xref);
+  widthArray->add(Object(0));
+  widthArray->add(Object(632));
+  widthArray->add(Object(500));
+  subfontDict->add("W",Object(widthArray));
+  subfontDict->add("DW", Object(1000));
+  Array *descArray = new Array(xref);
+  descArray->add(Object(subfontDict));
+  fontDict->add("DescendantFonts", Object(descArray));
 
   Dict *fontsDict = new Dict(xref);
   fontsDict->add(resourceName, Object(fontDict));
@@ -2769,7 +2784,7 @@ void AnnotFreeText::generateFreeTextAppe
 
   // Set font state
   appearBuilder.setDrawColor(da.getFontColor(), true);
-  appearBuilder.appendf ("BT 1 0 0 1 {0:.2f} {1:.2f} Tm\n", textmargin, height - textmargin - da.getFontPtSize() * font->getDescent());
+  appearBuilder.appendf ("BT 1 0 0 1 {0:.2f} {1:.2f} Tm\n", textmargin, height - 2 * textmargin - da.getFontPtSize() * font->getDescent());
   appearBuilder.setTextFont(da.getFontName(), da.getFontPtSize());
 
   int i = 0;
--- poppler-0.71.0.orig/poppler/CharCodeToUnicode.cc
+++ poppler-0.71.0/poppler/CharCodeToUnicode.cc
@@ -616,6 +616,8 @@ int CharCodeToUnicode::mapToCharCode(Uni
         return 1;
       }
     }
+    if(*u == 0x0020){*c = 1; return 1;}
+    if(*u == 0x3000){*c = 633; return 1;}
     *c = 'x';
   } else {
     int i, j;

コメント(0)

コメントの受付は終了しました。

トラックバック(0)

トラックバックの受付は終了しました。

2021.03.26 (Fri)

popplerのソースと格闘

・13日に書いた,Okularの注釈(インラインテキスト)で日本語文字が表示できない件について探っている。原因はPopplerの方にあるのだろうと思われる。GfxFont::makeFontの中でGfx8BitFontでなくGfxCIDFontが呼び出されるためには,getFontTypeでfontCIDType0が帰らなくてはいけないのだが,そのためにはfontDictにいろいろ設定がなされていなくてはいけない。Annot.ccのcreateAnnotDrawFont内でfontDictを作っているが,これにはBaseFont,Subtype,Encodingしか設定されていない。しかしGfxFont::getFontTypeでfontCIDType0が返るためには,最低でもDescendantFontsを設定する必要がある(EncodingもIdentity-Hに変更)。

・以上のことで日本語文字は表示されるようになったが,英字の表示がおかしい。文字幅が日本語文字と同じになっている様子。Annot::layoutTextから呼んでいるGfxFont::getNextChar(から継承しているGfxCIDFont::getNextChar)がGfxCIDFont::widthsを参照しているのだが,これの設定はGfxCIDFontコンストラクタに渡されるfontDictから情報を得ている。結局fontDictに戻ってくるわけだ。フォントを指定すればfontDictが得られるような仕組みくらいないとおかしいんだけど,それがまだ見つけられない。

・そもそもこんなことになっているのは,AnnotFreeText::generateFreeTextAppearanceでGfxFont::makeFontを呼び出すことになっていて,そのときのfontDictはfontDictionaryから取り出されたもので,そのfontDictionaryはfontResoucesから取り出されたもので,そのfontResourcesはresDictから,そのresDictはresourceObjから,そのresouceObjはformからそれぞれ取り出されているのだけど,肝心のformがdocから取り出されたCatalogにあるはずなのに,それが見つからないのだ。コメントに「そんなときはてきとーにHelveticaにしとく」と書いてある通りになっていて,第一段落で書いたのはそのHelveticaを無理やり変更したという話。

・そんなわけでCatalogのコードを読む。Catalog::getFormではacroFormから生成されたFormが返されるので,acroFormについて調べることにする。Catalogコンストラクタの中で,acroFormはcatDictから取り出されており,catDictはxrefから取り出されている。あれ,acroFormがNullだ…詰んだ。

コメント(0)

コメントの受付は終了しました。

トラックバック(0)

トラックバックの受付は終了しました。

2021.03.19 (Fri)

情報処理学会全国大会

・一般セションでの発表は初めてだったりする。「Webブラウザ上のプログラミング学習環境PyPENを用いた授業の提案」ということで,資料はいつものところ。zoomの扱いには慣れていたつもりだったのだが,カメラをONにするのを忘れて講演に入ってしまったのが悔やまれる。

・やはり人前で発表すると,アイディアとかがもらえるのでありがたい。小さい課題もあれば大きい課題もあって,実現に近づけるのが楽しみである。私自身も他の人の発表に何件かコメントさせてもらったが,そういうものになっていたらいいな。

コメント(0)

コメントの受付は終了しました。

トラックバック(0)

トラックバックの受付は終了しました。

古いページ