掲題の通り、C#のFontクラスが持つGdiCharSetプロパティについてですが、
これは一体どういったときに使われるものなのでしょうか?
msdnに記載されている値を入れれば何か変わるかと思いましたが、
変化は見受けられませんでした。
https://msdn.microsoft.com/ja-jp/library/system. …
かなり情けない話ですが、この疑問に対するアプローチの仕方すらよくわからず、
闇雲に調べてみてはいるのですが、全然分かりません…
大変お手数ですが、お詳しい方、ご教授をお願いいたします。
No.1ベストアンサー
- 回答日時:
まず,結論としては,「何にも使われていない」です。
以下,技術資料として。
元はWin32のGDIでHFONTハンドルを作成するときに利用するLOGFONT構造体
https://msdn.microsoft.com/en-us/library/dd14503 …
のlfCharsetメンバに指定する値で (CreateFontの場合は該当する引数),「どの文字集合のフォントを使うか」を決める物です。
lfCharsetは,フォントの選択において,一番重要な値とされています。
https://msdn.microsoft.com/en-us/library/ms96990 …
上記の文書はWindows 3.1の時代のものですが,GDIの動作としては現在も変化していないと思います。
例えば「日本語を表示したい」場合にはSHIFTJIS_CHARSETを指定することになります。
そして,lfFaceNameで使いたいフォントを指定するわけですが,この場合にそのフォントが指定された文字集合をサポートしていない場合,
別のフォントが利用されます (e.g. lfFontFaceにSymbolを指定しても,SHIFTJIS_CHARSETを持っていないので別のフォントが使われる)。
これは,「その文字を表示する」ことを最優先にするための処理になります。
ただ,lfCharsetとして通常はDEFAULT_CHARSETが使われ,この場合は実質的にこの項目は無視されます。
さて,ここまではWindows GDIでの話ですが,.NETのSystem.Drawing.Fontにおいて,この値は単純に保存されるだけの値になります。
Fontのコンストラクタには引数にByteをとるものがあり,上記のような目的で使えそうに思えますが,
実際に動作を調べるとそのようなことは起こらず,MSが提供しているソースコードを見ると,gdiCharSetメンバの値は単に保持されるだけのようです。
http://referencesource.microsoft.com/#System.Dra …
つまり,.NET Frameworkにおいて,このGdiCharSetプロパティは意味をなしていません。
これは利用しているGDI+関数の制限による物で,
https://msdn.microsoft.com/en-us/library/ms53397 …
から
https://msdn.microsoft.com/en-us/library/ms53620 …
をたどると,gdiCharSetを渡す余地がありません。
GdipCreateFontではなく,GdipCreateFontFromLogfontWを使っていれば,LOGFONTを経由して渡すことは出来ていたのですが,今更変更されることもないと思います。
ご回答ありがとうございます。
お礼が遅くなり、申し訳ございません。
(きちんと理解してからと思っていたら時間ばかりが過ぎてしまい…)
リンクのソースを見て、GdiCharsetがメンバに保持されているだけなのが分かりました。
また、NativeFont生成にGdipCreateFontを利用していて、それにはGdiCharsetの渡す余地がないことが分かりました。
(現状は、ToLogFontのためだけにいる感じなんですね。残念ながら私ではLOGFONT構造体を作りたいケースが思いつきませんが)
「.NET内部では何も使われていない」ということがわかり、大変助かりました。
(PropertyGridにFontを表示するとGdiCharsetも表示され、これ必要なの?と問われた時に答えられませんでしたので、これで答えられます。)
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS HTMLソースの質問 3 2022/07/28 13:29
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS CSSが上手く反映されないみたいです 2 2022/11/21 16:19
- 画像編集・動画編集・音楽編集 【急】【Zbrush】3DCG初心者です。ノートPCでのZbrush動作環境につきまして 1 2023/08/19 17:38
- HTML・CSS Web font 会社のホームページを作成についてですが、webフォントを使用することを検討しており 4 2022/11/04 10:36
- PHP アンドロイドスマホでのphp echoの文字サイズ 1 2023/05/13 15:15
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
C# DataGridView のヘッダーセル中央揃え
C言語・C++・C#
-
FriendとPublicの違い。。。
Visual Basic(VBA)
-
CloseとDisposeの違い
Visual Basic(VBA)
-
-
4
SPREAD(GrapeCity)のセルにフォーカスを設定するにはどうしたらいいのでしょうか?
Visual Basic(VBA)
-
5
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
6
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
outlook 文字を揃えたい。tab...
-
マイクロ(μ)の文字を半角で出...
-
教えてください。
-
MsgBoxについて
-
エクセルVBAが中国のPCでは動か...
-
「MS Pゴシック」と同じ幅の...
-
英語版OSでの遊明朝、游ゴシック
-
cssで英語と日本のフォント...
-
Visual C++ 6.0 行番号の表示
-
PreRenderイベントの実装方法に...
-
一番識別し易い フォントとは
-
C# Font GdiCharSet
-
HTML に © は、© を使わず...
-
Excel VBA コマンドボタン
-
CommonDialogでの、キャンセル...
-
フォントファイル(.ttf , .otf)...
-
フォントをカレントディレクト...
-
Adobe Fontsで日本語が出てこな...
-
font-family の記載方法
-
printf("文字列\\n")が円マーク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マイクロ(μ)の文字を半角で出...
-
outlook 文字を揃えたい。tab...
-
教えてください。
-
「MS Pゴシック」と同じ幅の...
-
似ているフォント(Win⇔Mac)
-
MsgBoxについて
-
C# Font GdiCharSet
-
英語版OSでの遊明朝、游ゴシック
-
メールで、榊の文字を木辺に神...
-
font-family の記載方法
-
逆向き/(スラッシュ)の入力方法
-
WORD全角入力しても半角に...
-
Excel:一部のフォントでセルの...
-
ワードでゴシックの文字を太く...
-
WORD VBAでハイパーリ...
-
エクセルVBAが中国のPCでは動か...
-
printf("文字列\\n")が円マーク...
-
Visual C++ 6.0 行番号の表示
-
ホームページをTeraPadで日本語...
-
フォントファイル(.ttf , .otf)...
おすすめ情報