個人的に使うなら、以前書いたように日本語フォント名に直してビルドすればOKですが、根本的には「代替フォント」=「ユーザーがSettingsパネルで設定したフォント」にすれば良いはずなんだけど…static void findMatchingFontFamily(const AtomicString& familyName, font_family* fontFamily)
{
if (BFont().SetFamilyAndStyle(familyName.string().utf8().data(), 0) == B_OK)
strncpy(*fontFamily, familyName.string().utf8().data(), B_FONT_FAMILY_LENGTH + 1);
else {
// If no font family is found for the given name, we use a generic font.
if (familyName.contains("Sans", false) != B_ERROR)
strncpy(*fontFamily, "DejaVu Sans", B_FONT_FAMILY_LENGTH + 1);
else if (familyName.contains("Serif", false) != B_ERROR)
strncpy(*fontFamily, "DejaVu Serif", B_FONT_FAMILY_LENGTH + 1);
else if (familyName.contains("Mono", false) != B_ERROR)
strncpy(*fontFamily, "DejaVu Mono", B_FONT_FAMILY_LENGTH + 1);
else {
// This is the fallback font.
strncpy(*fontFamily, "DejaVu Serif", B_FONT_FAMILY_LENGTH + 1);
}
}
}
ということで、最初はFontPlatformDataクラスからBWebSettingsを呼び出そうとして、トモダチをあれこれいじってコンパイルは通るようになったんだけどリンクでエラー…良く見たら、libWebCoreはlibWebKitをリンクしてないのね。ダメだこりゃ。
GetがだめならSetだよ(?)ということで、FontPlatformDataにフォント設定用の静的メンバーを追加して、SettingsWindow::_ApplySettings()あたりから呼び出してみる事に。これならリンクエラーは出ないはず。たぶん。きっとー
○○のみんな!!オラにC++力を分けてくれ!!!
昨日コメントしたはずなんですけど、zetaで書いたのがまずかったか、登録されて無いようなので、再度。。。
返信削除Beでは以下のようなものがあります、多分Haikuでも大丈夫かと。
fontpanelで設定したシステムフォントは、
const BFont *be_plain_font
const BFont *be_bold_font
const BFont *be_fixed_font
としてグローバルポインタとして参照できます。
注意:アプリ起動時の値です。途中で変更しても反映されません。
SHINTAさん、びぁさん元気をありがとうございます。
返信削除ちょっと本文の書き方が悪かったようですみません、ここでいう SettingsパネルはSystemでなく、Webpositiveの設定ウインドウのことです。
ここで直接システムフォントでなく、Webpositiveの設定フォントを使うのは、将来Webpositiveの設定ウインドウで固定幅やセリフに日本語設定できるようにしようかなという考えがあるためです。(できるのか??)