らんだむな記憶

blogというものを体験してみようか!的なー

C/C++

ちょっとだけharfbuzz(6)

$ git diff diff --git a/src/hb-ot-shape-complex-private.hh b/src/hb-ot-shape-complex-private.hh index b3372bd..4d75b33 100644 --- a/src/hb-ot-shape-complex-private.hh +++ b/src/hb-ot-shape-complex-private.hh @@ -159,6 +159,9 @@ HB_COMPLEX_…

ちょっとだけharfbuzz(5)

hb-shaper-list.hhに #ifdef HAVE_OT HB_SHAPER_IMPLEMENT (ot) /* <--- This is our main OpenType shaper. */ #endif とかあるけど、この HAVE_OT の定義はどこでされるんだろう?とgrepしてみた。 ●底辺プログラマの3種の神器 gg grep find ということで…

ちょっとだけharfbuzz(4)

hb-viewの構造は大体こんなものかな? 大きな作りは見えてきたような気がする。

ちょっとだけharfbuzz(3)

さて、タイ語などではMicrosoftの仕様書にあったように、ccmpなどがデフォルトで発動していた。これってharfbuzzではどこで処理しているのだろう?ということで見てみた。[hb-ot-shape.cc] static hb_tag_t common_features[] = { HB_TAG('c','c','m','p'), …

ちょっとだけharfbuzz(2)

以下のようにprint文をぶっこむ。 $ git diff diff --git a/src/hb-shape.cc b/src/hb-shape.cc index 352d42c..bbe902a 100644 --- a/src/hb-shape.cc +++ b/src/hb-shape.cc @@ -373,6 +373,11 @@ hb_shape_full (hb_font_t *font, unsigned int num_featu…

fontforgeデバッグ(4)

SplinePoint構造体はsplinefont.hで宣言されているが、nonprevcpなどにはビットフィールド使ってるな...。 なんかやめてー(><。)という気持ちになってしまう。まぁ、それはさて置き、丸める前後でハンドル長が0の場合に初めて no{next,prev}cpがtrueとなる…

fontforgeデバッグ(3)

一晩寝たので、整数丸めの箇所をデバッガで丁寧に追う。まずはデータがおかしくなる箇所を1ヶ所ピックアップ。 <point x="466.1" y="409.5" type="curve" smooth="yes"/> <point x="449.7" y="409.3"/> <point x="436.3" y="408.7"/> <point x="435.8" y="408.2" type="curve" smooth="yes"/> <point x="434.6" y="407"/> <point x="433.7" y="396.1"/> </point></point></point></point></point></point>

fontforgeデバッグ(2)

gdb様のお通りだー - らんだむな記憶の続き。 gdbをかましているところをcgdbに切り替えておく。 フォント出力に関して、あやしそうな関数にbreak pointを置いてみる。当たりっぽい! (gdb) b savefont.c:_DoSave Breakpoint 1 at 0x7ffff58365cd: file save…

私はプログラミングもデバッグも大嫌いだ

「諸君 私はプログラミングが大好きだ」とか「諸君 私はデバッグが好きだ」とかでggると素晴らしい文集が見つかる。なんか昔見た記憶があるが...。 後任のプログラマーにソースコードを滅茶苦茶にされるのが好きだ 必死に美しく書いてきたソースコードが蹂躙…

gdbのCUIフロントエンド

ゑ?GUIフロントエンドでは?という気持ちもあるのだが。 cgdbというご機嫌なCUIフロントエンドがあるということでこれをビルドしてみる。help2manとかいうのを所望されたので仰せのままにapt-get installで。後は、 $ git clone git://github.com/cgdb/cgdb…

gdb様のお通りだー

printfデバッグ様のお通りだー - らんだむな記憶入口は正しそうだと分かったが、その先がよく分からん。これだとprintfデバッグのコストが大分高くつく。ということで、気が進まないがgdbを使おう。bootstrapのほうはあまり見たくなくて、configureのほうを…

printfデバッグ様のお通りだー

fontforge(3) - らんだむな記憶をもとにちょろっとprintfデバッグする。 なんとレベルの低い技術力なんだ!とか自虐してみる。●グリフ一覧から[エレメント]->[座標を丸める]->[整数に] FVMenuRound2Int @ fontview.c が呼ばれた。●グリフエディタから[エレメ…

fontforge(2)

まぁ、一応ビルドするかということで。 頭は使わない。心を無にしてINSTALL-git.mdに従う。 「autoreconf -i」時にちょっとwarningというかかなり気になる内容が出るが、もう気にしない! $ git clone https://github.com/fontforge/fontforge.git; $ sudo a…

clang

まだそこまで遊ぶつもりがないので、リンクだけ。【Ubuntu】LLVM/Clangを使ってみた【formatter】 | FiS Project 同じUbuntu14.04だからこれで入ると思う。てか、Macでもにょもにょすることでとっくに「gcc」「g++」という名前のclangを使っていたりはするの…

C++14

最近の話題についていけてなかった。 C++14 - Wikipediaというのがあるようで。 手元で試すと、 $ g++ --version g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4 では、 $ g++ -std=c++14 g++: error: unrecognized command line option ‘-std=c++14’ となる。 $ …

参照の値渡し

値渡しとか、参照渡しとか参照の値渡しとか色々あって、「Javaは参照の値渡しです」とか色々説明があるが、どうも参照渡しと参照の値渡しについてすっきりしなかった。 が、【参照の「値渡し」】と読むのではなく、【「参照の値」渡し】と読めばすっきりする…

イテレータ

イテレータとかいうやつがある。forのiとかjとかkみたいなやつというか、C++に触れた最初の頃はよく分からんやつだった。とにかく2000年頃は大分キモぃやつだった。[main.cpp] #include <iostream> #include <vector> #include <boost/foreach.hpp> int main(void) { // C++11様々な初期化。 std::</boost/foreach.hpp></vector></iostream>…

Boost.Python(2)

参照渡しな引数を持つメソッドをexportできるんかなと思って試したらできた。 namespace hoge { class Fuga { public: void addFoo(Foo& foo); }; } BOOST_PYTHON_MODULE(test_module) { using namespace boost::python; class_<hoge::Fuga>("Fuga") .def("addFoo", &hog</hoge::fuga>…

Boost.Python

さて、わざわざあのboooooooost様を導入した目的を実行しようか。 とりあえず、夢を見過ぎないための戒めを冒頭に貼り付けて、boooooooost様という高嶺の花とのお付き合いには相応の忍耐力が必要であることを認識しておく。 $ make g++ -I`python -c 'from d…

boost

さて、仕事では毛嫌いされていたboostさんでもUbuntuにぶっこみますかね。 忙しい時に、あれやなにやでboooOOOoooOOooooOOOst------!!!されると、怒りゲージもMAX boooooooooooooostしちゃうからまぁ仕方ないんだけど。さて、面倒なのでどっかのサイトをggっ…

例外処理

void youareshock() try { throw; puts("お前は既に死んでいる!"); } catch (...) { puts("あべし"); } すると、 terminate called without an active exception 中止 (コアダンプ) してしまう。catchステートメントの中でもないのに例外再送出すんなやとい…

pythonでC言語拡張モジュール

を作ろうかなとふと思った。 ggると、 #include "Python.h" らしい。なるほど! g++ -c main.cpp main.cpp:1:20: fatal error: Python.h: そのようなファイルやディレクトリはありません #include "Python.h" ^ 想定内!(゜∀ ゜)gcc - fatal error: Python.h…